diff --git a/hermit/include/hermit/syscall.h b/hermit/include/hermit/syscall.h index b9a93675a..8bb061672 100644 --- a/hermit/include/hermit/syscall.h +++ b/hermit/include/hermit/syscall.h @@ -57,6 +57,8 @@ extern "C" { struct sem; typedef struct sem sem_t; +typedef void (*signal_handler_t)(int); + /* * HermitCore is a libOS. * => classical system calls are realized as normal function @@ -88,6 +90,8 @@ int sys_rcce_init(int session_id); size_t sys_rcce_malloc(int session_id, int ue); int sys_rcce_fini(int session_id); void sys_yield(void); +int sys_kill(tid_t dest, int signum); +int sys_signal(signal_handler_t handler); #define __NR_exit 0 #define __NR_write 1 diff --git a/hermit/kernel/syscall.c b/hermit/kernel/syscall.c index 70040ec12..2d331f6f8 100644 --- a/hermit/kernel/syscall.c +++ b/hermit/kernel/syscall.c @@ -35,6 +35,7 @@ #include #include #include +#include #include #include @@ -630,6 +631,19 @@ void sys_yield(void) #endif } +int sys_kill(tid_t dest, int signum) +{ + if(signum < 0) { + return -EINVAL; + } + return hermit_kill(dest, signum); +} + +int sys_signal(signal_handler_t handler) +{ + return hermit_signal(handler); +} + static int default_handler(void) { #if 1