update readme introduction part, add demo screen-shot
[lunaix-os.git] / lunaix-os / kernel / syscall.c
index 1c0110de3fa74427436c5743696d25838b285b46..cd3b80d9f8e743d97c72a28cea4dbfea004ce96e 100644 (file)
@@ -1,17 +1,19 @@
-#include <sys/interrupts.h>
-#include <lunaix/isrm.h>
 #include <lunaix/process.h>
-#include <lunaix/sched.h>
-#include <lunaix/syscall.h>
-#include <lunaix/syslog.h>
+#include <lunaix/kpreempt.h>
 
-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