mmgr.c compatibility with changes to libmalloc

This commit is contained in:
2023-03-03 04:52:26 -06:00
parent f8cfca588e
commit f66810d6ad

View File

@@ -33,7 +33,16 @@ int free_pages(physaddr_t location, size_t size)
physaddr_t reserve_page() physaddr_t reserve_page()
{ {
return reserve_region(&page_map, page_size); unsigned long loc = reserve_region(&page_map, page_size);
if(loc == NOMEM)
{
return ENOMEM;
}
else
{
printf("Reserved %08x\n", loc);
return loc;
}
} }
int free_page(physaddr_t location) int free_page(physaddr_t location)
@@ -64,13 +73,15 @@ error_t initialize_page_map(memory_map_t *map, void *base, size_t memory_size, u
memory_size = 1 << llog2(memory_size); memory_size = 1 << llog2(memory_size);
page_map.block_size = block_size; page_map.block_size = block_size;
page_map.block_bits = 1;
page_map.offset = 0;
page_map.cache = page_map_cache; page_map.cache = page_map_cache;
page_map.cache_capacity = MAX_CACHE_SIZE; page_map.cache_capacity = MAX_CACHE_SIZE;
page_map.bitmap = (unsigned long*) base; page_map.bitmap = (unsigned long*) base;
/* Allocate pages for bitmap */ /* Allocate pages for bitmap */
int pages_mapped = 0; int pages_mapped = 0;
int pages_needed = (bitmap_size(map, block_size) + page_size - 1) / page_size; int pages_needed = (bitmap_size(map, block_size, 1) + page_size - 1) / page_size;
for(int i = 0; i < map->size && (pages_mapped < pages_needed); i++) for(int i = 0; i < map->size && (pages_mapped < pages_needed); i++)
{ {
if(map->array[i].type != M_AVAILABLE) if(map->array[i].type != M_AVAILABLE)
@@ -107,7 +118,7 @@ error_t initialize_page_map(memory_map_t *map, void *base, size_t memory_size, u
} }
} }
if(initialize_physical_heap(&page_map, map)) if(initialize_heap(&page_map, map, NULL))
{ {
return ENOMEM; return ENOMEM;
} }