1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- #include "pthread_impl.h"
- #include "syscall.h"
- #include <signal.h>
- static const unsigned long all_mask[] = {
- #if ULONG_MAX == 0xffffffff && _NSIG == 129
- -1UL, -1UL, -1UL, -1UL
- #elif ULONG_MAX == 0xffffffff
- -1UL, -1UL
- #else
- -1UL
- #endif
- };
- static const unsigned long app_mask[] = {
- #if ULONG_MAX == 0xffffffff
- #if _NSIG == 65
- 0x7fffffff, 0xfffffffc
- #else
- 0x7fffffff, 0xfffffffc, -1UL, -1UL
- #endif
- #else
- #if _NSIG == 65
- 0xfffffffc7fffffff
- #else
- 0xfffffffc7fffffff, -1UL
- #endif
- #endif
- };
- void __block_all_sigs(void *set)
- {
- __syscall(SYS_rt_sigprocmask, SIG_BLOCK, &all_mask, set, _NSIG/8);
- }
- void __block_app_sigs(void *set)
- {
- __syscall(SYS_rt_sigprocmask, SIG_BLOCK, &app_mask, set, _NSIG/8);
- }
- void __restore_sigs(void *set)
- {
- __syscall(SYS_rt_sigprocmask, SIG_SETMASK, set, 0, _NSIG/8);
- }
|