summaryrefslogtreecommitdiff
path: root/sys/kern/kern_thread.c
diff options
context:
space:
mode:
authorJulian Elischer <julian@FreeBSD.org>2004-10-05 22:05:25 +0000
committerJulian Elischer <julian@FreeBSD.org>2004-10-05 22:05:25 +0000
commitfcb7c67b7b5171c95e071d27df7531fede4bd1a5 (patch)
treefe56c67f12a4d2059d3e7d1d11e390a303d67f59 /sys/kern/kern_thread.c
parentc20c691bed1c9e151e06d276a3f053298dd0abf8 (diff)
Notes
Diffstat (limited to 'sys/kern/kern_thread.c')
-rw-r--r--sys/kern/kern_thread.c11
1 files changed, 5 insertions, 6 deletions
diff --git a/sys/kern/kern_thread.c b/sys/kern/kern_thread.c
index 28dcb137053b..e9e39004180c 100644
--- a/sys/kern/kern_thread.c
+++ b/sys/kern/kern_thread.c
@@ -784,17 +784,16 @@ thread_single(int force_exit)
if (p->p_singlethread)
return (1);
- if (force_exit == SINGLE_EXIT) {
- p->p_flag |= P_SINGLE_EXIT;
- } else
- p->p_flag &= ~P_SINGLE_EXIT;
p->p_flag |= P_STOPPED_SINGLE;
mtx_lock_spin(&sched_lock);
p->p_singlethread = td;
- if (force_exit == SINGLE_EXIT)
+ if (force_exit == SINGLE_EXIT) {
remaining = p->p_numthreads;
- else
+ p->p_flag |= P_SINGLE_EXIT;
+ } else {
remaining = p->p_numthreads - p->p_suspcount;
+ p->p_flag &= ~P_SINGLE_EXIT;
+ }
while (remaining != 1) {
FOREACH_THREAD_IN_PROC(p, td2) {
if (td2 == td)