From d7c7f87432aa2d20eefd3b4f38a78eba5e7373a0 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Thu, 10 Jul 2025 03:20:13 -0400 Subject: kernel: sched: Greatly simplify yield logic The purpose of yielding to the scheduler is to tell it you want to preempt early in order to not starve processes while waiting for I/O. We can trigger the timer earlier on for stability as a ~10 usec delay should not be too terrible. Signed-off-by: Ian Moffett --- sys/kern/kern_sched.c | 19 ------------------- 1 file changed, 19 deletions(-) (limited to 'sys') diff --git a/sys/kern/kern_sched.c b/sys/kern/kern_sched.c index 774ba71..30036c0 100644 --- a/sys/kern/kern_sched.c +++ b/sys/kern/kern_sched.c @@ -258,27 +258,8 @@ sched_enter(void) void sched_yield(void) { - struct proc *td; - struct cpu_info *ci = this_cpu(); - - if ((td = ci->curtd) == NULL) { - return; - } - - td->rested = true; - - /* FIXME: Hang yielding when waited on */ - if (ISSET(td->flags, PROC_WAITED)) { - return; - } - - ci->curtd = NULL; md_inton(); sched_oneshot(false); - - md_hlt(); - md_intoff(); - ci->curtd = td; } void -- cgit v1.2.3