2001-07-22 Roland McGrath <roland@frob.com>

* hurd/hurdsig.c (_hurd_internal_post_signal): Support SA_RESETHAND
	and SA_NODEFER options.  Spurred to action by Igor Khavkine.
This commit is contained in:
Roland McGrath 2001-07-23 07:19:20 +00:00
parent a9d61e2988
commit 5d83494fad
1 changed files with 8 additions and 2 deletions

View File

@ -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). */