diff options
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 |
