diff options
author | jeff <jeff@FreeBSD.org> | 2003-03-31 22:49:17 +0000 |
---|---|---|
committer | jeff <jeff@FreeBSD.org> | 2003-03-31 22:49:17 +0000 |
commit | 46e6ba39f10b4874298cd617b4db656bb562eb37 (patch) | |
tree | da7bdaf8a9eef1885d86203074ba0ad8ae222e7c /sys/kern/subr_trap.c | |
parent | 803202f956e45b36a05029bd98db32041fa3a23d (diff) | |
download | FreeBSD-src-46e6ba39f10b4874298cd617b4db656bb562eb37.zip FreeBSD-src-46e6ba39f10b4874298cd617b4db656bb562eb37.tar.gz |
- Move p->p_sigmask to td->td_sigmask. Signal masks will be per thread with
a follow on commit to kern_sig.c
- signotify() now operates on a thread since unmasked pending signals are
stored in the thread.
- PS_NEEDSIGCHK moves to TDF_NEEDSIGCHK.
Diffstat (limited to 'sys/kern/subr_trap.c')
-rw-r--r-- | sys/kern/subr_trap.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/sys/kern/subr_trap.c b/sys/kern/subr_trap.c index 7fe4883..9cc7dbe 100644 --- a/sys/kern/subr_trap.c +++ b/sys/kern/subr_trap.c @@ -81,7 +81,7 @@ userret(td, frame, oticks) mtx_lock(&Giant); PROC_LOCK(p); mtx_lock_spin(&sched_lock); - if (SIGPENDING(p) && ((p->p_sflag & PS_NEEDSIGCHK) == 0 || + if (SIGPENDING(td) && ((td->td_flags & TDF_NEEDSIGCHK) == 0 || (td->td_flags & TDF_ASTPENDING) == 0)) printf("failed to set signal flags properly for ast()\n"); mtx_unlock_spin(&sched_lock); @@ -174,11 +174,12 @@ ast(struct trapframe *framep) sticks = td->td_sticks; flags = td->td_flags; sflag = p->p_sflag; - p->p_sflag &= ~(PS_ALRMPEND | PS_NEEDSIGCHK | PS_PROFPEND | PS_XCPU); + p->p_sflag &= ~(PS_ALRMPEND | PS_PROFPEND | PS_XCPU); #ifdef MAC p->p_sflag &= ~PS_MACPEND; #endif - td->td_flags &= ~(TDF_ASTPENDING | TDF_NEEDRESCHED | TDF_OWEUPC); + td->td_flags &= ~(TDF_ASTPENDING | TDF_NEEDSIGCHK | + TDF_NEEDRESCHED | TDF_OWEUPC); cnt.v_soft++; prticks = 0; if (flags & TDF_OWEUPC && sflag & PS_PROFIL) { @@ -243,7 +244,7 @@ ast(struct trapframe *framep) mi_switch(); mtx_unlock_spin(&sched_lock); } - if (sflag & PS_NEEDSIGCHK) { + if (flags & TDF_NEEDSIGCHK) { int sigs; sigs = 0; |