use actually available memory for memory manager

This commit is contained in:
Tunacan 2021-08-23 14:57:15 +03:00
parent fda9f4b9dd
commit 2219635e99
2 changed files with 16 additions and 11 deletions

View file

@ -117,12 +117,18 @@ void _start(struct stivale2_struct *stivale2_struct) {
printf("Framebuffer | addr: %#lX, width: %d, height: %d, depth: %d, pitch: %d\n", (usize)framebuffer->address, framebuffer->width, framebuffer->height, framebuffer->depth, framebuffer->pitch);
u64 total_memory = 0;
u64 total_memory, largest_usable_base, largest_usable_size;
for (u64 i = 0; i < tag_mmap->entries; i++) {
struct stivale2_mmap_entry entry = tag_mmap->memmap[i];
char *entry_name;
switch (entry.type) {
case STIVALE2_MMAP_USABLE: entry_name = "Usable"; break;
case STIVALE2_MMAP_USABLE:
entry_name = "Usable";
if (entry.length > largest_usable_size) {
largest_usable_base = entry.base;
largest_usable_size = entry.length;
}
break;
case STIVALE2_MMAP_RESERVED: entry_name = "Reserved"; break;
case STIVALE2_MMAP_ACPI_RECLAIMABLE: entry_name = "ACPI Reclaimable"; break;
case STIVALE2_MMAP_ACPI_NVS: entry_name = "ACPI NVS"; break;
@ -137,6 +143,13 @@ void _start(struct stivale2_struct *stivale2_struct) {
}
printf("Total memory: %ld KiB\n", total_memory / 1024);
//printf("\"\"\"Used\"\"\" memory: %ld B\n", (_kernel_end - _kernel_start));
printf("Memory map entry chosen for memory manager | base: %#lX, length: %ld KiB\n", largest_usable_base, largest_usable_size / 1024);
mem_populate_blocks(largest_usable_base);
if (mem_test_mm()) {
printf("memory manager test passed\n");
}
printf("Preparing interrupts... ");
pic_init();
@ -162,14 +175,6 @@ void _start(struct stivale2_struct *stivale2_struct) {
usize start_mem_addr = (usize)_start;
printf("_start memory address: %#lX\n", start_mem_addr);
mem_populate_blocks(start_mem_addr + 0x42069); /* TODO: pick an actual known free memory location instead of this random one */
/*
if (mem_test_mm()) {
printf("memory manager test passed\n");
}
*/
printf("----------\n");
printf("hello yes");

View file

@ -1,5 +1,5 @@
#include <mem/mem.h>
#include <stdio.h>
#include <std/stdio.h>
struct mem_block mem_blocks[MEM_BLOCK_LIST_SIZE];