raise.c 378 B

12345678910111213141516
  1. #include <signal.h>
  2. #include <errno.h>
  3. #include <stdint.h>
  4. #include "syscall.h"
  5. int raise(int sig)
  6. {
  7. int pid, tid, ret;
  8. sigset_t set;
  9. __syscall(SYS_rt_sigprocmask, SIG_BLOCK, (uint64_t[]){-1}, &set, 8);
  10. tid = syscall(SYS_gettid);
  11. pid = syscall(SYS_getpid);
  12. ret = syscall(SYS_tgkill, pid, tid, sig);
  13. __syscall(SYS_rt_sigprocmask, SIG_SETMASK, &set, 0, 8);
  14. return ret;
  15. }