From 5d83494fadbcd3730eb1e6e1ff19ddefad4072ce Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Mon, 23 Jul 2001 07:19:20 +0000 Subject: [PATCH] 2001-07-22 Roland McGrath * hurd/hurdsig.c (_hurd_internal_post_signal): Support SA_RESETHAND and SA_NODEFER options. Spurred to action by Igor Khavkine. --- hurd/hurdsig.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c index b6851d8..8471df2 100644 --- a/hurd/hurdsig.c +++ b/hurd/hurdsig.c @@ -926,9 +926,15 @@ _hurd_internal_post_signal (struct hurd_sigstate *ss, /* Backdoor extra argument to signal handler. */ scp->sc_error = detail->error; - /* Block SIGNO and requested signals while running the handler. */ scp->sc_mask = ss->blocked; - ss->blocked |= __sigmask (signo) | ss->actions[signo].sa_mask; + + if ((ss->actions[signo].sa_flags & SA_NODEFER) == 0) + /* Block SIGNO and requested signals while running the handler. */ + ss->blocked |= __sigmask (signo) | ss->actions[signo].sa_mask; + + if (ss->actions[signo].sa_flags & SA_RESETHAND) + /* Silly SysV/Linux compatibility option. */ + ss->actions[signo].sa_handler = SIG_DFL; /* Start the thread running the handler (or possibly waiting for an RPC reply before running the handler). */ -- 2.7.4