nullplan wrote:
Reboot
Generating a tripple fault has better reliabilty than the ACPI method.
nullplan wrote:
Shutdown
Power management: querying batteries, setting power states, etc.
I'd avoid using shutdown and power management. It's too error-prone and not useful enough for a hobby OS project.
nullplan wrote:
Querying platform input devices, e.g. power button or reset button
You can easily live without that functionality.
nullplan wrote:
Querying platform temperature sensors before a core meltdown occurs
A realistic implementation of this doesn't use ACPI, rather the CPU vendor interface, simply because most motherboards don't have the right ACPI objects. The same goes for changing operating frequency, voltage and throttling. All of this would be useful, but it is missing or incorrect too often. Actually, the BIOS manufacturer doesn't know exactly which CPUs that are used, and so exports the wrong ACPI objects. Because major OSes (Windows & Linux) uses vendor supplied CPU support code and not the ACPI stuff, nobody tests this properly anymore and so it is often non-functional.
nullplan wrote:
CPU discovery
These are in tables and so don't require an ACPI parser.
Perhaps the major reason why to NOT use ACPI is that major OSes (again Windows & Linux) have their own parsers that are extremely tolerant for errors in ACPI. The public ACPICA module doesn't have enough tolerance against this and so could "die" when the parser in Windows won't die, and so you might end up with a system that works on Windows but not your OS. And, of course, the BIOS manufacturer think everything is ok if Windows works, and doesn't care if Windows internally finds a lot of errors in the ACPI scripts.
Also note that for ACPI to work at all, you must provide it with the Windows version that it was designed to operate with, otherwise it might give you the wrong ACPI code in order to stop users from using non-supported operating systems. It might even reboot on it's own after x minutes if you don't give it a "proper" version. Even Linux will pretend to be a recent Windows version.