Skip to main content

PteReader

Struct PteReader 

Source
pub struct PteReader<'a, PTE, Mapper, Error>
where PTE: FromPrimitive + PrimInt + Unsigned, Mapper: PageTableMapper<PTE, Error>,
{ pub mapper: &'a Mapper, pub pte: Option<PTE>, pub error: PhantomData<Error>, }
Expand description

The PteReader struct is an implementation of a crate::walker::PageWalker used to retrieve the PTE for a given virtual address, which is used by the AddressSpace::read_pte method.

Fields§

§mapper: &'a Mapper

The page table mapper.

§pte: Option<PTE>

Storage for the retrieved PTE.

§error: PhantomData<Error>

A marker for Error.

Trait Implementations§

Source§

impl<'a, PTE, Mapper, Error> PageWalker<PTE, Error> for PteReader<'a, PTE, Mapper, Error>
where PTE: FromPrimitive + PrimInt + Unsigned, Mapper: PageTableMapper<PTE, Error>,

Source§

fn read_pte(&self, phys_addr: PTE) -> Result<PTE, Error>

Reads the PTE at the given physical address.

Source§

fn handle_pte( &mut self, pte_type: PteType, _range: Range<usize>, pte: &PTE, ) -> Result<(), Error>

Stores the PTE of the page, if the virtual address resolves to a page.

Source§

fn handle_pte_hole( &mut self, _level: usize, _range: Range<usize>, _pte: &PTE, ) -> Result<(), Error>

This callback handles a PTE hole, i.e. a PTE that is not marked as present, and is given the level, the virtual address range and an immutable reference to the PTE. The implementation of this callback is optional.
Source§

fn handle_post_pte( &mut self, _level: usize, _range: Range<usize>, _pte: &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 an immutable reference to the PTE. The implementation of this callback is optional.

Auto Trait Implementations§

§

impl<'a, PTE, Mapper, Error> Freeze for PteReader<'a, PTE, Mapper, Error>
where PTE: Freeze,

§

impl<'a, PTE, Mapper, Error> RefUnwindSafe for PteReader<'a, PTE, Mapper, Error>
where Mapper: RefUnwindSafe, PTE: RefUnwindSafe, Error: RefUnwindSafe,

§

impl<'a, PTE, Mapper, Error> Send for PteReader<'a, PTE, Mapper, Error>
where Mapper: Sync, PTE: Send, Error: Send,

§

impl<'a, PTE, Mapper, Error> Sync for PteReader<'a, PTE, Mapper, Error>
where Mapper: Sync, PTE: Sync, Error: Sync,

§

impl<'a, PTE, Mapper, Error> Unpin for PteReader<'a, PTE, Mapper, Error>
where PTE: Unpin, Error: Unpin,

§

impl<'a, PTE, Mapper, Error> UnsafeUnpin for PteReader<'a, PTE, Mapper, Error>
where PTE: UnsafeUnpin,

§

impl<'a, PTE, Mapper, Error> UnwindSafe for PteReader<'a, PTE, Mapper, Error>
where Mapper: RefUnwindSafe, PTE: UnwindSafe, Error: UnwindSafe,

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.