diff options
| author | John Baldwin <jhb@FreeBSD.org> | 2001-01-24 10:47:50 +0000 |
|---|---|---|
| committer | John Baldwin <jhb@FreeBSD.org> | 2001-01-24 10:47:50 +0000 |
| commit | f1dea27db4af640acfa30c0fb5fea541eb422cc1 (patch) | |
| tree | 1b68968ecdaf5deb31794fdbda47015642958b94 | |
| parent | a7b124c3c7b43b8d4878841a591297136aaf011d (diff) | |
Notes
| -rw-r--r-- | sys/kern/kern_kthread.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/sys/kern/kern_kthread.c b/sys/kern/kern_kthread.c index 8292a8d455f8..f9ca35f621fc 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; } |
