diff options
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. * */ |
