diff options
author | julian <julian@FreeBSD.org> | 2002-09-11 08:13:56 +0000 |
---|---|---|
committer | julian <julian@FreeBSD.org> | 2002-09-11 08:13:56 +0000 |
commit | 5702a380a53c99a00275cb7e2836033a7497bef8 (patch) | |
tree | 10514ece7d621a24c034e4c778c793b9ea2d9675 /sys/kern/kern_kthread.c | |
parent | 58f594ebe3d58d1f0905309bd8494e4e9549d121 (diff) | |
download | FreeBSD-src-5702a380a53c99a00275cb7e2836033a7497bef8.zip FreeBSD-src-5702a380a53c99a00275cb7e2836033a7497bef8.tar.gz |
Completely redo thread states.
Reviewed by: davidxu@freebsd.org
Diffstat (limited to 'sys/kern/kern_kthread.c')
-rw-r--r-- | sys/kern/kern_kthread.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/sys/kern/kern_kthread.c b/sys/kern/kern_kthread.c index e8e2fea..08ef71f 100644 --- a/sys/kern/kern_kthread.c +++ b/sys/kern/kern_kthread.c @@ -76,6 +76,7 @@ kthread_create(void (*func)(void *), void *arg, { int error; va_list ap; + struct thread *td; struct proc *p2; if (!proc0.p_stats /* || proc0.p_stats->p_start.tv_sec == 0 */) @@ -103,13 +104,15 @@ kthread_create(void (*func)(void *), void *arg, va_end(ap); /* call the processes' main()... */ - cpu_set_fork_handler(FIRST_THREAD_IN_PROC(p2), func, arg); + td = FIRST_THREAD_IN_PROC(p2); + cpu_set_fork_handler(td, func, arg); + TD_SET_CAN_RUN(td); /* Delay putting it on the run queue until now. */ mtx_lock_spin(&sched_lock); p2->p_sflag |= PS_INMEM; if (!(flags & RFSTOPPED)) { - setrunqueue(FIRST_THREAD_IN_PROC(p2)); + setrunqueue(td); } mtx_unlock_spin(&sched_lock); |