OLD | NEW |
1 #include <signal.h> | 1 #include <signal.h> |
2 #include <string.h> | 2 #include <string.h> |
3 #include <unistd.h> | 3 #include <unistd.h> |
4 #include "syscall.h" | 4 #include "syscall.h" |
5 #include "pthread_impl.h" | 5 #include "pthread_impl.h" |
6 | 6 |
7 int sigqueue(pid_t pid, int sig, const union sigval value) | 7 int sigqueue(pid_t pid, int sig, const union sigval value) { |
8 { | 8 siginfo_t si; |
9 » siginfo_t si; | 9 sigset_t set; |
10 » sigset_t set; | 10 int r; |
11 » int r; | 11 memset(&si, 0, sizeof si); |
12 » memset(&si, 0, sizeof si); | 12 si.si_signo = sig; |
13 » si.si_signo = sig; | 13 si.si_code = SI_QUEUE; |
14 » si.si_code = SI_QUEUE; | 14 si.si_value = value; |
15 » si.si_value = value; | 15 si.si_uid = getuid(); |
16 » si.si_uid = getuid(); | 16 __block_app_sigs(&set); |
17 » __block_app_sigs(&set); | 17 si.si_pid = getpid(); |
18 » si.si_pid = getpid(); | 18 r = syscall(SYS_rt_sigqueueinfo, pid, sig, &si); |
19 » r = syscall(SYS_rt_sigqueueinfo, pid, sig, &si); | 19 __restore_sigs(&set); |
20 » __restore_sigs(&set); | 20 return r; |
21 » return r; | |
22 } | 21 } |
OLD | NEW |