5 #include "pthread_impl.h"
9 syscall0(__NR_rt_sigreturn);
12 int __libc_sigaction(int sig, const struct sigaction *sa, struct sigaction *old)
17 void (*restorer)(void);
22 ksa.handler = sa->sa_handler;
23 ksa.flags = sa->sa_flags | SA_RESTORER;
24 ksa.restorer = restorer;
25 ksa.mask = sa->sa_mask;
28 if (old) pkold = (long)&kold;
29 if (syscall4(__NR_rt_sigaction, sig, pksa, pkold, 8))
32 old->sa_handler = kold.handler;
33 old->sa_flags = kold.flags;
34 old->sa_mask = kold.mask;
39 int __sigaction(int sig, const struct sigaction *sa, struct sigaction *old)
41 if (sig == SIGCANCEL || sig == SIGSYSCALL) {
45 return __libc_sigaction(sig, sa, old);
48 weak_alias(__sigaction, sigaction);