From e1e772dca5291dd5e5de085b9d41e266896dceb3 Mon Sep 17 00:00:00 2001 From: Paul Pan Date: Mon, 17 Jun 2024 00:44:29 +0800 Subject: [PATCH] fix: uapi: add missing conversions between LookupFailure and SysError --- uapi/src/error.rs | 2 +- uapi/src/fault.rs | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/uapi/src/error.rs b/uapi/src/error.rs index 5d77d76..3ed3c5a 100644 --- a/uapi/src/error.rs +++ b/uapi/src/error.rs @@ -7,7 +7,7 @@ pub enum SysError { RangeError, // Untyped NotMapped, // Frame AlreadyMapped, // Frame - MissingEntry, // Frame + MissingEntry, // CNode, Frame } pub type SysResult = Result; diff --git a/uapi/src/fault.rs b/uapi/src/fault.rs index 8c0a05a..8173e54 100644 --- a/uapi/src/fault.rs +++ b/uapi/src/fault.rs @@ -1,3 +1,4 @@ +use crate::error::SysError; use utils::addr::VirtAddr; #[derive(Clone, Copy, Debug)] @@ -17,6 +18,17 @@ pub enum LookupFailure { }, } +impl From for SysError { + fn from(e: LookupFailure) -> SysError { + match e { + LookupFailure::InvalidRoot => SysError::MissingEntry, + LookupFailure::MissingCapability { .. } => SysError::MissingEntry, + LookupFailure::DepthMismatch { .. } => SysError::InvalidArgument, + LookupFailure::GuardMismatch { .. } => SysError::InvalidArgument, + } + } +} + #[derive(Clone, Copy, Debug)] pub struct CapFault { address: usize,