summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_kthread.c
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2001-01-24 10:47:50 +0000
committerjhb <jhb@FreeBSD.org>2001-01-24 10:47:50 +0000
commiteccf4f41cd41f2fbb7855797afe1970651ca7af2 (patch)
tree42c9f3c13e7cbab4d1923fbdea001898edd179f3 /sys/kern/kern_kthread.c
parentf739ee572827baf1cd9569509411794ad9a187d2 (diff)
downloadFreeBSD-src-eccf4f41cd41f2fbb7855797afe1970651ca7af2.zip
FreeBSD-src-eccf4f41cd41f2fbb7855797afe1970651ca7af2.tar.gz
- Catch up to proc flag changes.
- Set the new P_KTHREAD flag for kthreads during kthread_create.
Diffstat (limited to 'sys/kern/kern_kthread.c')
-rw-r--r--sys/kern/kern_kthread.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/kern/kern_kthread.c b/sys/kern/kern_kthread.c
index 8292a8d..f9ca35f 100644
--- a/sys/kern/kern_kthread.c
+++ b/sys/kern/kern_kthread.c
@@ -88,8 +88,10 @@ kthread_create(void (*func)(void *), void *arg,
*newpp = p2;
/* this is a non-swapped system process */
- p2->p_flag |= P_INMEM | P_SYSTEM;
+ PROC_LOCK(p2);
+ p2->p_flag |= P_SYSTEM | P_KTHREAD;
p2->p_procsig->ps_flag |= PS_NOCLDWAIT;
+ PROC_UNLOCK(p2);
PHOLD(p2);
/* set up arg0 for 'ps', et al */
@@ -101,12 +103,13 @@ kthread_create(void (*func)(void *), void *arg,
cpu_set_fork_handler(p2, func, arg);
/* Delay putting it on the run queue until now. */
+ mtx_enter(&sched_lock, MTX_SPIN);
+ p2->p_sflag |= PS_INMEM;
if (!(flags & RFSTOPPED)) {
- mtx_enter(&sched_lock, MTX_SPIN);
p2->p_stat = SRUN;
setrunqueue(p2);
- mtx_exit(&sched_lock, MTX_SPIN);
}
+ mtx_exit(&sched_lock, MTX_SPIN);
return 0;
}
OpenPOWER on IntegriCloud