1#include <signal.h> 2#include <string.h> 3#include <unistd.h> 4#include "syscall.h" 5#include "pthread_impl.h" 6 7int 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 __block_app_sigs(&set); 18 si.si_pid = getpid(); 19 r = syscall(SYS_rt_sigqueueinfo, pid, sig, &si); 20 __restore_sigs(&set); 21 return r; 22} 23