Struct AcpiTablesBuilder

Source
pub struct AcpiTablesBuilder<'a, T: AcpiTopology> {
    pub processor_topology: &'a ProcessorTopology<T>,
    pub mem_layout: &'a MemoryLayout,
    pub cache_topology: Option<&'a CacheTopology>,
    pub with_ioapic: bool,
    pub with_pic: bool,
    pub with_pit: bool,
    pub with_psp: bool,
    pub pm_base: u16,
    pub acpi_irq: u32,
}
Expand description

Builder to construct a set of BuiltAcpiTables

Fields§

§processor_topology: &'a ProcessorTopology<T>

The processor topology.

It is assumed that the MADT processor UID should start at 1 and enumerate each of these APIC IDs in turn.

§mem_layout: &'a MemoryLayout

The memory layout of the VM.

§cache_topology: Option<&'a CacheTopology>

The cache topology of the VM.

If and only if this is set, then the PPTT table will be generated.

§with_ioapic: bool

If an ioapic is present.

§with_pic: bool

If a PIC is present.

§with_pit: bool

If a PIT is present.

§with_psp: bool

If a psp is present.

§pm_base: u16

base address of dynamic power management device registers

§acpi_irq: u32

ACPI IRQ number

Implementations§

Source§

impl<T: AcpiTopology> AcpiTablesBuilder<'_, T>

Source

pub fn build_acpi_tables<F>( &self, gpa: u64, add_devices_to_dsdt: F, ) -> BuiltAcpiTables
where F: FnOnce(&MemoryLayout, &mut Dsdt),

Build ACPI tables based on the supplied closure that adds devices to the DSDT.

The RDSP is assumed to take one whole page.

Returns tables that should be loaded at the supplied gpa.

Source

pub fn build_acpi_tables_custom_dsdt( &self, gpa: u64, dsdt: &[u8], ) -> BuiltAcpiTables

Build ACPI tables based on the supplied custom DSDT.

The RDSP is assumed to take one whole page.

Returns tables that should be loaded at the supplied gpa.

Source

pub fn build_madt(&self) -> Vec<u8>

Helper method to construct an MADT without constructing the rest of the ACPI tables.

Source

pub fn build_srat(&self) -> Vec<u8>

Helper method to construct an SRAT without constructing the rest of the ACPI tables.

Source

pub fn build_pptt(&self) -> Vec<u8>

Helper method to construct a PPTT without constructing the rest of the ACPI tables.

§Panics

Panics if self.cache_topology is not set.

Auto Trait Implementations§

§

impl<'a, T> Freeze for AcpiTablesBuilder<'a, T>

§

impl<'a, T> RefUnwindSafe for AcpiTablesBuilder<'a, T>

§

impl<'a, T> Send for AcpiTablesBuilder<'a, T>
where T: Sync, <T as ArchTopology>::ArchVpInfo: Sync,

§

impl<'a, T> Sync for AcpiTablesBuilder<'a, T>
where T: Sync, <T as ArchTopology>::ArchVpInfo: Sync,

§

impl<'a, T> Unpin for AcpiTablesBuilder<'a, T>

§

impl<'a, T> UnwindSafe for AcpiTablesBuilder<'a, T>

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> IntoAny for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Converts into a Box<dyn Any>.
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