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