From 2062caca2494bf113adefa9ca01f9f5fb24ad7b9 Mon Sep 17 00:00:00 2001 From: davidxu Date: Thu, 23 Oct 2008 07:55:38 +0000 Subject: Actually, for signal and thread suspension, extra process spin lock is unnecessary, the normal process lock and thread lock are enough. The spin lock is still needed for process and thread exiting to mimic single sched_lock. --- sys/kern/kern_thr.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'sys/kern/kern_thr.c') diff --git a/sys/kern/kern_thr.c b/sys/kern/kern_thr.c index b460bd3..51f0f05 100644 --- a/sys/kern/kern_thr.c +++ b/sys/kern/kern_thr.c @@ -283,7 +283,6 @@ thr_exit(struct thread *td, struct thr_exit_args *uap) PROC_LOCK(p); sigqueue_flush(&td->td_sigqueue); - PROC_SLOCK(p); /* * Shutting down last thread in the proc. This will actually @@ -291,10 +290,10 @@ thr_exit(struct thread *td, struct thr_exit_args *uap) */ if (p->p_numthreads != 1) { thread_stopped(p); + PROC_SLOCK(p); thread_exit(); /* NOTREACHED */ } - PROC_SUNLOCK(p); PROC_UNLOCK(p); return (0); } -- cgit v1.1