• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 > 65
7 	-1UL, -1UL, -1UL, -1UL
8 #elif ULONG_MAX == 0xffffffff || _NSIG > 65
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 
__block_all_sigs(void * set)31 void __block_all_sigs(void *set)
32 {
33 	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, &all_mask, set, _NSIG/8);
34 }
35 
__block_app_sigs(void * set)36 void __block_app_sigs(void *set)
37 {
38 	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, &app_mask, set, _NSIG/8);
39 }
40 
__restore_sigs(void * set)41 void __restore_sigs(void *set)
42 {
43 	__syscall(SYS_rt_sigprocmask, SIG_SETMASK, set, 0, _NSIG/8);
44 }
45