diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-13 22:31:43 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-13 22:31:43 -0400 |
| commit | 548506392b789f58b1556a6ffca917441e1d89fd (patch) | |
| tree | 58e4b747446ea64e7951e523353f58510b3a8b2f /api/syscall.h | |
| parent | c5e3bb7917689bc9ed54fee23a143144fade802d (diff) | |
| download | jove-kernel-548506392b789f58b1556a6ffca917441e1d89fd.tar.gz jove-kernel-548506392b789f58b1556a6ffca917441e1d89fd.tar.bz2 jove-kernel-548506392b789f58b1556a6ffca917441e1d89fd.zip | |
ipc functions. work on process spawning
Diffstat (limited to 'api/syscall.h')
| -rw-r--r-- | api/syscall.h | 51 |
1 files changed, 48 insertions, 3 deletions
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 * */ |
