X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/2803826a2373620dbfce8a5bff1e6a01dd594953..35a7d633d3f16c1e0539af6ca5d8e7482926cd93:/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