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