From: Roland McGrath Date: Mon, 23 Jul 2001 07:19:20 +0000 (+0000) Subject: 2001-07-22 Roland McGrath X-Git-Tag: cvs/glibc-2_2_4~182 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=5d83494fadbcd3730eb1e6e1ff19ddefad4072ce;p=thirdparty%2Fglibc.git 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. --- diff --git a/hurd/hurdsig.c b/hurd/hurdsig.c index b6851d86a64..8471df27d71 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). */