Changeset View
Changeset View
Standalone View
Standalone View
sys/kern/subr_trap.c
Show First 20 Lines • Show All 222 Lines • ▼ Show 20 Lines | ast(struct trapframe *framep) | ||||
* If another AST is triggered while we are handling the | * If another AST is triggered while we are handling the | ||||
* AST's saved in flags, the astpending flag will be set and | * AST's saved in flags, the astpending flag will be set and | ||||
* ast() will be called again. | * ast() will be called again. | ||||
*/ | */ | ||||
thread_lock(td); | thread_lock(td); | ||||
flags = td->td_flags; | flags = td->td_flags; | ||||
td->td_flags &= ~(TDF_ASTPENDING | TDF_NEEDSIGCHK | TDF_NEEDSUSPCHK | | td->td_flags &= ~(TDF_ASTPENDING | TDF_NEEDSIGCHK | TDF_NEEDSUSPCHK | | ||||
TDF_NEEDRESCHED | TDF_ALRMPEND | TDF_PROFPEND | TDF_MACPEND); | TDF_NEEDRESCHED | TDF_ALRMPEND | TDF_PROFPEND | TDF_MACPEND); | ||||
td->td_dbgflags &= ~(TDB_EXEC | TDB_FORK); | |||||
thread_unlock(td); | thread_unlock(td); | ||||
VM_CNT_INC(v_trap); | VM_CNT_INC(v_trap); | ||||
if (td->td_cowgen != p->p_cowgen) | if (td->td_cowgen != p->p_cowgen) | ||||
thread_cow_update(td); | thread_cow_update(td); | ||||
if (td->td_pflags & TDP_OWEUPC && p->p_flag & P_PROFIL) { | if (td->td_pflags & TDP_OWEUPC && p->p_flag & P_PROFIL) { | ||||
addupc_task(td, td->td_profil_addr, td->td_profil_ticks); | addupc_task(td, td->td_profil_addr, td->td_profil_ticks); | ||||
td->td_profil_ticks = 0; | td->td_profil_ticks = 0; | ||||
▲ Show 20 Lines • Show All 140 Lines • Show Last 20 Lines |