From 548506392b789f58b1556a6ffca917441e1d89fd Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Tue, 13 Oct 2026 22:31:43 -0400 Subject: ipc functions. work on process spawning --- api/syscall.h | 51 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 48 insertions(+), 3 deletions(-) (limited to 'api/syscall.h') diff --git a/api/syscall.h b/api/syscall.h index 54ff267..40fedd4 100644 --- a/api/syscall.h +++ b/api/syscall.h @@ -74,9 +74,31 @@ enum { _SYSCALL_OBJDIR_BADCALL = 0, SYSCALL_OBJDIR_OBJTYPE, + SYSCALL_OBJDIR_SWAP, + SYSCALL_OBJDIR_LINK, + SYSCALL_OBJDIR_ISLINK }; -#define SYSCALL_PERM_OBJDIR_OBJTYPE JOVE_PERM_READ +#define SYSCALL_PERM_OBJDIR_OBJTYPE (JOVE_PERM_READ) +#define SYSCALL_PERM_OBJDIR_SWAP (JOVE_PERM_WRITE) +#define SYSCALL_PERM_OBJDIR_LINK (JOVE_PERM_WRITE) + +#define SYSCALL_PERM_OBJDIR_SWAP_TGT (JOVE_PERM_WRITE) +#define SYSCALL_PERM_OBJDIR_LINK_TGT (JOVE_PERM_WRITE | JOVE_PERM_MUTATE) + +struct syscall_objdir_swap +{ + objpath_part_t index; + objpath_part_t other_path_length; + objpath_part_t other_path[]; +}; + +struct syscall_objdir_link +{ + objpath_part_t index; + objpath_part_t other_path_length; + objpath_part_t other_path[]; +}; /* JOVE_OBJ_PAGEDIR syscalls * */ @@ -183,17 +205,23 @@ enum SYSCALL_PCB_YIELD, SYSCALL_PCB_SEND, SYSCALL_PCB_RECV, + SYSCALL_PCB_SWAP, + SYSCALL_PCB_STACK, SYSCALL_PCB_READY, }; #define SYSCALL_PERM_PCB_PID (JOVE_PERM_READ) #define SYSCALL_PERM_PCB_YIELD (JOVE_PERM_WRITE) #define SYSCALL_PERM_PCB_SEND (JOVE_PERM_WRITE) -#define SYSCALL_PERM_PCB_RECV (JOVE_PERM_WRITE) -#define SYSCALL_PERM_PCB_READY (JOVE_PERM_WRITE | JOVE_PERM_MUTATE) +#define SYSCALL_PERM_PCB_RECV (JOVE_PERM_READ | JOVE_PERM_WRITE) +#define SYSCALL_PERM_PCB_SWAP (SYSCALL_PERM_PCB_SEND | SYSCALL_PERM_PCB_RECV) +#define SYSCALL_PERM_PCB_STACK (JOVE_PERM_WRITE | JOVE_PERM_MUTATE) +#define SYSCALL_PERM_PCB_READY (JOVE_PERM_ALL) #define SYSCALL_PERM_PCB_SEND_OBJDIR (JOVE_PERM_WRITE) #define SYSCALL_PERM_PCB_RECV_DST (JOVE_PERM_MUTATE) +#define SYSCALL_PERM_PCB_SWAP_OBJ (JOVE_PERM_MUTATE) +#define SYSCALL_PERM_PCB_STACK_OBJ (JOVE_PERM_WRITE | JOVE_PERM_MUTATE) struct syscall_pcb_yield { @@ -216,6 +244,23 @@ struct syscall_pcb_recv objpath_part_t recv_path[]; }; +struct syscall_pcb_swap +{ + pid_t swap_target; + uintmax_t send_timeout; + uintmax_t recv_timeout; + + objpath_part_t swap_path_length; + objpath_part_t swap_path[]; +}; + +struct syscall_pcb_stack +{ + char type; + objpath_part_t stack_path_length; + objpath_part_t stack_path[]; +}; + /**JOVE_OBJ_INITRD_FILE syscalls * */ -- cgit v1.2.3