diff options
author | julian <julian@FreeBSD.org> | 2002-07-30 21:13:48 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 2002-07-30 21:13:48 +0000 |
commit | 04c188f5063da96c71b47d0aad701eaa6a1c9b5a (patch) | |
tree | 38bfa0684be38cb5b9f1f1f35e22c74cec0a0c05 | |
parent | 5c645322cc2fe090b2d621bcd9087ffac346406e (diff) | |
download | FreeBSD-src-04c188f5063da96c71b47d0aad701eaa6a1c9b5a.zip FreeBSD-src-04c188f5063da96c71b47d0aad701eaa6a1c9b5a.tar.gz |
Don't need to hold schedlock specifically for stop() ans it calls wakeup()
that locks it anyhow.
Reviewed by: jhb@freebsd.org
-rw-r--r-- | sys/kern/kern_sig.c | 7 |
1 files changed, 1 insertions, 6 deletions
diff --git a/sys/kern/kern_sig.c b/sys/kern/kern_sig.c index 448cb4a..2c39e13 100644 --- a/sys/kern/kern_sig.c +++ b/sys/kern/kern_sig.c @@ -1434,9 +1434,7 @@ psignal(p, sig) if (!(p->p_pptr->p_procsig->ps_flag & PS_NOCLDSTOP)) psignal(p->p_pptr, SIGCHLD); PROC_UNLOCK(p->p_pptr); - mtx_lock_spin(&sched_lock); stop(p); - mtx_unlock_spin(&sched_lock); goto out; } else goto runfast; @@ -1598,7 +1596,7 @@ issignal(td) psignal(p->p_pptr, SIGCHLD); PROC_UNLOCK(p->p_pptr); mtx_lock_spin(&sched_lock); - stop(p); + stop(p); /* uses schedlock too eventually */ td->td_state = TDS_UNQUEUED; PROC_UNLOCK(p); DROP_GIANT(); @@ -1676,9 +1674,7 @@ issignal(td) psignal(p->p_pptr, SIGCHLD); } PROC_UNLOCK(p->p_pptr); - mtx_lock_spin(&sched_lock); stop(p); - mtx_unlock_spin(&sched_lock); break; } else if (prop & SA_IGNORE) { @@ -1726,7 +1722,6 @@ stop(p) { PROC_LOCK_ASSERT(p, MA_OWNED); - mtx_assert(&sched_lock, MA_OWNED); p->p_flag |= P_STOPPED_SGNL; p->p_flag &= ~P_WAITED; wakeup(p->p_pptr); |