1#include "pthread_impl.h"
2#include "syscall.h"
3#include <signal.h>
4
5static 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
15static 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
31void __block_all_sigs(void *set)
32{
33	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, &all_mask, set, _NSIG/8);
34}
35
36void __block_app_sigs(void *set)
37{
38	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, &app_mask, set, _NSIG/8);
39}
40
41void __restore_sigs(void *set)
42{
43	__syscall(SYS_rt_sigprocmask, SIG_SETMASK, set, 0, _NSIG/8);
44}
45