From 51bff7b18de9329d7bd77324cc597e72173fae74 Mon Sep 17 00:00:00 2001 From: Richard Braun Date: Wed, 12 Dec 2012 21:56:44 +0100 Subject: kern/thread: support multiprocessor scheduling In practice, this merely means an idle thread now exists for each CPU, and threads can be preempted and rescheduled on each of them. There is currently no migration between processors. --- kern/kernel.c | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) (limited to 'kern/kernel.c') diff --git a/kern/kernel.c b/kern/kernel.c index 70cc8c71..760f68e8 100644 --- a/kern/kernel.c +++ b/kern/kernel.c @@ -22,31 +22,16 @@ #include #include -static void __init -kernel_setup(void *arg) -{ - (void)arg; - - for (;;) - cpu_idle(); -} - void __init kernel_main(void) { - struct thread *thread; - int error; - assert(!cpu_intr_enabled()); task_setup(); thread_setup(); - cpu_mp_setup(); - - error = thread_create(&thread, "core", kernel_task, kernel_setup, NULL); - if (error) - panic("kernel: unable to create kernel thread"); + /* Interrupts are enabled by this call */ + cpu_mp_setup(); thread_run(); @@ -58,8 +43,7 @@ kernel_ap_main(void) { assert(cpu_intr_enabled()); - for (;;) - cpu_idle(); + thread_run(); /* Never reached */ } -- cgit v1.2.3