summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_sig.c
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>2002-07-30 21:13:48 +0000
committerjulian <julian@FreeBSD.org>2002-07-30 21:13:48 +0000
commit04c188f5063da96c71b47d0aad701eaa6a1c9b5a (patch)
tree38bfa0684be38cb5b9f1f1f35e22c74cec0a0c05 /sys/kern/kern_sig.c
parent5c645322cc2fe090b2d621bcd9087ffac346406e (diff)
downloadFreeBSD-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
Diffstat (limited to 'sys/kern/kern_sig.c')
-rw-r--r--sys/kern/kern_sig.c7
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);
OpenPOWER on IntegriCloud