diff options
Diffstat (limited to 'kernel/mm/virtual_mm/virtual_mm.c')
-rw-r--r-- | kernel/mm/virtual_mm/virtual_mm.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/kernel/mm/virtual_mm/virtual_mm.c b/kernel/mm/virtual_mm/virtual_mm.c index 278a491..1e85e0c 100644 --- a/kernel/mm/virtual_mm/virtual_mm.c +++ b/kernel/mm/virtual_mm/virtual_mm.c @@ -18,6 +18,9 @@ #include <stdint.h> +#include <libk/stdio.h> + +#include <mm/physical_mm.h> #include <mm/virtual_mm.h> extern uint32_t kernel_start; @@ -25,3 +28,16 @@ extern uint32_t kernel_end; uint32_t page_directory[PAGE_DIRECTORY_SIZE]; uint32_t initial_page_table[PAGE_TABLE_SIZE]; + +bool +virtual_mm_allocate_page(uint32_t *pt_entry) +{ + void *ptr = physical_mm_allocate_block(); + if (!ptr) + return false; + + SET_FRAME(pt_entry, ptr); + ADD_ATTRIB(pt_entry, PTE_PRESENT); + + return true; +} |