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:
parent
b4484e951d
commit
929962efc9
@ -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");
|
||||||
|
|
||||||
|
@ -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++;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user