1*c9945492SAndroid Build Coastguard Worker #include <signal.h> 2*c9945492SAndroid Build Coastguard Worker #include <errno.h> 3*c9945492SAndroid Build Coastguard Worker #include "syscall.h" 4*c9945492SAndroid Build Coastguard Worker pthread_sigmask(int how,const sigset_t * restrict set,sigset_t * restrict old)5*c9945492SAndroid Build Coastguard Workerint pthread_sigmask(int how, const sigset_t *restrict set, sigset_t *restrict old) 6*c9945492SAndroid Build Coastguard Worker { 7*c9945492SAndroid Build Coastguard Worker int ret; 8*c9945492SAndroid Build Coastguard Worker if (set && (unsigned)how - SIG_BLOCK > 2U) return EINVAL; 9*c9945492SAndroid Build Coastguard Worker ret = -__syscall(SYS_rt_sigprocmask, how, set, old, _NSIG/8); 10*c9945492SAndroid Build Coastguard Worker if (!ret && old) { 11*c9945492SAndroid Build Coastguard Worker if (sizeof old->__bits[0] == 8) { 12*c9945492SAndroid Build Coastguard Worker old->__bits[0] &= ~0x380000000ULL; 13*c9945492SAndroid Build Coastguard Worker } else { 14*c9945492SAndroid Build Coastguard Worker old->__bits[0] &= ~0x80000000UL; 15*c9945492SAndroid Build Coastguard Worker old->__bits[1] &= ~0x3UL; 16*c9945492SAndroid Build Coastguard Worker } 17*c9945492SAndroid Build Coastguard Worker } 18*c9945492SAndroid Build Coastguard Worker return ret; 19*c9945492SAndroid Build Coastguard Worker } 20