summaryrefslogtreecommitdiffstats
path: root/api
diff options
context:
space:
mode:
authorJon Santmyer <jon@jonsantmyer.com>2026-10-07 17:37:26 -0400
committerJon Santmyer <jon@jonsantmyer.com>2026-10-07 17:37:26 -0400
commit434ddcd907832b1febc7d70e4faa52109c7eb3bd (patch)
tree00c1ade91f9806d831f10e6006732b294e73f613 /api
parent8d48bbd9746228b63bafa5f92b621998d7d8f3d3 (diff)
downloadjove-kernel-434ddcd907832b1febc7d70e4faa52109c7eb3bd.tar.gz
jove-kernel-434ddcd907832b1febc7d70e4faa52109c7eb3bd.tar.bz2
jove-kernel-434ddcd907832b1febc7d70e4faa52109c7eb3bd.zip
add memory region object for better memory managment
Diffstat (limited to 'api')
-rw-r--r--api/init.h2
-rw-r--r--api/obj.h3
-rw-r--r--api/syscall.h43
3 files changed, 47 insertions, 1 deletions
diff --git a/api/init.h b/api/init.h
index e92c910..3458ca1 100644
--- a/api/init.h
+++ b/api/init.h
@@ -8,7 +8,7 @@ enum {
ROOTDIR_DIR_I,
ROOTDIR_PROCESSORS_I,
ROOTDIR_PAGEDIR_I,
- ROOTDIR_UNTYPED_I,
+ ROOTDIR_FREEMEMORY_I,
ROOTDIR_HWMEMORY_I,
ROOTDIR_PCB_I,
ROOTDIR_INTERRUPTS_I,
diff --git a/api/obj.h b/api/obj.h
index 6e9ddc6..29238c1 100644
--- a/api/obj.h
+++ b/api/obj.h
@@ -3,6 +3,8 @@
#include <stdint.h>
+typedef unsigned char objtype_t;
+
enum
{
JOVE_OBJ_NONE = 0,
@@ -10,6 +12,7 @@ enum
JOVE_OBJ_OBJDIR,
JOVE_OBJ_PAGEDIR,
JOVE_OBJ_PROCESSOR,
+ JOVE_OBJ_REGION,
JOVE_OBJ_SHMEMORY,
JOVE_OBJ_INT_HANDLE,
JOVE_OBJ_PCB,
diff --git a/api/syscall.h b/api/syscall.h
index 2502621..3f9d115 100644
--- a/api/syscall.h
+++ b/api/syscall.h
@@ -124,6 +124,49 @@ struct syscall_pagedir_unmap
objpath_part_t none_path[];
};
+/**JOVE_OBJ_REGION syscalls.
+ * */
+
+enum
+{
+ _SYSCALL_REGION_NONE = 0,
+ SYSCALL_REGION_ADDRESS,
+ SYSCALL_REGION_TOTAL_PAGES,
+ SYSCALL_REGION_FREE_PAGES,
+ SYSCALL_REGION_ALLOC,
+ SYSCALL_REGION_SPLIT,
+ SYSCALL_REGION_RELEASE,
+};
+
+#define SYSCALL_PERM_REGION_GETTERS (JOVE_PERM_READ)
+#define SYSCALL_PERM_REGION_ALLOC (JOVE_PERM_WRITE)
+#define SYSCALL_PERM_REGION_SPLIT (JOVE_PERM_WRITE | JOVE_PERM_MUTATE)
+#define SYSCALL_PERM_REGION_MERGE (JOVE_PERM_WRITE | JOVE_PERM_MUTATE)
+
+#define SYSCALL_PERM_REGION_ALLOC_TGT (JOVE_PERM_MUTATE)
+#define SYSCALL_PERM_REGION_SPLIT_TGT (JOVE_PERM_MUTATE)
+#define SYSCALL_PERM_REGION_MERGE_TGT (JOVE_PERM_WRITE | JOVE_PERM_MUTATE)
+
+struct syscall_region_alloc
+{
+ size_t alloc_pages;
+ objpath_part_t dest_pathlen;
+ objpath_part_t dest_path[];
+};
+
+struct syscall_region_split
+{
+ size_t split_pages;
+ objpath_part_t dest_pathlen;
+ objpath_part_t dest_path[];
+};
+
+struct syscall_region_merge
+{
+ objpath_part_t dest_pathlen;
+ objpath_part_t dest_path[];
+};
+
/**JOVE_OBJ_PCB syscalls.
* */