summaryrefslogtreecommitdiff
path: root/src/kernel/task/syscall.c
diff options
context:
space:
mode:
authorAlexis211 <alexis211@gmail.com>2010-03-24 15:40:16 +0100
committerAlexis211 <alexis211@gmail.com>2010-03-24 15:40:16 +0100
commitdbfa8cae66811247e5110e2e17f1c6ae5d1b2bcd (patch)
tree793b49a6b89c1113c74ae3ee97d197f6070cb7a7 /src/kernel/task/syscall.c
parentcbadacbb881200b601c7b53b29aa0c1b78747692 (diff)
downloadTCE-dbfa8cae66811247e5110e2e17f1c6ae5d1b2bcd.tar.gz
TCE-dbfa8cae66811247e5110e2e17f1c6ae5d1b2bcd.zip
IPC not tested but suposedly working.
Diffstat (limited to 'src/kernel/task/syscall.c')
-rw-r--r--src/kernel/task/syscall.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/kernel/task/syscall.c b/src/kernel/task/syscall.c
index 51c46f1..dd909e0 100644
--- a/src/kernel/task/syscall.c
+++ b/src/kernel/task/syscall.c
@@ -6,9 +6,12 @@
r->eax = name(r->ebx); }
#define CALL2(name, scname) static void scname(struct registers* r) { \
r->eax = name(r->ebx, r->ecx); }
+#define CALL3(name, scname) static void scname(struct registers* r) { \
+ r->eax = name(r->ebx, r->ecx, r->edx); }
#define CALL0V(name, scname) static void scname(struct registers* r) { name(); }
#define CALL1V(name, scname) static void scname(struct registers* r) { name(r->ebx); }
#define CALL2V(name, scname) static void scname(struct registers* r) { name(r->ebx, r->ecx); }
+#define CALL3V(name, scname) static void scname(struct registers* r) { name(r->ebx, r->ecx, r->edx); }
CALL0V(thread_exit, thread_exit_sc);
CALL0V(tasking_switch, schedule_sc);
@@ -19,6 +22,15 @@ CALL1V(idt_waitIrq, irq_wait_sc);
CALL0(proc_priv, proc_priv_sc);
CALL2(shm_create, shm_create_sc);
CALL1(shm_delete, shm_delete_sc);
+CALL0(object_create, object_create_sc);
+CALL1(object_owned, object_owned_sc);
+CALL1V(object_close, object_close_sc);
+CALL3(request_get, request_get_sc);
+CALL1(request_has, request_has_sc);
+CALL3V(request_answer, request_answer_sc);
+CALL3(request_mapShm, request_mapShm_sc);
+CALL2(request, request_sc);
+CALL2(send_msg, send_msg_sc);
static void thread_new_sc(struct registers* r) {
thread_new(current_thread->process, (thread_entry)r->ebx, (void*)r->ecx);
@@ -35,4 +47,13 @@ int_callback syscalls[] = {
proc_priv_sc,
shm_create_sc,
shm_delete_sc,
+ object_create_sc, //10
+ object_owned_sc,
+ object_close_sc,
+ request_get_sc,
+ request_has_sc,
+ request_answer_sc, //15
+ request_mapShm_sc,
+ request_sc,
+ send_msg_sc,
0 };