123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #include <errno.h>
- #include <signal.h>
- #include <sysdep.h>
- #include <tls.h>
- #include <bits/kernel-features.h>
- int
- raise (
- int sig)
- {
- #if (defined(__ASSUME_TGKILL) && __ASSUME_TGKILL) || defined __NR_tgkill
-
- pid_t pid = THREAD_GETMEM (THREAD_SELF, pid);
- if (__builtin_expect (pid < 0, 0))
- pid = -pid;
- #endif
- #if defined(__ASSUME_TGKILL) && __ASSUME_TGKILL
- return INLINE_SYSCALL (tgkill, 3, pid, THREAD_GETMEM (THREAD_SELF, tid),
- sig);
- #else
- # ifdef __NR_tgkill
- int res = INLINE_SYSCALL (tgkill, 3, pid, THREAD_GETMEM (THREAD_SELF, tid),
- sig);
- if (res != -1 || errno != ENOSYS)
- return res;
- # endif
- return INLINE_SYSCALL (tkill, 2, THREAD_GETMEM (THREAD_SELF, tid), sig);
- #endif
- }
|