From 548506392b789f58b1556a6ffca917441e1d89fd Mon Sep 17 00:00:00 2001 From: Jon Santmyer Date: Tue, 13 Oct 2026 22:31:43 -0400 Subject: ipc functions. work on process spawning --- hal/memory.h | 21 +++++++++++++++++++++ hal/obj.h | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) (limited to 'hal') diff --git a/hal/memory.h b/hal/memory.h index 1aec7e9..9e799c0 100644 --- a/hal/memory.h +++ b/hal/memory.h @@ -34,6 +34,20 @@ typedef struct jove_obj_untyped #define JOVE_UNTYPED_MINSIZE 0x10 #define JOVE_SMHEM_MAXPAGES 0xFFF +enum { + JOVE_MAPPING_TYPE_UNTYPED = 0, + JOVE_MAPPING_TYPE_SHMEM, + JOVE_MAPPING_TYPE_MESSAGE +}; + +extern virtaddr_t __syscall_stack_guard; +extern virtaddr_t __syscall_stack; +extern virtaddr_t __interrupt_stack_guard; +extern virtaddr_t __interrupt_stack; + +extern virtaddr_t *__syscall_stack_mapping; +extern virtaddr_t *__interrupt_stack_mapping; + void mem_setup_regions(void); physaddr_t phys_fromvirt(virtaddr_t virt); @@ -65,8 +79,15 @@ void pagedir_invlpg(virtaddr_t vptr); virtaddr_t *pagedir_get_mapping( jove_owned_obj_t *pagedir, virtaddr_t vptr); +size_t pagedir_mapping_get_pfn(virtaddr_t *mapping); virtaddr_t pagedir_ident_from_mapping(virtaddr_t *mapping); +bool pagedir_mapping_is_present(virtaddr_t *mapping); + +void pagedir_mapping_set_pfn(virtaddr_t *mapping, size_t pfn); void pagedir_mapping_set_present(virtaddr_t *mapping, bool present); +void pagedir_mapping_set_writeable(virtaddr_t *mapping, bool rw); +void pagedir_mapping_set_user(virtaddr_t *mapping, bool user); +void pagedir_mapping_set_type(virtaddr_t *mapping, int type); int pagedir_map_untyped_frame( jove_owned_obj_t *tgt, jove_perm_obj_t *untyped_obj, diff --git a/hal/obj.h b/hal/obj.h index 61ba968..befbc24 100644 --- a/hal/obj.h +++ b/hal/obj.h @@ -12,7 +12,7 @@ typedef struct jove_objdir { - jove_obj_t entries[JOVE_OBJDIR_ENTRIES]; + jove_obj_t entries[OBJDIR_ENTRIES]; } jove_objdir_t; /*Locks the mutex of the kernel object provided. Returns the locked version. */ -- cgit v1.2.3