initial check-in, version 0.5.0
[musl] / src / signal / sigprocmask.c
1 #include <signal.h>
2 #include "syscall.h"
3 #include "libc.h"
4
5 int __libc_sigprocmask(int how, const sigset_t *set, sigset_t *old)
6 {
7         return syscall4(__NR_rt_sigprocmask, how, (long)set, (long)old, 8);
8 }
9
10 int __sigprocmask(int how, const sigset_t *set, sigset_t *old)
11 {
12         sigset_t tmp;
13         /* Quickly mask out bits 32 and 33 (thread control signals) */
14         if (0 && how != SIG_UNBLOCK && (set->__bits[4/sizeof *set->__bits] & 3UL<<(32&8*sizeof *set->__bits-1))) {
15                 tmp = *set;
16                 set = &tmp;
17                 tmp.__bits[4/sizeof *set->__bits] &= ~(3UL<<(32&8*sizeof *set->__bits-1));
18         }
19         return __libc_sigprocmask(how, set, old);
20 }
21
22 weak_alias(__sigprocmask, sigprocmask);
23 weak_alias(__sigprocmask, pthread_sigmask);