X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/290981180b9abc454e017271a8ebe75478c00e86..270869139db617e29a35bb9ded41087bb702f9ac:/lunaix-os/kernel/syscall.c diff --git a/lunaix-os/kernel/syscall.c b/lunaix-os/kernel/syscall.c index 6f0a2ba..cd3b80d 100644 --- a/lunaix-os/kernel/syscall.c +++ b/lunaix-os/kernel/syscall.c @@ -1,17 +1,19 @@ -#include -#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(const 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) { - isrm_bindiv(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