1 /* Handling of signals */ 2 3 #include <signal.h> 4 #include <errno.h> 5 #include <pthread-l4.h> 6 #include <l4/sys/thread.h> 7 8 int pthread_kill(pthread_t thread, int signo); pthread_kill(pthread_t thread,int signo)9int pthread_kill(pthread_t thread, int signo) 10 { 11 l4_cap_idx_t c = pthread_l4_cap(thread); 12 13 if (signo >= _NSIG) 14 { 15 errno = EINVAL; 16 return -1; 17 } 18 19 if (l4_is_invalid_cap(c)) 20 { 21 errno = ESRCH; 22 return -1; 23 } 24 25 int x = l4_error(l4_thread_ex_regs(c, ~0UL, ~0UL, 26 L4_THREAD_EX_REGS_TRIGGER_EXCEPTION)); 27 if (x) 28 { 29 errno = EINVAL; 30 return -1; 31 } 32 33 return x ? -1 : 0; 34 } 35