Commit 55d156d8 by triazo

Add function to ensure a given page is mapped

parent 37f5b7d8
Showing with 16 additions and 0 deletions
......@@ -144,6 +144,21 @@ page_directory_entry* mem_init_kern_tables(multiboot_memory_map* mmap, multiboot
return kern_page_dir;
}
// page_map takes in a virtual address and a directory, and ensures
// that that address points to valid memory
void page_map(page_directory_entry[] pgdir, void* page_start)
{
if (pgdir[page_start>>22] & 0xfffff == 0)
{
pgdir[page_start>>22] |= page_new_table();
}
if (pgdir[page_start>>22][(page_start>>12)%1024] & 0xfffff == 0)
{
pgdir[page_start>>22][(page_start>>12)%1024] |= page_allocate();
}
}
page_directory_entry* page_new_directory()
{
page_directory_entry* pgdir = (page_directory_entry*) page_allocate();
......
......@@ -33,6 +33,7 @@ extern char _kernel_end[];
// Allocation of pages
void* page_allocate();
void page_free(void* page_start);
void page_map(page_directory_entry[] pgdir, void* page_start);
// Initilization
page_directory_entry* mem_init_kern_tables(multiboot_memory_map* mmap, multiboot_memory_map* mmap_end);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment