diff options
author | Jon Santmyer <jon@jonsantmyer.com> | 2024-03-11 21:30:31 -0400 |
---|---|---|
committer | Jon Santmyer <jon@jonsantmyer.com> | 2024-03-11 21:30:31 -0400 |
commit | d1ff7bcc91886626dc9060ec5fb67ee102ab7c1d (patch) | |
tree | 8f0b5cd8aad31089131785dc6e37b659490f9955 /usr/syscall.c | |
download | jove-kernel-d1ff7bcc91886626dc9060ec5fb67ee102ab7c1d.tar.gz jove-kernel-d1ff7bcc91886626dc9060ec5fb67ee102ab7c1d.tar.bz2 jove-kernel-d1ff7bcc91886626dc9060ec5fb67ee102ab7c1d.zip |
usermode capable kernel with logging syscall
Diffstat (limited to 'usr/syscall.c')
-rw-r--r-- | usr/syscall.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/usr/syscall.c b/usr/syscall.c new file mode 100644 index 0000000..0ea5700 --- /dev/null +++ b/usr/syscall.c @@ -0,0 +1,23 @@ +#include "syscall.h" +#include "mem/memory.h" +#include "io/log.h" + +int _syscall_handler_log(struct syscall_log *req) +{ + klogf("Message ptr %#016X\n", req->message); + if(!mem_check_ptr(req->message)) return -1; + klogf("%s", req->message); + return 0; +} + +void *_syscall_handlers[SYSCALL_COUNT] = { + _syscall_handler_log +}; + +int +syscall_handler(syscall_t *req) +{ + if(!mem_check_ptr(req)) return -1; + if(req->id >= SYSCALL_COUNT) return -1; + return ((syscall_handler_t)(_syscall_handlers[req->id]))(req); +} |