summaryrefslogtreecommitdiffstats
path: root/sys/syscall.h
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-09-05 20:24:13 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-09-05 20:24:13 -0400
commit779b7fc1fe91e5a355b6e15de882d46b26ab2270 (patch)
treec62da25a0a0b02488550e856921350fd94668c2b /sys/syscall.h
parent73cbb23130f634bf52ac92da063efd3e6016f8ee (diff)
downloadjove-kernel-779b7fc1fe91e5a355b6e15de882d46b26ab2270.tar.gz
jove-kernel-779b7fc1fe91e5a355b6e15de882d46b26ab2270.tar.bz2
jove-kernel-779b7fc1fe91e5a355b6e15de882d46b26ab2270.zip
working syscalls.
Diffstat (limited to 'sys/syscall.h')
-rw-r--r--sys/syscall.h43
1 files changed, 43 insertions, 0 deletions
diff --git a/sys/syscall.h b/sys/syscall.h
new file mode 100644
index 0000000..efd3f64
--- /dev/null
+++ b/sys/syscall.h
@@ -0,0 +1,43 @@
+#ifndef _JOVE_SYS_SYSCALL_H
+#define _JOVE_SYS_SYSCALL_H 1
+
+#include "hal/obj.h"
+#include <stdint.h>
+
+struct syscall_header
+{
+ uint16_t callid;
+ uint16_t pathlen;
+ uint16_t path[];
+};
+
+typedef int (*syscall_handle_t)(
+ jove_owned_obj_t*, //PCB object
+ jove_owned_obj_t*, //Objdir object
+ jove_owned_obj_t*, //Message object
+ jove_owned_obj_t*, //Target object
+ struct syscall_header*, //Syscall header
+ size_t, //How many bytes are left in the message
+ void*); //The bytes left in the message.
+
+int
+_syscall_handle_generic(
+ jove_owned_obj_t *pcb_obj,
+ jove_owned_obj_t *objdir,
+ jove_owned_obj_t *message_obj,
+ jove_owned_obj_t *target_obj,
+ struct syscall_header *header,
+ size_t bytes_left,
+ void *payload);
+
+int
+syscall_handle_arch(
+ jove_owned_obj_t *pcb_obj,
+ jove_owned_obj_t *objdir,
+ jove_owned_obj_t *message_obj,
+ jove_owned_obj_t *target_obj,
+ struct syscall_header *header,
+ size_t bytes_left,
+ void *payload);
+
+#endif