Add find_free_pages function

This commit is contained in:
pjht 2019-05-04 10:52:38 -05:00
parent 6036151e0d
commit c679ae1bde
2 changed files with 9 additions and 3 deletions

View File

@ -43,8 +43,7 @@ void map_pages(void* virt_addr_ptr,void* phys_addr_ptr,int num_pages,char usr,ch
}
}
void* alloc_pages(int num_pages) {
void* phys_addr=pmem_alloc(num_pages);
uint32_t find_free_pages(int num_pages) {
uint32_t bmap_index;
uint32_t remaining_blks;
for(uint32_t i=1;i<131072;i++) {
@ -85,7 +84,12 @@ void* alloc_pages(int num_pages) {
if (remaining_blks!=0) {
klog("PANIC","Out of memory");
}
void* addr=(void*)(bmap_index<<12);
return bmap_index;
}
void* alloc_pages(int num_pages) {
void* phys_addr=pmem_alloc(num_pages);
void* addr=(void*)(find_free_pages(num_pages)<<12);
map_pages(addr,phys_addr,num_pages,1,1);
return addr;
}

View File

@ -13,4 +13,6 @@ void paging_init();
void* new_address_space();
void load_address_space(uint32_t cr3);
void* virt_to_phys(void* virt_addr);
uint32_t find_free_pages(int num_pages);
#endif