瀏覽代碼

The colonel task already had a halt loop.

Also don't reap() current in the scheduler, just wait until it's not current.
Andreas Kling 6 年之前
父節點
當前提交
e287f8ef3a
共有 1 個文件被更改,包括 2 次插入9 次删除
  1. 2 9
      Kernel/Scheduler.cpp

+ 2 - 9
Kernel/Scheduler.cpp

@@ -66,7 +66,7 @@ bool Scheduler::pick_next()
         }
 
         if (process.state() == Process::Dead) {
-            if (!Process::from_pid(process.ppid()))
+            if (current != &process && !Process::from_pid(process.ppid()))
                 Process::reap(process.pid());
             return true;
         }
@@ -242,19 +242,12 @@ void Scheduler::prepare_to_modify_tss(Process& process)
         load_task_register(s_redirection.selector);
 }
 
-static void hlt_loop()
-{
-    for (;;) {
-        asm volatile("hlt");
-    }
-}
-
 void Scheduler::initialize()
 {
     memset(&s_redirection, 0, sizeof(s_redirection));
     s_redirection.selector = gdt_alloc_entry();
     initialize_redirection();
-    s_colonel_process = Process::create_kernel_process(hlt_loop, "colonel");
+    s_colonel_process = Process::create_kernel_process(nullptr, "colonel");
     current = nullptr;
     load_task_register(s_redirection.selector);
 }