Rust library for parsing ACPI tables and interpreting AML

Isaac Woods 2bac9f3aa5 aml: make crate-level comment clearer 2 years ago
.github f40df8ea15 Fix CI by running on `main` branch instead of `master` 2 years ago
acpi ea2251bd91 improve `PciConfigRegions` API 2 years ago
acpi-dumper 90d6bd062a Add acpi-dumper 5 years ago
aml 2bac9f3aa5 aml: make crate-level comment clearer 2 years ago
aml_tester 596770dc81 aml_tester: better error message when `iasl` is not installed 2 years ago
rsdp 7b20eb9d8e Add Debug implementations 2 years ago
tests 8351d3b57a tests: fix error with compilation of `scopes.asl` 2 years ago
.gitignore 3dcc84653d Add EOF newline in gitignore 4 years ago
CHANGELOG.md 955624ae48 acpi v4.1.1 2 years ago
Cargo.toml 85152b3771 Publish rsdp v1.0.0 4 years ago
LICENCE-APACHE 3d72f67501 Init Cargo and add licenses and readme 7 years ago
LICENCE-MIT 3d72f67501 Init Cargo and add licenses and readme 7 years ago
README.md 81e52a6689 Add version shields for rsdp and aml crates to README 3 years ago
rustfmt.toml 76b363c1dc Fix clippy warnings 3 years ago

README.md

Acpi

Build Status Version Version Version

Documentation (rsdp)

Documentation (acpi)

Documentation (aml)

A library to parse ACPI tables and AML, written in pure Rust. Designed to be easy to use from Rust bootloaders and kernels. The library is split into three crates:

  • rsdp parses the RSDP and can locate it on BIOS platforms. It does not depend on alloc, so is suitable to use from bootloaders without heap alloctors. All of its functionality is reexported by acpi.
  • acpi parses the static tables (useful but not feature-complete)
  • aml parses the AML tables (can be useful, far from feature-complete)

There is also the acpi-dumper utility to easily dump a platform's ACPI tables (this currently only works on Linux).

Contributing

Contributions are more than welcome! You can:

  • Write code - the ACPI spec is huge and there are bound to be things we don't support yet!
  • Improve our documentation!
  • Use the crates within your kernel and file bug reports and feature requests!

Useful resources for contributing are:

You can run the AML test suite with cargo run --bin aml_tester -- -p tests. You can run fuzz the AML parser with cd aml && cargo fuzz run fuzz_target_1 (you may need to cargo install cargo-fuzz).

Licence

Acpi is dual-licenced under:

Unless you explicitly state otherwise, any contribution submitted for inclusion in this work by you, as defined in the Apache-2.0 licence, shall be dual licenced as above, without additional terms or conditions.