Export XSI sigpause

There are two common sigpause variants, both of which take an int argument.
If you request _XOPEN_SOURCE or _GNU_SOURCE, you get the System V version,
which removes the given signal from the process's signal mask; otherwise
you get the BSD version, which sets the process's signal mask to the given
value.

Signed-off-by: Yaakov Selkowitz <yselkowi@redhat.com>
This commit is contained in:
Yaakov Selkowitz
2017-06-14 10:20:05 -05:00
parent 40ca6f02ed
commit dde6af6f82
5 changed files with 36 additions and 4 deletions

View File

@ -523,6 +523,18 @@ sigpause (int signal_mask)
return res;
}
extern "C" int
__xpg_sigpause (int sig)
{
int res;
sigset_t signal_mask;
sigprocmask (0, NULL, &signal_mask);
sigdelset (&signal_mask, sig);
res = handle_sigsuspend (signal_mask);
syscall_printf ("%R = __xpg_sigpause(%y)", res, sig);
return res;
}
extern "C" int
pause (void)
{