pthread_sigmask.c 492 B

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