SdtHeader

Struct SdtHeader 

Source
#[repr(C, packed(1))]
pub struct SdtHeader { pub signature: Signature, pub length: u32, pub revision: u8, pub checksum: u8, pub oem_id: [u8; 6], pub oem_table_id: [u8; 8], pub oem_revision: u32, pub creator_id: u32, pub creator_revision: u32, }
Expand description

All SDTs share the same header, and are length bytes long. The signature tells us which SDT this is.

The ACPI Spec (Version 6.4) defines the following SDT signatures:

  • APIC - Multiple APIC Description Table (MADT)
  • BERT - Boot Error Record Table
  • BGRT - Boot Graphics Resource Table
  • CPEP - Corrected Platform Error Polling Table
  • DSDT - Differentiated System Description Table (DSDT)
  • ECDT - Embedded Controller Boot Resources Table
  • EINJ - Error Injection Table
  • ERST - Error Record Serialization Table
  • FACP - Fixed ACPI Description Table (FADT)
  • FACS - Firmware ACPI Control Structure
  • FPDT - Firmware Performance Data Table
  • GTDT - Generic Timer Description Table
  • HEST - Hardware Error Source Table
  • MSCT - Maximum System Characteristics Table
  • MPST - Memory Power StateTable
  • NFIT - NVDIMM Firmware Interface Table
  • OEMx - OEM Specific Information Tables
  • PCCT - Platform Communications Channel Table
  • PHAT - Platform Health Assessment Table
  • PMTT - Platform Memory Topology Table
  • PSDT - Persistent System Description Table
  • RASF - ACPI RAS Feature Table
  • RSDT - Root System Description Table
  • SBST - Smart Battery Specification Table
  • SDEV - Secure DEVices Table
  • SLIT - System Locality Distance Information Table
  • SRAT - System Resource Affinity Table
  • SSDT - Secondary System Description Table
  • XSDT - Extended System Description Table

Acpi reserves the following signatures and the specifications for them can be found here:

  • AEST - ARM Error Source Table
  • BDAT - BIOS Data ACPI Table
  • CDIT - Component Distance Information Table
  • CEDT - CXL Early Discovery Table
  • CRAT - Component Resource Attribute Table
  • CSRT - Core System Resource Table
  • DBGP - Debug Port Table
  • DBG2 - Debug Port Table 2 (note: ACPI 6.4 defines this as “DBPG2” but this is incorrect)
  • DMAR - DMA Remapping Table
  • DRTM -Dynamic Root of Trust for Measurement Table
  • ETDT - Event Timer Description Table (obsolete, superseeded by HPET)
  • HPET - IA-PC High Precision Event Timer Table
  • IBFT - iSCSI Boot Firmware Table
  • IORT - I/O Remapping Table
  • IVRS - I/O Virtualization Reporting Structure
  • LPIT - Low Power Idle Table
  • MCFG - PCI Express Memory-mapped Configuration Space base address description table
  • MCHI - Management Controller Host Interface table
  • MPAM - ARM Memory Partitioning And Monitoring table
  • MSDM - Microsoft Data Management Table
  • PRMT - Platform Runtime Mechanism Table
  • RGRT - Regulatory Graphics Resource Table
  • SDEI - Software Delegated Exceptions Interface table
  • SLIC - Microsoft Software Licensing table
  • SPCR - Microsoft Serial Port Console Redirection table
  • SPMI - Server Platform Management Interface table
  • STAO - _STA Override table
  • SVKL - Storage Volume Key Data table (Intel TDX only)
  • TCPA - Trusted Computing Platform Alliance Capabilities Table
  • TPM2 - Trusted Platform Module 2 Table
  • UEFI - Unified Extensible Firmware Interface Specification table
  • WAET - Windows ACPI Emulated Devices Table
  • WDAT - Watch Dog Action Table
  • WDRT - Watchdog Resource Table
  • WPBT - Windows Platform Binary Table
  • WSMT - Windows Security Mitigations Table
  • XENV - Xen Project

Fields§

§signature: Signature§length: u32§revision: u8§checksum: u8§oem_id: [u8; 6]§oem_table_id: [u8; 8]§oem_revision: u32§creator_id: u32§creator_revision: u32

Implementations§

Source§

impl SdtHeader

Source

pub fn validate(&self, signature: Signature) -> AcpiResult<()>

Checks that:

  1. The signature matches the one given.
  2. The values of various fields in the header are allowed.
  3. The checksum of the SDT is valid.

This assumes that the whole SDT is mapped.

Source

pub fn oem_id(&self) -> &str

Source

pub fn oem_table_id(&self) -> &str

Trait Implementations§

Source§

impl Clone for SdtHeader

Source§

fn clone(&self) -> SdtHeader

Returns a duplicate of the value. Read more
1.0.0§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SdtHeader

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Copy for SdtHeader

Auto Trait Implementations§

§

impl Freeze for SdtHeader

§

impl RefUnwindSafe for SdtHeader

§

impl Send for SdtHeader

§

impl Sync for SdtHeader

§

impl Unpin for SdtHeader

§

impl UnwindSafe for SdtHeader

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

impl<T> CloneToUninit for T
where T: Clone,

§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

fn into(self) -> U

Calls U::from(self).

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

§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.