1 #include "pthread_impl.h"
2 #include "lock.h"
3 
pthread_kill(pthread_t t,int sig)4 int 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 }
19