feat: add Platform::map_shared and wire memory delegation to page mapping

This commit is contained in:
2026-10-18 01:30:23 +02:00
parent 4844b6c2d2
commit dcadb83088
3 changed files with 36 additions and 5 deletions

View File

@@ -39,10 +39,22 @@ impl<P: Platform> Kernel<P> {
Err(e) => return SyscallOutcome::Complete(SyscallResult::Error(e)),
};
match self.grant_cap(target_pid, resource, restricted) {
Ok(_) => SyscallOutcome::Complete(SyscallResult::Ok),
Err(e) => SyscallOutcome::Complete(SyscallResult::Error(e)),
if let Err(e) = self.grant_cap(target_pid, resource.clone(), restricted) {
return SyscallOutcome::Complete(SyscallResult::Error(e));
}
if let domain::resource::Resource::Memory(region_id) = &resource {
if let Some(region) = self.regions.get(*region_id) {
self.platform.map_shared(
target_pid,
region.base(),
region.size(),
restricted,
);
}
}
SyscallOutcome::Complete(SyscallResult::Ok)
}
pub(crate) fn handle_revoke(