OLD | NEW |
(Empty) | |
| 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 } |
OLD | NEW |