summaryrefslogtreecommitdiff
path: root/kernel/syscalls/kill.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/syscalls/kill.c')
-rw-r--r--kernel/syscalls/kill.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/kernel/syscalls/kill.c b/kernel/syscalls/kill.c
index 0da229a..affade6 100644
--- a/kernel/syscalls/kill.c
+++ b/kernel/syscalls/kill.c
@@ -1,7 +1,15 @@
+#include <errno.h>
#include <sched/scheduler.h>
#include <signal.h>
#include <syscalls.h>
-int syscall_kill(pid_t pid, int sig) {
- return kill(pid, sig);
+int syscall_kill(int fd, int sig) {
+ vfs_fd_t *fd_ptr = get_vfs_fd(fd, NULL);
+ if (!fd_ptr) {
+ return -EBADF;
+ }
+ if (!fd_ptr->inode->send_signal) {
+ return -EBADF;
+ }
+ return process_signal(fd_ptr, sig);
}