#include #include #include #include "pthread_impl.h" #include "lock.h" int pthread_sigqueue(pthread_t t, int sig, const union sigval value) { siginfo_t si; sigset_t set; int r; memset(&si, 0, sizeof si); si.si_signo = sig; si.si_code = SI_QUEUE; si.si_value = value; si.si_uid = getuid(); si.si_pid = getpid(); LOCK(t->killlock); r = t->tid ? -__syscall(SYS_rt_tgsigqueueinfo, si.si_pid, t->tid, sig, &si) : (sig+0U >= _NSIG ? EINVAL : 0); UNLOCK(t->killlock); return r; }