diff options
Diffstat (limited to 'kernel/inc/mm.h')
-rw-r--r-- | kernel/inc/mm.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/kernel/inc/mm.h b/kernel/inc/mm.h index 00d9e4b..e680ab7 100644 --- a/kernel/inc/mm.h +++ b/kernel/inc/mm.h @@ -10,6 +10,8 @@ * Physical */ +u32 physical_alloc(u32 n); + /** * Virtual */ @@ -63,6 +65,10 @@ struct page_dir { union page_dir_entry entries[PAGE_COUNT]; } PACKED; +u32 virtual_to_physical(struct page_dir *dir, u32 vaddr); +void virtual_map(struct page_dir *dir, u32 vaddr, u32 paddr, u32 n, u8 user); +struct memory_range virtual_alloc(struct page_dir *dir, struct memory_range physical_range, + u32 flags); void paging_install(struct mem_info *mem_info); /** @@ -79,9 +85,14 @@ struct memory_range { u32 size; }; +struct memory_range memory_range_from_address(u32 base, u32 size); +struct memory_range memory_range_around_address(u32 base, u32 size); + struct page_dir *memory_dir_create(void); void memory_dir_switch(struct page_dir *dir); -void memory_alloc(struct page_dir *dir, u32 size, u32 flags, u32 *out); +// TODO: Remove these wrappers completely? +/* void memory_alloc(struct page_dir *dir, u32 size, u32 flags, u32 *out); */ +/* void memory_map(struct page_dir *dir, struct memory_range range, u32 flags); */ struct page_dir *memory_kernel_dir(void); #endif |