pub struct FrameView<C: PageTableConfig> {
pub ancestor_chain: Map<int, IntermediatePageTableEntryView<C>>,
pub leaf: LeafPageTableEntryView<C>,
}Fields§
§ancestor_chain: Map<int, IntermediatePageTableEntryView<C>>A map from the ancestor frame level to the PTE that the ancestor maps to its child.
leaf: LeafPageTableEntryView<C>The view of the page table leaf entry
Trait Implementations§
Source§impl<C: PageTableConfig> Inv for FrameView<C>
impl<C: PageTableConfig> Inv for FrameView<C>
Source§open spec fn inv(self) -> bool
open spec fn inv(self) -> bool
{
&&& pa_is_valid_pt_address(self.leaf.map_to_pa)
&&& level_is_in_range(self.leaf.level as int)
&&& self.leaf.map_va % (page_size_spec((self.leaf.level + 1) as PagingLevel) as int)
== 0
&&& forall |ancestor_level: int| {
#[trigger] self.ancestor_chain.contains_key(ancestor_level)
==> {
&&& level_is_in_range(ancestor_level)
&&& self.leaf.level < ancestor_level
&&& self.ancestor_chain[ancestor_level].inv()
&&& self.ancestor_chain[ancestor_level].level == ancestor_level
&&& if ancestor_level == self.leaf.level + 1 {
self.ancestor_chain[ancestor_level].map_to_pa == self.leaf.map_to_pa
} else {
true
}
&&& forall |other_ancestor_level: int| {
#[trigger] self.ancestor_chain.contains_key(other_ancestor_level)
==> {
||| other_ancestor_level == ancestor_level
||| self.ancestor_chain[other_ancestor_level]
!= self.ancestor_chain[ancestor_level]
}
}
}
}
}Auto Trait Implementations§
impl<C> Freeze for FrameView<C>
impl<C> RefUnwindSafe for FrameView<C>where
C: RefUnwindSafe,
impl<C> Send for FrameView<C>
impl<C> Sync for FrameView<C>
impl<C> Unpin for FrameView<C>where
C: Unpin,
impl<C> UnwindSafe for FrameView<C>where
C: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more