Friedrich-Alexander-Universität Erlangen-Nürnberg  /   Technische Fakultät  /   Department Informatik
acpi.h File Reference

Structs and methods related to the Advanced Configuration and Power Interface (ACPI)". More...

#include "types.h"
Include dependency graph for acpi.h:

Classes

struct  ACPI::RSDP
 Root System Description Pointer (RSDP) More...
 
struct  ACPI::SDTH
 System Description Table Header (SDTH) More...
 
struct  ACPI::RSDT
 Root System Description Table (RSDT) More...
 
struct  ACPI::XSDT
 Extended System Description Table (XSDT) More...
 
struct  ACPI::SubHeader
 Helper structure. More...
 
struct  ACPI::MADT
 Multiple APIC Description Table (MADT) More...
 
struct  ACPI::Address
 ACPI address format. More...
 
struct  ACPI::MADS::LAPIC
 Processor Local APIC (LAPIC) Structure. More...
 
struct  ACPI::MADS::IOAPIC
 I/O APIC Structure. More...
 
struct  ACPI::MADS::Interrupt_Source_Override
 Interrupt Source Override Structure. More...
 
struct  ACPI::MADS::LAPIC_Address_Override
 Local APIC Address Override Structure. More...
 
union  ACPI::MADS::LAPIC_Address_Override.__unnamed__
 
struct  ACPI::MADS::LAPIC_Address_Override.__unnamed__.__unnamed__
 

Namespaces

 ACPI
 Abstracts the ACPI standard that provides interfaces for hardware detection, device configuration, and energy management.ACPI is the successor to APM (Advanced Power Management), aiming to give the operating system more control over the hardware. This extended control, for instance, enables the operating system to assign a particular amount of energy to every device (e.g., by disabling a device or changing to standby mode). For this purpose, BIOS and chipset provide a set of tables that describe the system and its components and provide routines the OS can call. These tables contain details about the system, such as the number of CPU cores and the LAPIC/IOAPIC, which are determined during system boot.
 

Enumerations

enum  AddressSpace : uint8_t { MEMORY = 0x0, IO = 0x1 }
 
enum  Type { Type_LAPIC = 0, Type_IOAPIC = 1, Type_Interrupt_Source_Override = 2, Type_LAPIC_Address_Override = 5 }
 

Functions

bool ACPI::init ()
 
unsigned ACPI::count ()
 
SDTH * ACPI::get (unsigned num)
 
SDTH * ACPI::get (char a, char b, char c, char d)
 
int ACPI::revision ()
 

Detailed Description

Structs and methods related to the Advanced Configuration and Power Interface (ACPI)".


Class Documentation

◆ ACPI::RSDP

struct ACPI::RSDP

Root System Description Pointer (RSDP)

The first step to using ACPI is finding the RSDP that is used to find the RSDT / XSDT, which themselves contain pointers to even more tables.

On UEFI systems, the RSDP can be found in the EFI_SYSTEM_TABLE; for non-UEFI systems we have to search for the signature 'RSD PTR ' in the EBDA (Extended Bios Data Area) or in the memory area to bis FFFFFh.

See also
ACPI-Specification 5.2.5.3; Root System Description Pointer (RSDP) Structure
Class Members
char signature[8]
uint8_t checksum
char oemid[6]
uint8_t revision
uint32_t rsdtaddress
uint32_t length
uint64_t xsdtaddress
uint8_t extended_checksum
uint8_t reserved[3]

◆ ACPI::Address

struct ACPI::Address

ACPI address format.

The ACPI standard defines its own address format that is able to handle addresses both in memory address space, as well as IO-port address space.

Class Members
AddressSpace address_space
uint8_t register_bit_width
uint8_t register_bit_offset
uint8_t reserved
uint64_t address