Nucleus
Barry Virtual Memory Regions and namespace 381dc7b (3 years, 2 months ago)
diff --git a/include/nucleus/memory.h b/include/nucleus/memory.h
index 542bc77..5395278 100644
--- a/include/nucleus/memory.h
+++ b/include/nucleus/memory.h
@@ -15,6 +15,8 @@ typedef uint32_t page_t;
typedef uint32_t page_table_t;
typedef uint32_t page_dir_t;
typedef struct Page Page;
+typedef struct VirtualMemory VirtualMemory;
+typedef struct VMRegion VMRegion;
/* Page Table Entry flags */
enum PTEFlag {
@@ -39,6 +41,8 @@ enum PDEFlag {
};
extern ObjectType pageType;
+extern ObjectType virtualMemoryType;
+extern ObjectType vmRegionType;
/* Flush Translation Lookaside Buffer */
static inline void
@@ -51,6 +55,7 @@ uintptr_t alloc_frame(void);
void free_frame(uintptr_t frame);
void init_frames(size_t memMapSize, void *memMap);
+page_t get_page(uintptr_t vaddr);
void set_page(uintptr_t vaddr, page_t page);
page_dir_t clone_dir(void);
void init_paging(void);
@@ -61,6 +66,7 @@ void kfree(void *addr);
Page *create_page(ObjectList *cache, page_t frame, off_t offset);
Page *find_page(ObjectList *cache, off_t offset);
+void install_page(uintptr_t addr, Page *page, int prot);
void *map_page(Page *page);
int verify_access(const void *addr, size_t len, int prot);