pub struct PteAllocator<'a, PTE, Mapper, Error>{
pub mapper: &'a mut Mapper,
pub format: &'a PageFormat<'a, PTE>,
pub mask: Option<PTE>,
pub error: PhantomData<Error>,
}Expand description
The PteAllocator struct is an implementation of a crate::walker::PageWalkerMut used to
allocate pages and the underlying page tables for a given virtual address range. This is used
by the AddressSpace::allocate_range method.
Fields§
§mapper: &'a mut MapperThe page table mapper.
format: &'a PageFormat<'a, PTE>The page format.
mask: Option<PTE>The mask to set for pages.
error: PhantomData<Error>A marker for Error.
Trait Implementations§
Source§impl<'a, PTE, Mapper, Error> PageWalkerMut<PTE, Error> for PteAllocator<'a, PTE, Mapper, Error>
impl<'a, PTE, Mapper, Error> PageWalkerMut<PTE, Error> for PteAllocator<'a, PTE, Mapper, Error>
Source§fn read_pte(&self, phys_addr: PTE) -> Result<PTE, Error>
fn read_pte(&self, phys_addr: PTE) -> Result<PTE, Error>
Reads the PTE at the given physical address.
Source§fn write_pte(&mut self, phys_addr: PTE, value: PTE) -> Result<(), Error>
fn write_pte(&mut self, phys_addr: PTE, value: PTE) -> Result<(), Error>
Writes the PTE to the given physical address.
Source§fn handle_pte_hole(
&mut self,
index: usize,
_range: Range<usize>,
pte: &mut PTE,
) -> Result<(), Error>
fn handle_pte_hole( &mut self, index: usize, _range: Range<usize>, pte: &mut PTE, ) -> Result<(), Error>
Allocates the page or page table for the current level as we are handling PTE holes. If the mask is set to None, then this function only allocates page tables.
Source§fn handle_pte(
&mut self,
_page_type: PteType,
_range: Range<usize>,
_pte: &mut PTE,
) -> Result<(), Error>
fn handle_pte( &mut self, _page_type: PteType, _range: Range<usize>, _pte: &mut PTE, ) -> Result<(), Error>
This callback handles the current PTE unconditionally and is given the
PteType, the
virtual address range and a mutable reference to the PTE. The implementation of this
callback is optional.Source§fn handle_post_pte(
&mut self,
_level: usize,
_range: Range<usize>,
_pte: &mut PTE,
) -> Result<(), Error>
fn handle_post_pte( &mut self, _level: usize, _range: Range<usize>, _pte: &mut PTE, ) -> Result<(), Error>
This callback handles the PTE of a page table after recursing the page table hierarchy, and
is given the level, the virtual address and a mutable reference to the PTE. The
implementation of this callback is optional.
Auto Trait Implementations§
impl<'a, PTE, Mapper, Error> Freeze for PteAllocator<'a, PTE, Mapper, Error>where
PTE: Freeze,
impl<'a, PTE, Mapper, Error> RefUnwindSafe for PteAllocator<'a, PTE, Mapper, Error>
impl<'a, PTE, Mapper, Error> Send for PteAllocator<'a, PTE, Mapper, Error>
impl<'a, PTE, Mapper, Error> Sync for PteAllocator<'a, PTE, Mapper, Error>
impl<'a, PTE, Mapper, Error> Unpin for PteAllocator<'a, PTE, Mapper, Error>
impl<'a, PTE, Mapper, Error> UnsafeUnpin for PteAllocator<'a, PTE, Mapper, Error>where
PTE: UnsafeUnpin,
impl<'a, PTE, Mapper, Error> !UnwindSafe for PteAllocator<'a, PTE, Mapper, Error>
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