#ifndef _JOVE_SYS_SYSCALL_H #define _JOVE_SYS_SYSCALL_H 1 #include "hal/obj.h" #include struct syscall_header { uint16_t callid; uint16_t pathlen; uint16_t path[]; }; #define SYSCALL_FUNCTION_ARGS \ 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.*/ typedef int (*syscall_handle_t)(SYSCALL_FUNCTION_ARGS); int _syscall_handle_generic(SYSCALL_FUNCTION_ARGS); int _syscall_handle_arch(SYSCALL_FUNCTION_ARGS); #define SYSCALL_VTT_WRITE 0 struct syscall_vtt_write { size_t len; char data[]; }; int _syscall_handle_vtt(SYSCALL_FUNCTION_ARGS); #endif