From e287f8ef3adc88112e1c2336adc4a27365058db8 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Thu, 8 Nov 2018 00:30:35 +0100 Subject: [PATCH] The colonel task already had a halt loop. Also don't reap() current in the scheduler, just wait until it's not current. --- Kernel/Scheduler.cpp | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/Kernel/Scheduler.cpp b/Kernel/Scheduler.cpp index 10b1a06464..5c3aa3536a 100644 --- a/Kernel/Scheduler.cpp +++ b/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); }