github.com/afumu/libc@v0.0.6/musl/src/signal/block.c (about) 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 }