From 75ec633805db108bfddb6454ff7f8d812475feaf Mon Sep 17 00:00:00 2001 From: dzwdz Date: Mon, 11 Apr 2022 23:29:30 +0200 Subject: kernel: implement `cpu_pause()` in assembly, remove `irq_interrupt_flag()` --- src/kernel/proc.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'src/kernel/proc.c') diff --git a/src/kernel/proc.c b/src/kernel/proc.c index 1f012fa..944f5b9 100644 --- a/src/kernel/proc.c +++ b/src/kernel/proc.c @@ -6,7 +6,6 @@ #include #include #include -#include // TODO move irq stuff to arch/generic #include // TODO struct process *process_first; @@ -86,13 +85,13 @@ _Noreturn void process_idle(void) { for (;;) { for (size_t i = 0; i < len; i++) { if (procs[i]->waits4irq.ready()) { + /* if this is entered during the first iteration, it indicates a + * kernel bug. this should be logged. TODO? */ vfs_root_handler(&procs[i]->waits4irq.req); // TODO this should be a function pointer too process_switch_any(); } } - irq_interrupt_flag(true); - asm("hlt" ::: "memory"); // TODO move to irq.c - irq_interrupt_flag(false); + cpu_pause(); } } -- cgit v1.2.3