X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/48b4a227035048fdebcd32532deb7a857c6199ac..refs/heads/nov/intr-tree:/lunaix-os/kernel/syscall.c diff --git a/lunaix-os/kernel/syscall.c b/lunaix-os/kernel/syscall.c index 0d41470..cd3b80d 100644 --- a/lunaix-os/kernel/syscall.c +++ b/lunaix-os/kernel/syscall.c @@ -1,13 +1,19 @@ -#include -#include #include -#include -#include +#include -LOG_MODULE("SYSCALL") +typedef reg_t (*syscall_fn)(reg_t p1, reg_t p2, reg_t p3, reg_t p4, reg_t p5); -extern void syscall_hndlr(isr_param* param); +reg_t +dispatch_syscall(void* syscall_fnptr, + reg_t p1, reg_t p2, reg_t p3, reg_t p4, reg_t p5) +{ + reg_t ret_val; + + thread_stats_update_entering(true); + + set_preemption(); + ret_val = ((syscall_fn)syscall_fnptr)(p1, p2, p3, p4, p5); + no_preemption(); -void syscall_install() { - intr_subscribe(LUNAIX_SYS_CALL, syscall_hndlr); + return ret_val; } \ No newline at end of file