Merge branch 'master' of gitlab.ibr.cs.tu-bs.de:vss/teaching/ws25/v_bsb2/Gruppe_003
This commit is contained in:
@@ -65,21 +65,29 @@ 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, available);
|
mark_pageframes(start, end, available);
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
||||||
|
|||||||
Reference in New Issue
Block a user