sigprocmask.c 373 B

1234567891011121314151617181920212223
  1. #include "lib.h"
  2. #include <signal.h>
  3. #include <errno.h>
  4. sigset_t _psigblocked;
  5. int
  6. sigprocmask(int how, sigset_t *set, sigset_t *oset)
  7. {
  8. if(oset)
  9. *oset = _psigblocked;
  10. if(how==SIG_BLOCK)
  11. _psigblocked |= *set;
  12. else if(how==SIG_UNBLOCK)
  13. _psigblocked &= ~*set;
  14. else if(how==SIG_SETMASK)
  15. _psigblocked = *set;
  16. else{
  17. errno = EINVAL;
  18. return -1;
  19. }
  20. return 0;
  21. }