From cb195d202cf71e8bea71749600423190107a3621 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Mon, 9 Jun 2025 16:01:31 -0400 Subject: kernel: sched: No yield on wait + intoff on yield Temporary workaround for issue relating to hangs on process yield with a sleeping parent Signed-off-by: Ian Moffett --- sys/kern/kern_sched.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'sys') diff --git a/sys/kern/kern_sched.c b/sys/kern/kern_sched.c index d656f94..ec5592e 100644 --- a/sys/kern/kern_sched.c +++ b/sys/kern/kern_sched.c @@ -264,11 +264,18 @@ sched_yield(void) } td->rested = true; - ci->curtd = NULL; + /* 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; } -- cgit v1.2.3