blob: cc8698f0bb7fbcf5508ceaf43edd4c8954e81075 [file] [log] [blame]
#include "pthread_impl.h"
#include "syscall.h"
#include <signal.h>
static const unsigned long all_mask[] = {
#if ULONG_MAX == 0xffffffff && _NSIG > 65
-1UL, -1UL, -1UL, -1UL
#elif ULONG_MAX == 0xffffffff || _NSIG > 65
-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);
}