diff options
| author | Julian Elischer <julian@FreeBSD.org> | 2004-10-05 22:05:25 +0000 |
|---|---|---|
| committer | Julian Elischer <julian@FreeBSD.org> | 2004-10-05 22:05:25 +0000 |
| commit | fcb7c67b7b5171c95e071d27df7531fede4bd1a5 (patch) | |
| tree | fe56c67f12a4d2059d3e7d1d11e390a303d67f59 /sys/kern/kern_thread.c | |
| parent | c20c691bed1c9e151e06d276a3f053298dd0abf8 (diff) | |
Notes
Diffstat (limited to 'sys/kern/kern_thread.c')
| -rw-r--r-- | sys/kern/kern_thread.c | 11 |
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) |
