iterating over getModule in case we have more than 1 module

This commit is contained in:
user
2026-02-22 20:13:38 +01:00
parent 50a4189bde
commit c18bd3b4ac

View File

@@ -51,20 +51,28 @@ void PageFrameAllocator::init(){
//mark as unavailable //mark as unavailable
memory_map_entry = memory_map_start; memory_map_entry = memory_map_start;
while(memory_map_entry != 0){ while(memory_map_entry != 0){
uintptr_t start = (uintptr_t)memory_map_entry->getStartAddress(); uintptr_t start = (uintptr_t)memory_map_entry->getStartAddress();
uintptr_t end = (uintptr_t)memory_map_entry->getEndAddress(); uintptr_t end = (uintptr_t)memory_map_entry->getEndAddress();
bool available = memory_map_entry->isAvailable(); bool available = memory_map_entry->isAvailable();
if(!available) if(!available)
mark_pageframes(start, end, false); mark_pageframes(start, end, false);
memory_map_entry = memory_map_entry->getNext(); memory_map_entry = memory_map_entry->getNext();
} }
Multiboot::Module* mod = Multiboot::getModule(0); for (size_t i = 0; i < Multiboot::getModuleCount(); ++i) {
Multiboot::Module* mod = Multiboot::getModule(i);
if (!mod) continue;
mark_pageframes((uintptr_t)mod, (uintptr_t)mod + 1, false);
mark_pageframes((uintptr_t)mod->getStartAddress(),
(uintptr_t)mod->getEndAddress(),
false);
}
mark_pageframes((uintptr_t)mod, (uintptr_t)mod+1, false);
mark_pageframes((uintptr_t)mod->getStartAddress(), (uintptr_t)mod->getEndAddress(), false);
//mark other known regions as unavailable //mark other known regions as unavailable
mark_pageframes((uintptr_t)&___KERNEL_START___, (uintptr_t)&___KERNEL_END___, false); mark_pageframes((uintptr_t)&___KERNEL_START___, (uintptr_t)&___KERNEL_END___, false);