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.
More...
|
enum | AddressSpace : uint8_t { MEMORY = 0x0,
IO = 0x1
} |
|
|
bool | init () |
|
unsigned | count () |
|
SDTH * | get (unsigned num) |
|
SDTH * | get (char a, char b, char c, char d) |
|
int | revision () |
|
|
const char * | RSDP_SIGNATURE = "RSD PTR " |
|
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.
◆ 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 |
|
◆ 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] |
|