X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Fsignal%2Fsigaction.c;h=5bc9383b66f34ed6f57e6d1f6a56bc57b8a8dc3c;hb=bc63e4fa2c9302c422e3bebd2653e4e36ee6372b;hp=b1603b9f4772e8b6e30625b4d8c1ca3fa7626cf4;hpb=dc3776d445957cd3ea4a682db518701b93d34292;p=musl diff --git a/src/signal/sigaction.c b/src/signal/sigaction.c index b1603b9f..5bc9383b 100644 --- a/src/signal/sigaction.c +++ b/src/signal/sigaction.c @@ -3,9 +3,13 @@ #include #include "syscall.h" #include "pthread_impl.h" +#include "libc.h" void __restore(), __restore_rt(); +static pthread_t dummy(void) { return 0; } +weak_alias(dummy, __pthread_self_def); + int __libc_sigaction(int sig, const struct sigaction *sa, struct sigaction *old) { struct { @@ -23,7 +27,8 @@ int __libc_sigaction(int sig, const struct sigaction *sa, struct sigaction *old) pksa = (long)&ksa; } if (old) pkold = (long)&kold; - if (syscall4(__NR_rt_sigaction, sig, pksa, pkold, 8)) + __pthread_self_def(); + if (syscall(SYS_rt_sigaction, sig, pksa, pkold, 8)) return -1; if (old) { old->sa_handler = kold.handler; @@ -35,7 +40,7 @@ int __libc_sigaction(int sig, const struct sigaction *sa, struct sigaction *old) int __sigaction(int sig, const struct sigaction *sa, struct sigaction *old) { - if (sig == SIGCANCEL || sig == SIGSYSCALL) { + if (sig-32U < 3) { errno = EINVAL; return -1; }