pub type PageTableNode<C> = Frame<PageTablePageMeta<C>>;Expand description
A smart pointer to a page table node.
This smart pointer is an owner of a page table node. Thus creating and dropping it will affect the reference count of the page table node. If dropped it as the last reference, the page table node and subsequent children will be freed.
PageTableNode is read-only. To modify the page table node, lock and use
PageTableGuard.
Aliased Type§
#[repr(transparent)]pub struct PageTableNode<C> {
pub ptr: PPtr<MetaSlot>,
pub _marker: PhantomData<PageTablePageMeta<C>>,
}Fields§
§ptr: PPtr<MetaSlot>§_marker: PhantomData<PageTablePageMeta<C>>Implementations§
Source§impl<C: PageTableConfig> PageTableNode<C>
impl<C: PageTableConfig> PageTableNode<C>
Sourcepub exec fn level(&self) -> PagingLevel
pub exec fn level(&self) -> PagingLevel
with
Tracked(perm): Tracked <& PointsTo <MetaSlot,PageTablePageMeta <C>>>,requiresself.ptr.addr() == perm.addr(),self.ptr.addr() == perm.points_to.addr(),perm.is_init(),perm.wf(),Sourcepub exec fn alloc(level: PagingLevel) -> res : Self
pub exec fn alloc(level: PagingLevel) -> res : Self
with
Tracked(regions): Tracked <& mut MetaRegionOwners>,
->
owner: Tracked <OwnerSubtree <C>>,requireslevel <= NR_LEVELS(),old(regions).inv(),ensuresregions.inv(),Allocates a new empty page table node.