PageTableBuilder

Struct PageTableBuilder 

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

A builder for an x64 identity-mapped page table

Implementations§

Source§

impl<'a> PageTableBuilder<'a>

Source

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

Creates a new instance of the page table builder. 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_confidential_bit(self, bit_position: u32) -> Self

Builds the page tables with the confidential bit set

Source

pub fn build(self) -> Result<&'a [u8], Error>

Build a set of X64 page tables identity mapping the given regions. This creates up to 3+N page tables: 1 PML4E and up to 2 PDPTE tables, and N page tables counted at 1 per GB of size, for 2MB mappings.

Auto Trait Implementations§

§

impl<'a> Freeze for PageTableBuilder<'a>

§

impl<'a> RefUnwindSafe for PageTableBuilder<'a>

§

impl<'a> Send for PageTableBuilder<'a>

§

impl<'a> Sync for PageTableBuilder<'a>

§

impl<'a> Unpin for PageTableBuilder<'a>

§

impl<'a> !UnwindSafe for PageTableBuilder<'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