summaryrefslogtreecommitdiffstats
path: root/api/syscall.h
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-10-13 22:31:43 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-10-13 22:31:43 -0400
commit548506392b789f58b1556a6ffca917441e1d89fd (patch)
tree58e4b747446ea64e7951e523353f58510b3a8b2f /api/syscall.h
parentc5e3bb7917689bc9ed54fee23a143144fade802d (diff)
downloadjove-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.h51
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
* */