changes to kernel sigaction struct handling in preparation for mips port
[musl] / src / signal / sigqueue.c
1 #include <signal.h>
2 #include <string.h>
3 #include <unistd.h>
4 #include <stdint.h>
5 #include "syscall.h"
6
7 int sigqueue(pid_t pid, int sig, const union sigval value)
8 {
9         siginfo_t si;
10         sigset_t set;
11         int r;
12         memset(&si, 0, sizeof si);
13         si.si_signo = sig;
14         si.si_code = SI_QUEUE;
15         si.si_value = value;
16         si.si_uid = getuid();
17         pthread_sigmask(SIG_BLOCK, (void *)(uint64_t[1]){-1}, &set);
18         si.si_pid = getpid();
19         r = syscall(SYS_rt_sigqueueinfo, pid, sig, &si);
20         pthread_sigmask(SIG_SETMASK, &set, 0);
21         return r;
22 }