An ACPI-aware operating system must include code that accesses the ACPI BIOS, registers, and tables. It must also include an AML byte-code interpreter. This upper layer of core ACPI software is shown in Figure 1. Intel has implemented an OS-independent implementation of this layer of software called ACPI Component Architecture or ACPI-CA [2]. ACPI-CA is used by many open source operating systems including FreeBSD and Linux.
ACPI-CA provides a high-level ACPI API to the operating system. The
OS uses this API to implement power management, device configuration,
and thermal management. All fixed features and some access to AML
names are wrapped by the exported function. But some ACPI-specific
devices have to access ACPI namespace. The ACPI-CA API is shown in
Table 1.
Operating systems that use ACPI-CA must provide it with some basic
low-level functions. Intel has implemented the low-level part for
Linux. A list of these functions is shown in Table 2.
|
One of the main user-visible differences between FreeBSD ACPI and Linux ACPI is the user interface. FreeBSD uses sysctl to export ACPI-related kernel variables, while Linux uses the procfs /proc filesystem to export them.