aboutsummaryrefslogtreecommitdiff
path: root/kernel/inc/mm.h
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/inc/mm.h')
-rw-r--r--kernel/inc/mm.h13
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