IdentityMapBuilder

Struct IdentityMapBuilder 

Source
pub struct IdentityMapBuilder<'a> { /* private fields */ }
Expand description

An IdentityMap Builder, which builds either a 4GB or 8GB identity map of the lower address space FUTURE: This logic can merged with the PageTableBuilder, rather than maintaining two implementations

Implementations§

Source§

impl<'a> IdentityMapBuilder<'a>

Source

pub fn new( page_table_gpa: u64, identity_map_size: IdentityMapSize, page_table: &'a mut [PageTable], flattened_page_table: &'a mut [u8], ) -> Result<Self, Error>

Creates a new instance of the IdentityMapBuilder. The PageTable slice is working memory for constructing the page table, and the u8 slice is the memory used to output the final bytes of the page table

The working memory and output memory are taken as parameters to allow for the caller to flexibly choose their allocation strategy, to support usage in no_std environments like openhcl_boot

Source

pub fn with_address_bias(self, address_bias: u64) -> Self

Builds the page tables with an address bias, a fixed offset between the virtual and physical addresses in the identity map

An optional PML4E entry may be linked, with arguments being (link_target_gpa, linkage_gpa). link_target_gpa represents the GPA of the PML4E to link into the built page table. linkage_gpa represents the GPA at which the linked PML4E should be linked.

Source

pub fn build(self) -> &'a [u8]

Build a set of X64 page tables identity mapping the bottom address space with an optional address bias.

Auto Trait Implementations§

§

impl<'a> Freeze for IdentityMapBuilder<'a>

§

impl<'a> RefUnwindSafe for IdentityMapBuilder<'a>

§

impl<'a> Send for IdentityMapBuilder<'a>

§

impl<'a> Sync for IdentityMapBuilder<'a>

§

impl<'a> Unpin for IdentityMapBuilder<'a>

§

impl<'a> !UnwindSafe for IdentityMapBuilder<'a>

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.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
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.
§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more