diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-09-05 20:24:13 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-09-05 20:24:13 -0400 |
| commit | 779b7fc1fe91e5a355b6e15de882d46b26ab2270 (patch) | |
| tree | c62da25a0a0b02488550e856921350fd94668c2b /sys/syscall.h | |
| parent | 73cbb23130f634bf52ac92da063efd3e6016f8ee (diff) | |
| download | jove-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.h | 43 |
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 |
