summaryrefslogtreecommitdiffstats
path: root/sys/kern/kern_kthread.c
diff options
context:
space:
mode:
authorjulian <julian@FreeBSD.org>2002-09-11 08:13:56 +0000
committerjulian <julian@FreeBSD.org>2002-09-11 08:13:56 +0000
commit5702a380a53c99a00275cb7e2836033a7497bef8 (patch)
tree10514ece7d621a24c034e4c778c793b9ea2d9675 /sys/kern/kern_kthread.c
parent58f594ebe3d58d1f0905309bd8494e4e9549d121 (diff)
downloadFreeBSD-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.c7
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);
OpenPOWER on IntegriCloud