From 764f14e7d57e0727856f3ef716bdc3a0e6e41144 Mon Sep 17 00:00:00 2001 From: Alan Cox Date: Thu, 25 Feb 2016 21:58:11 +0000 Subject: [PATCH] process: hack for P_STOPPED until we sort out the stop behaviour properly BSD picks such inelegant behaviours --- Kernel/process.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/Kernel/process.c b/Kernel/process.c index 0158d393..819a65e9 100644 --- a/Kernel/process.c +++ b/Kernel/process.c @@ -455,11 +455,14 @@ void chksigs(void) int (**svec)(int) = &udata.u_sigvec[0]; uint32_t m; - // any signals pending? - if (!pending) + /* Fast path - no signals pending means no work + Also don't do signal processing if we are in P_STOPPED. This + isn't quite right but will paper over the holes for the moment + FIXME */ + if (!pending || udata.u_ptab->p_status == P_STOPPED) return; - // dispatch the lowest numbered signal + /* Dispatch the lowest numbered signal */ for (j = 1; j < NSIGS; ++j) { svec++; m = sigmask(j); -- 2.34.1