#include "pthread_impl.h" #include "lock.h" int pthread_kill(pthread_t t, int sig) { int r; sigset_t set; /* Block not just app signals, but internal ones too, since * pthread_kill is used to implement pthread_cancel, which * must be async-cancel-safe. */ __block_all_sigs(&set); LOCK(t->killlock); r = t->tid ? -__syscall(SYS_tkill, t->tid, sig) : (sig+0U >= _NSIG ? EINVAL : 0); UNLOCK(t->killlock); __restore_sigs(&set); return r; }