From c31bc1b4132d12d5cfb144419f83f480ee4e7b88 Mon Sep 17 00:00:00 2001 From: Ian Moffett Date: Mon, 9 Jun 2025 01:53:56 -0400 Subject: kernel: spawn: Improve wait sleep handling Signed-off-by: Ian Moffett --- sys/kern/kern_exit.c | 5 +---- sys/kern/kern_spawn.c | 5 +---- 2 files changed, 2 insertions(+), 8 deletions(-) (limited to 'sys') diff --git a/sys/kern/kern_exit.c b/sys/kern/kern_exit.c index 0f90365..53dc166 100644 --- a/sys/kern/kern_exit.c +++ b/sys/kern/kern_exit.c @@ -159,10 +159,7 @@ exit1(struct proc *td, int flags) if (td->data == NULL) sched_enter(); - if (ISSET(parent->flags, PROC_SLEEP)) { - sched_enqueue_td(parent); - parent->flags &= ~PROC_SLEEP; - } + parent->flags &= ~PROC_SLEEP; sched_enter(); } diff --git a/sys/kern/kern_spawn.c b/sys/kern/kern_spawn.c index 4ec1bfb..42e558a 100644 --- a/sys/kern/kern_spawn.c +++ b/sys/kern/kern_spawn.c @@ -168,10 +168,7 @@ spawn(struct proc *cur, void(*func)(void), void *p, int flags, struct proc **new if (ISSET(flags, SPAWN_WAIT)) { newproc->flags |= PROC_WAITED; cur->flags |= PROC_SLEEP; - - while (ISSET(cur->flags, PROC_SLEEP)) { - sched_yield(); - } + sched_yield(); if (!ISSET(newproc->flags, PROC_ZOMB)) { pr_error("spawn: fatal: %d not zombie\n", newproc->pid); -- cgit v1.2.3