signal: Use SA_SIGINFO (like glibc).
* lib/linux/signal.c (_restorer): Rename to... (_restorer_for_siginfo): ...this. (signal): Use it. Use SA_SIGINFO.
This commit is contained in:
parent
e8bbe21499
commit
02fdead244
|
@ -26,7 +26,7 @@
|
|||
#if __i386__
|
||||
#else
|
||||
void
|
||||
_restorer (void)
|
||||
_restorer_for_siginfo (void)
|
||||
{
|
||||
_sys_call (SYS_rt_sigreturn);
|
||||
}
|
||||
|
@ -44,12 +44,12 @@ signal (int signum, sighandler_t action)
|
|||
unsigned short itembitcount;
|
||||
|
||||
setup_action.sa_handler = action;
|
||||
setup_action.sa_restorer = _restorer;
|
||||
setup_action.sa_restorer = _restorer_for_siginfo;
|
||||
bitindex = signum - 1;
|
||||
itembitcount = 8 * sizeof(setup_action.sa_mask.items[0]);
|
||||
setup_action.sa_mask.items[bitindex / itembitcount] = 1UL << (bitindex % itembitcount);
|
||||
old.sa_handler = SIG_DFL;
|
||||
setup_action.sa_flags = SA_RESTORER | SA_RESTART;
|
||||
setup_action.sa_flags = SA_RESTORER | SA_RESTART | SA_SIGINFO;
|
||||
int r = _sys_call4 (SYS_rt_sigaction, signum, &setup_action, &old, sizeof (sigset_t));
|
||||
if (r)
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue