master
 1#include "pthread_impl.h"
 2#include "lock.h"
 3
 4int pthread_kill(pthread_t t, int sig)
 5{
 6	int r;
 7	sigset_t set;
 8	/* Block not just app signals, but internal ones too, since
 9	 * pthread_kill is used to implement pthread_cancel, which
10	 * must be async-cancel-safe. */
11	__block_all_sigs(&set);
12	LOCK(t->killlock);
13	r = t->tid ? -__syscall(SYS_tkill, t->tid, sig)
14		: (sig+0U >= _NSIG ? EINVAL : 0);
15	UNLOCK(t->killlock);
16	__restore_sigs(&set);
17	return r;
18}