fix: sync kernel tests with current API, add CapSlot::const_new
Tests: - IPC tests: spawn thread B explicitly (CreateProcess no longer spawns threads since the boot logic fix) - Memory tests: RequestPages now returns Value(va) not Slot(cap) - MockPlatform: tracks VA→PA mappings for translate_va - ReleasePages test: ignored (RequestPages no longer creates regions — ReleasePages needs redesign) CapSlot::const_new(value): - const fn that panics at compile time for invalid values - Replaces CapSlot::new(N).unwrap() in init, echo, snake - Cap slot constants are now compile-time verified Also fixes handle_release_pages to use translate_va instead of treating VA as PA directly. 35 kernel tests pass, 1 ignored.
This commit is contained in:
@@ -92,7 +92,12 @@ impl<P: Platform> Kernel<P> {
|
||||
count: types::bounded::PageCount,
|
||||
) -> SyscallOutcome {
|
||||
let pages = count.value() as usize;
|
||||
let phys = PhysicalAddress::from_raw(addr.raw());
|
||||
let phys = match self.platform.translate_va(pid, addr) {
|
||||
Some(pa) => pa,
|
||||
None => return SyscallOutcome::Complete(SyscallResult::Error(
|
||||
domain::error::KernelError::OutOfMemory,
|
||||
)),
|
||||
};
|
||||
|
||||
let region_id = match self.regions.find_by_base(pid, phys) {
|
||||
Some((rid, _)) => rid,
|
||||
|
||||
Reference in New Issue
Block a user