acpi
acpi copied to clipboard
Rust library for parsing ACPI tables and interpreting AML
This PR adds a way to retrieve PM1x status/enable registers and GPEn block lengths from the FADT.
I only really needed reverse name lookup, but I implemented some iterators along the way. `fold` and `find_map` iterate over all values. `find_map` does a sort of short circuit to...
Implement DefExternal, with If(0) guard - Externals are in an If(0) block. See acpica/documents/changes.txt, Summary of changes for version 20160212. - Because Externals are in an If(0) block, a special...
ACPI 6.2, section 20.2.2 defines NameString as follows: ``` NameString := | PrefixPath := Nothing | NamePath := NameSeg | DualNamePath | MultiNamePath | NullName ``` In the `name_string()` parser,...
The `aml` crate currently does not have support for reference-typed values. Implementing them allows us to support `DeRefOf`/`Index`/`RefOf`/`CondRefOf` opcodes which are quite common in real-hardware AML. One way to implement...
While working with real DSDT and comparing reads/writes to what ACPICA does, I found out there are several issues with how reads/writes to regions are done: - [ ] Incorrect...
Hi, I was trying to integrate the `aml`/`acpi` crates into my kernel and found out that some of the real-hardware opcodes are NYI. I'm currently working on implementing `DefIndexField` myself,...
Despite all the checks that I've spotted in the code to determine whether or not there's a RSDT or XSDT in there, I still for the life of me can't...
What is the recommended alternative to acpi::AcpiTables::from_tables_direct, which has been removed? My ideal would be to pass in the tables without a handler to map the table data, but I'm...
qemu-system-x86_64 provides a 32-bit aligned (not 64-bit aligned) address. After updating to the latest nightly (1.70.0 2023-04-07), lib.rs: 191 panics if the address is not aligned. I don't believe 64-bit...