The ACPI Project Architecture

From EDM2
Jump to: navigation, search

The ACPI project is maintained by David Azarewicz and Arca Noae. This quick article is a summary of what David discussed at Warpstock 2016.

ACPI Project Architecture Graphic

This is a quick summary of the architecture components of the project.

ACPI is located in the BIOS and created by the chipset vendor manufacturer. It is provided with the hardware and it is not modified by any way by the "ACPI Project" and it is not part of this project.

ACPICA is the “Component Architecture” which is provided also by Intel. This component is just the same code produced by Intel and does not get modified or debugged in any way, it is used as it is from Intel. The ACPICA code is located into the ACPI.PSD driver. This is updated regularly by Intel and as newer versions are released, the code is merged into the ACPI PSD (Platform Support Driver).

ACPI.PSD is the Platform Support Driver specific to OS/2. According to David (the developer) this is where the 90% of the effort of the ACPI project is located. In order to stay current, whenever Intel ships new ACPICA code, this driver must to be updated. In this way, when newer hardware is released, written to the new ACPICA specification, the ACPI PSD should be able to recognize and handle it.

ACPI32.DLL is the application interface that allows some services (programs) to query ACPI (temperature monitoring, fan speed, etc.).

APM.ADD is an APM (Advanced Power Management) emulator, which takes the place of APM.SYS (used on non-ACPI-based systems) to read and control various power functions.

AcpiDaemon.exe is an application that talks to the driver thought ACPI32.DLL. It implements functions like CPU throttling, power button actions, lid open/close events, suspend/resume, between others.

The Toolkit is essentially some header files and libraries which allow developers to write applications which access and use ACPI services. Examples of these types of applications include temperature monitoring, screen blanking/saving, system rebooting, etc.