transition to using functions for internal signal blocking/restoring
[musl] / src / signal / block.c
1 #include "pthread_impl.h"
2 #include "syscall.h"
3 #include <signal.h>
4
5 static const unsigned long all_mask[] = {
6 #if ULONG_MAX == 0xffffffff && _NSIG == 129
7         -1UL, -1UL, -1UL, -1UL
8 #elif ULONG_MAX == 0xffffffff
9         -1UL, -1UL
10 #else
11         -1UL
12 #endif
13 };
14
15 static const unsigned long app_mask[] = {
16 #if ULONG_MAX == 0xffffffff
17 #if _NSIG == 65
18         0x7fffffff, 0xfffffffc
19 #else
20         0x7fffffff, 0xfffffffc, -1UL, -1UL
21 #endif
22 #else
23 #if _NSIG == 65
24         0xfffffffc7fffffff
25 #else
26         0xfffffffc7fffffff, -1UL
27 #endif
28 #endif
29 };
30
31 void __block_all_sigs(void *set)
32 {
33         __syscall(SYS_rt_sigprocmask, SIG_BLOCK, &all_mask, set, _NSIG/8);
34 }
35
36 void __block_app_sigs(void *set)
37 {
38         __syscall(SYS_rt_sigprocmask, SIG_BLOCK, &app_mask, set, _NSIG/8);
39 }
40
41 void __restore_sigs(void *set)
42 {
43         __syscall(SYS_rt_sigprocmask, SIG_SETMASK, set, 0, _NSIG/8);
44 }