fix: bugs
This commit is contained in:
@@ -8,7 +8,6 @@ pub struct BitmapPMM {
|
||||
ref_counts: &'static mut [u16],
|
||||
total_pages: usize,
|
||||
used_pages: usize,
|
||||
/// Byte index hint: next search starts here to amortise O(N) scans.
|
||||
last_byte: usize,
|
||||
}
|
||||
|
||||
@@ -59,6 +58,7 @@ impl BitmapPMM {
|
||||
last_byte: 0,
|
||||
};
|
||||
|
||||
// Free all USABLE pages (gap pages not covered by any entry stay locked).
|
||||
for entry in mmap.entries() {
|
||||
if entry.entry_type == limine::memory_map::EntryType::USABLE {
|
||||
for addr in (entry.base..entry.base + entry.length).step_by(PAGE_SIZE as usize) {
|
||||
@@ -67,6 +67,7 @@ impl BitmapPMM {
|
||||
}
|
||||
}
|
||||
|
||||
// Metadata pages sit inside a USABLE region — lock them back.
|
||||
let meta_end = (meta_phys + total_meta_size as u64 + PAGE_SIZE - 1) & !(PAGE_SIZE - 1);
|
||||
for addr in (meta_phys..meta_end).step_by(PAGE_SIZE as usize) {
|
||||
pmm.lock_frame(PhysAddr(addr));
|
||||
|
||||
Reference in New Issue
Block a user