#include #include #include #include #include int _syscall_invoke_objdir_getmemb(KernelObjectDirectory *dir, uint8_t member, obj_type_t *result) { uint8_t *syscallData = __jove_syscall_ptr; int syscall_at = 0; obj_type_t *syscall_result; SYSCALL_PAYLOAD_PUTOBJ(syscallData, syscall_at, dir); SYSCALL_PAYLOAD_PUTL(syscallData, syscall_at, INVOKE_OBJDIR_GETMEMB, uint8_t); SYSCALL_PAYLOAD_PUTL(syscallData, syscall_at, member, uint8_t); SYSCALL_PAYLOAD_SAVEPTR(syscallData, syscall_at, obj_type_t, syscall_result); int status = _syscall_invoke(); *result = *syscall_result; return status; } int _syscall_invoke_objdir_lastmemb(KernelObjectDirectory *dir, uint8_t *result) { uint8_t *syscallData = __jove_syscall_ptr; int syscall_at = 0; uint8_t *syscall_result; SYSCALL_PAYLOAD_PUTOBJ(syscallData, syscall_at, dir); SYSCALL_PAYLOAD_PUTL(syscallData, syscall_at, INVOKE_OBJDIR_LASTMEMB, uint8_t); SYSCALL_PAYLOAD_SAVEPTR(syscallData, syscall_at, uint8_t, syscall_result); int status = _syscall_invoke(); *result = *syscall_result; return status; } int _syscall_invoke_objdir_move( KernelObjectDirectory *dir, uint8_t memb, KernelObjectDirectory *dest_dir, uint8_t dest_memb) { uint8_t *syscallData = __jove_syscall_ptr; int syscall_at = 0; SYSCALL_PAYLOAD_PUTOBJ(syscallData, syscall_at, dir); SYSCALL_PAYLOAD_PUTL(syscallData, syscall_at, INVOKE_OBJDIR_MOVE, uint8_t); SYSCALL_PAYLOAD_PUTL(syscallData, syscall_at, memb, uint8_t); size_t *dest_pathw = (size_t*)(syscallData + syscall_at); SYSCALL_PAYLOAD_PUTOBJ(syscallData, syscall_at, dest_dir); (*dest_pathw)++; SYSCALL_PAYLOAD_PUTL(syscallData, syscall_at, dest_memb, uint8_t); return _syscall_invoke(); }