git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update readme introduction part, add demo screen-shot
[lunaix-os.git]
/
lunaix-os
/
kernel
/
syscall.c
diff --git
a/lunaix-os/kernel/syscall.c
b/lunaix-os/kernel/syscall.c
index ce0f2a794813dcc1a405c6d288fbdc85c2518b32..cd3b80d9f8e743d97c72a28cea4dbfea004ce96e 100644
(file)
--- a/
lunaix-os/kernel/syscall.c
+++ b/
lunaix-os/kernel/syscall.c
@@
-1,16
+1,19
@@
-#include <arch/x86/interrupts.h>
#include <lunaix/process.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(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
}
\ No newline at end of file