diff options
| author | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-07 17:37:26 -0400 |
|---|---|---|
| committer | Jon Santmyer <jon@jonsantmyer.com> | 2026-10-07 17:37:26 -0400 |
| commit | 434ddcd907832b1febc7d70e4faa52109c7eb3bd (patch) | |
| tree | 00c1ade91f9806d831f10e6006732b294e73f613 /api | |
| parent | 8d48bbd9746228b63bafa5f92b621998d7d8f3d3 (diff) | |
| download | jove-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.h | 2 | ||||
| -rw-r--r-- | api/obj.h | 3 | ||||
| -rw-r--r-- | api/syscall.h | 43 |
3 files changed, 47 insertions, 1 deletions
@@ -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, @@ -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. * */ |
