Rust library for parsing ACPI tables and interpreting AML

LoGin 282df2af7b make rsdp members public (#4) 3 mesi fa
.github baf55fe8a0 Compile for aarch64 and i686 targets on CI in addition to x86_64 1 anno fa
acpi 282df2af7b make rsdp members public (#4) 3 mesi fa
acpi-dumper 90d6bd062a Add acpi-dumper 5 anni fa
aml bb8cd15fd1 Rebase on fb69243 (#3) 3 mesi fa
aml_tester 42d5870bcb Fix CI 1 anno fa
rsdp bb664d0272 Add deprecation notice to `rsdp` and publish as `rsdp v2.0.1` 1 anno fa
tests bb8cd15fd1 Rebase on fb69243 (#3) 3 mesi fa
.gitignore 3dcc84653d Add EOF newline in gitignore 4 anni fa
CHANGELOG.md 955624ae48 acpi v4.1.1 2 anni fa
Cargo.toml a2c745d992 rsdp,acpi: update crates to 2021 edition 1 anno fa
LICENCE-APACHE 3d72f67501 Init Cargo and add licenses and readme 6 anni fa
LICENCE-MIT 3d72f67501 Init Cargo and add licenses and readme 6 anni fa
README.md d5c4d8dc04 Make some tweaks to `README` re allocation in `acpi` 1 anno fa
rustfmt.toml 2010bb80b8 Update `rustfmt.toml` to current edition and format 1 anno fa

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). It can be used from environments that have allocators, and ones that don't (but with reduced functionality).
  • 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

This project 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.