diff options
Diffstat (limited to 'kernel/mm/memory_map.c')
| -rw-r--r-- | kernel/mm/memory_map.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/kernel/mm/memory_map.c b/kernel/mm/memory_map.c index 2a8f47b..448cb29 100644 --- a/kernel/mm/memory_map.c +++ b/kernel/mm/memory_map.c @@ -23,8 +23,11 @@ #include <kernel/halt.h> #include <libk/stdio.h> +#include <mm/memory_map.h> #include <mm/multiboot.h> +free_memory_regions_t free_memory_regions = { 0 }; + ALWAYS_INLINE static char * memory_map_fetch_type(multiboot_memory_map_t *mmap) { @@ -72,8 +75,12 @@ memory_map_load(multiboot_info_t *multiboot_info) = (multiboot_memory_map_t *) (multiboot_info->mmap_addr + i); total_mem += mmap->len_low; - if (mmap->type == MULTIBOOT_MEMORY_AVAILABLE) + if (mmap->type == MULTIBOOT_MEMORY_AVAILABLE) { + free_memory_regions.region_list[free_memory_regions.n_regions] = mmap; + free_memory_regions.n_regions++; + total_available_mem += mmap->len_low; + } printk("mm", "start: 0x%.08x | length: 0x%.08x | type: %s", @@ -85,3 +92,9 @@ memory_map_load(multiboot_info_t *multiboot_info) printk("mm", "Total Memory: %lu MiB", total_mem / MiB); printk("mm", "Total Available Memory: %lu MiB", total_available_mem / MiB); } + +free_memory_regions_t * +memory_map_get_free_regions(void) +{ + return &free_memory_regions; +} |
