X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/e66387b252f36c894d79769cbfb178bc950600d4..7909fc6dec8d1499c5b9fa331a810a77b08c84a2:/lunaix-os/kernel/syscall.c diff --git a/lunaix-os/kernel/syscall.c b/lunaix-os/kernel/syscall.c index ce0f2a7..cd3b80d 100644 --- a/lunaix-os/kernel/syscall.c +++ b/lunaix-os/kernel/syscall.c @@ -1,16 +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); - -void -syscall_install() +reg_t +dispatch_syscall(void* syscall_fnptr, + reg_t p1, reg_t p2, reg_t p3, reg_t p4, reg_t p5) { - intr_subscribe(LUNAIX_SYS_CALL, syscall_hndlr); + reg_t ret_val; + + thread_stats_update_entering(true); + + set_preemption(); + ret_val = ((syscall_fn)syscall_fnptr)(p1, p2, p3, p4, p5); + no_preemption(); + + return ret_val; } \ No newline at end of file