pub struct PteMapper<'a, PTE, Mapper, Error>{
pub mapper: &'a mut Mapper,
pub format: &'a PageFormat<'a, PTE>,
pub mask: PTE,
pub error: PhantomData<Error>,
}Expand description
The PteMapper struct is an implementation of a crate::walker::PageWalkerMut used to map
a physical address range and allocate the underlying page tables for a given virtual address
range. This is used by the AddressSpace::map_range method.
Fields§
§mapper: &'a mut MapperThe page table mapper.
format: &'a PageFormat<'a, PTE>The page format.
mask: PTEThe mask to set for pages.
error: PhantomData<Error>A marker for Error.
Trait Implementations§
Source§impl<'a, PTE, Mapper, Error> PageWalkerMut<PTE, Error> for PteMapper<'a, PTE, Mapper, Error>
impl<'a, PTE, Mapper, Error> PageWalkerMut<PTE, Error> for PteMapper<'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 PteMapper<'a, PTE, Mapper, Error>where
PTE: Freeze,
impl<'a, PTE, Mapper, Error> RefUnwindSafe for PteMapper<'a, PTE, Mapper, Error>
impl<'a, PTE, Mapper, Error> Send for PteMapper<'a, PTE, Mapper, Error>
impl<'a, PTE, Mapper, Error> Sync for PteMapper<'a, PTE, Mapper, Error>
impl<'a, PTE, Mapper, Error> Unpin for PteMapper<'a, PTE, Mapper, Error>
impl<'a, PTE, Mapper, Error> UnsafeUnpin for PteMapper<'a, PTE, Mapper, Error>where
PTE: UnsafeUnpin,
impl<'a, PTE, Mapper, Error> !UnwindSafe for PteMapper<'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