mirror of
https://github.com/panpaul/tiny_os
synced 2024-09-20 09:45:19 +08:00
chore: objects/cnode: adapt to new uapi
This commit is contained in:
parent
fb94285028
commit
d36c534a92
@ -3,7 +3,7 @@ use super::{
|
|||||||
Cap, KernelObject,
|
Cap, KernelObject,
|
||||||
};
|
};
|
||||||
use crate::arch::layout::mmap_phys_to_virt;
|
use crate::arch::layout::mmap_phys_to_virt;
|
||||||
use uapi::{cap::ObjectType, error::CapFault};
|
use uapi::{cap::ObjectType, fault::LookupFailure};
|
||||||
use utils::addr::{AddressOps, PhysAddr};
|
use utils::addr::{AddressOps, PhysAddr};
|
||||||
use utils::MASK;
|
use utils::MASK;
|
||||||
|
|
||||||
@ -89,7 +89,7 @@ impl<'a> CNodeCap<'a> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn resolve_address_bits(&self, cap_ptr: usize, n_bits: usize) -> Result<&CapEntry, CapFault> {
|
pub fn resolve_address_bits(&self, cap_ptr: usize, n_bits: usize) -> Result<&CapEntry, LookupFailure> {
|
||||||
let mut bits_remaining = n_bits;
|
let mut bits_remaining = n_bits;
|
||||||
let mut slot = self.cte;
|
let mut slot = self.cte;
|
||||||
|
|
||||||
@ -102,7 +102,7 @@ impl<'a> CNodeCap<'a> {
|
|||||||
assert_ne!(level_bits, 0);
|
assert_ne!(level_bits, 0);
|
||||||
|
|
||||||
if level_bits > bits_remaining {
|
if level_bits > bits_remaining {
|
||||||
return Err(CapFault::DepthMismatch {
|
return Err(LookupFailure::DepthMismatch {
|
||||||
bits_found: level_bits,
|
bits_found: level_bits,
|
||||||
bits_left: bits_remaining,
|
bits_left: bits_remaining,
|
||||||
});
|
});
|
||||||
@ -110,7 +110,7 @@ impl<'a> CNodeCap<'a> {
|
|||||||
|
|
||||||
let get_guard = || (cap_ptr >> (bits_remaining - guard_bits)) & MASK!(guard_bits);
|
let get_guard = || (cap_ptr >> (bits_remaining - guard_bits)) & MASK!(guard_bits);
|
||||||
if guard_bits > bits_remaining || get_guard() != cap_guard {
|
if guard_bits > bits_remaining || get_guard() != cap_guard {
|
||||||
return Err(CapFault::GuardMismatch {
|
return Err(LookupFailure::GuardMismatch {
|
||||||
bits_left: bits_remaining,
|
bits_left: bits_remaining,
|
||||||
guard_found: cap_guard,
|
guard_found: cap_guard,
|
||||||
guard_size: guard_bits,
|
guard_size: guard_bits,
|
||||||
@ -128,7 +128,7 @@ impl<'a> CNodeCap<'a> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if CNodeCap::try_from(slot).is_err() {
|
if CNodeCap::try_from(slot).is_err() {
|
||||||
return Err(CapFault::InvalidRoot);
|
return Err(LookupFailure::InvalidRoot);
|
||||||
}
|
}
|
||||||
Ok(slot)
|
Ok(slot)
|
||||||
}
|
}
|
||||||
@ -227,7 +227,7 @@ mod tests {
|
|||||||
info!("Testing invalid depth (1)");
|
info!("Testing invalid depth (1)");
|
||||||
let result = root.resolve_address_bits(0x96, 8 - 1);
|
let result = root.resolve_address_bits(0x96, 8 - 1);
|
||||||
match result {
|
match result {
|
||||||
Err(CapFault::DepthMismatch { bits_found, bits_left }) => {
|
Err(LookupFailure::DepthMismatch { bits_found, bits_left }) => {
|
||||||
assert_eq!(bits_found, 8);
|
assert_eq!(bits_found, 8);
|
||||||
assert_eq!(bits_left, 7);
|
assert_eq!(bits_left, 7);
|
||||||
},
|
},
|
||||||
@ -240,7 +240,7 @@ mod tests {
|
|||||||
info!("Testing invalid depth (2)");
|
info!("Testing invalid depth (2)");
|
||||||
let result = root.resolve_address_bits(0x4b31 >> 1, 15 - 1);
|
let result = root.resolve_address_bits(0x4b31 >> 1, 15 - 1);
|
||||||
match result {
|
match result {
|
||||||
Err(CapFault::DepthMismatch { bits_found, bits_left }) => {
|
Err(LookupFailure::DepthMismatch { bits_found, bits_left }) => {
|
||||||
assert_eq!(bits_found, 7);
|
assert_eq!(bits_found, 7);
|
||||||
assert_eq!(bits_left, 6);
|
assert_eq!(bits_left, 6);
|
||||||
},
|
},
|
||||||
@ -255,7 +255,7 @@ mod tests {
|
|||||||
info!("Testing guard mismatch");
|
info!("Testing guard mismatch");
|
||||||
let result = root.resolve_address_bits(0x4b71, 15);
|
let result = root.resolve_address_bits(0x4b71, 15);
|
||||||
match result {
|
match result {
|
||||||
Err(CapFault::GuardMismatch {
|
Err(LookupFailure::GuardMismatch {
|
||||||
bits_left,
|
bits_left,
|
||||||
guard_found,
|
guard_found,
|
||||||
guard_size,
|
guard_size,
|
||||||
@ -273,7 +273,7 @@ mod tests {
|
|||||||
info!("Testing extra bits");
|
info!("Testing extra bits");
|
||||||
let result = root.resolve_address_bits(0x96 << 1, 8 + 1);
|
let result = root.resolve_address_bits(0x96 << 1, 8 + 1);
|
||||||
match result {
|
match result {
|
||||||
Err(CapFault::DepthMismatch { bits_found, bits_left }) => {
|
Err(LookupFailure::DepthMismatch { bits_found, bits_left }) => {
|
||||||
assert_eq!(bits_found, 7);
|
assert_eq!(bits_found, 7);
|
||||||
assert_eq!(bits_left, 1);
|
assert_eq!(bits_left, 1);
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user