Fixed size counting in RangeAllocator

Which was displaying VERY wrong sizes beforehand. (Number of regions * 4096 instead of number of bytes)
This commit is contained in:
apio 2022-09-07 20:01:44 +02:00
parent b4484e951d
commit 929962efc9
2 changed files with 9 additions and 4 deletions

View File

@ -44,6 +44,11 @@ extern "C" void _start()
Memory::walk_memory_map(); Memory::walk_memory_map();
kinfoln("System memory: %ld KB", Memory::get_system() / 1024);
kinfoln(" Free memory : %ld KB", kernelPMM.get_free() / 1024);
kinfoln(" Used memory : %ld KB", kernelPMM.get_used() / 1024);
kinfoln(" Reserved memory : %ld KB", kernelPMM.get_reserved() / 1024);
GDT::load(); GDT::load();
kinfoln("Loaded GDT"); kinfoln("Loaded GDT");
@ -60,7 +65,7 @@ extern "C" void _start()
kinfoln("Prepared PIC"); kinfoln("Prepared PIC");
PIT::initialize(1000); // 1000 times per second, 1 time per millisecond PIT::initialize(200); // 200 times per second
kinfoln("Prepared PIT"); kinfoln("Prepared PIT");

View File

@ -36,11 +36,11 @@ void RangeAllocator::init_from_mmap()
for (uint64_t i = 0; i < mmap_entries; i++) for (uint64_t i = 0; i < mmap_entries; i++)
{ {
uint64_t index = MMapEnt_Ptr(ptr) / 4096; uint64_t index = MMapEnt_Ptr(ptr) / 4096;
if (!MMapEnt_IsFree(ptr)) { reserved_mem += 4096; } if (!MMapEnt_IsFree(ptr)) { reserved_mem += MMapEnt_Size(ptr); }
else else
{ {
free_mem += 4096; free_mem += MMapEnt_Size(ptr);
bitmap_set(index, false); for (uint64_t i = 0; i < (MMapEnt_Size(ptr) / 4096); i++) { bitmap_set(index + i, false); }
} }
ptr++; ptr++;
} }