From 909d32b5361eddda3a0db3586b1cb6598de7b620 Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Mon, 28 Dec 2020 23:25:29 +0100 Subject: proc: support waitid(WNOWAIT) * proc/wait.c (S_proc_waitid): When options contains WNOWAIT, do not set p_waited or complete child death. --- proc/wait.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) (limited to 'proc/wait.c') diff --git a/proc/wait.c b/proc/wait.c index 0f82240a..cea193d4 100644 --- a/proc/wait.c +++ b/proc/wait.c @@ -189,13 +189,19 @@ S_proc_waitid (struct proc *p, || !(child->p_traced || (options & WUNTRACED))) && (!child->p_continued || !(options & WCONTINUED)))) return 0; - child->p_waited = 1; + *status = child->p_status; *sigcode = child->p_sigcode; *ru = child->p_rusage; /* all zeros if !p_dead */ *pid_status = child->p_pid; - if (child->p_dead) - complete_exit (child); + + if (!(options & WNOWAIT)) + { + child->p_waited = 1; + if (child->p_dead) + complete_exit (child); + } + return 1; } -- cgit v1.2.3