refactor(mmu): replace bool-heavy map_range with Mapping struct and MapFlags builders

This commit is contained in:
2026-10-18 02:41:27 +02:00
parent 896c78088a
commit 7df3034fca
3 changed files with 108 additions and 36 deletions

View File

@@ -45,9 +45,12 @@ impl Platform for RiscVPlatform {
fn configure_protection(&mut self, process: ProcessId, regions: &[MemoryRegion]) {
let pt = self.ensure_page_table(process);
for region in regions {
let base_pa = region.base().raw();
let pages = region.size().value() as usize;
mmu::map_range(pt, base_pa, base_pa, pages, true, true, true, true, false);
mmu::map(pt, mmu::Mapping {
va: region.base().raw(),
pa: region.base().raw(),
pages: region.size().value() as usize,
flags: mmu::MapFlags::user(true, true, true),
});
}
}
@@ -107,11 +110,15 @@ impl Platform for RiscVPlatform {
permissions: PermissionSet,
) {
let pt = self.ensure_page_table(process);
let pa = base.raw();
let pages = size.value() as usize;
let read = permissions.allows(Permission::Read);
let write = permissions.allows(Permission::Write);
let exec = permissions.allows(Permission::Execute);
mmu::map_range(pt, pa, pa, pages, read, write, exec, true, false);
mmu::map(pt, mmu::Mapping {
va: base.raw(),
pa: base.raw(),
pages: size.value() as usize,
flags: mmu::MapFlags::user(
permissions.allows(Permission::Read),
permissions.allows(Permission::Write),
permissions.allows(Permission::Execute),
),
});
}
}