From d5316d82759bfbe146e014597605f121cb3c2e45 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Thu, 10 Jul 2025 21:29:14 -0400 Subject: kernel/sched: Undo sched_yield() changes - Keep old sched_yield() logic as newer logic caused issues on QEMU - TODO: Actually fix and test Signed-off-by: Ian Moffett --- sys/kern/kern_sched.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/sys/kern/kern_sched.c b/sys/kern/kern_sched.c index 30036c0..774ba71 100644 --- a/sys/kern/kern_sched.c +++ b/sys/kern/kern_sched.c @@ -258,8 +258,27 @@ 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