From f66810d6adc6744eee5dfb457988b3008744c319 Mon Sep 17 00:00:00 2001 From: Nathan Giddings Date: Fri, 3 Mar 2023 04:52:26 -0600 Subject: [PATCH] mmgr.c compatibility with changes to libmalloc --- src/mmgr.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/mmgr.c b/src/mmgr.c index cab97df..511c26d 100644 --- a/src/mmgr.c +++ b/src/mmgr.c @@ -33,7 +33,16 @@ int free_pages(physaddr_t location, size_t size) 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) @@ -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); page_map.block_size = block_size; + page_map.block_bits = 1; + page_map.offset = 0; page_map.cache = page_map_cache; page_map.cache_capacity = MAX_CACHE_SIZE; page_map.bitmap = (unsigned long*) base; /* Allocate pages for bitmap */ 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++) { 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; }