#include #include #include #include #include #include int _syscall_invoke_untyped_size(KernelObjectUntyped *untyped, size_t *bytes) { uint8_t *syscallData = __jove_syscall_ptr; int syscall_at = 0; size_t *syscall_bytes; SYSCALL_PAYLOAD_PUTOBJ(syscallData, syscall_at, untyped); SYSCALL_PAYLOAD_PUTL(syscallData, syscall_at, INVOKE_UNTYPED_SIZE, uint8_t); SYSCALL_PAYLOAD_SAVEPTR(syscallData, syscall_at, size_t, syscall_bytes); int status = _syscall_invoke(); *bytes = *syscall_bytes; return status; } int _syscall_invoke_untyped_split(KernelObjectUntyped *untyped, size_t bytes, KernelObjectUntyped *dest) { uint8_t *syscallData = __jove_syscall_ptr; int syscall_at = 0; SYSCALL_PAYLOAD_PUTOBJ(syscallData, syscall_at, untyped); SYSCALL_PAYLOAD_PUTL(syscallData, syscall_at, INVOKE_UNTYPED_SPLIT, uint8_t); SYSCALL_PAYLOAD_PUTOBJ(syscallData, syscall_at, dest); SYSCALL_PAYLOAD_PUTL(syscallData, syscall_at, bytes, size_t); return _syscall_invoke(); } int _syscall_invoke_untyped_alignment(KernelObjectUntyped *untyped, size_t *alignment) { uint8_t *syscallData = __jove_syscall_ptr; int syscall_at = 0; size_t *syscall_alignment; SYSCALL_PAYLOAD_PUTOBJ(syscallData, syscall_at, untyped); SYSCALL_PAYLOAD_PUTL(syscallData, syscall_at, INVOKE_UNTYPED_ALIGNMENT, uint8_t); SYSCALL_PAYLOAD_SAVEPTR(syscallData, syscall_at, size_t, syscall_alignment); int status = _syscall_invoke(); *alignment = *syscall_alignment; return status; }