• Stars
    star
    200
  • Rank 195,325 (Top 4 %)
  • Language
    Rust
  • License
    Apache License 2.0
  • Created over 6 years ago
  • Updated about 2 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Rust library for parsing ACPI tables and interpreting AML

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.

More Repositories

1

bootloader

An experimental pure-Rust x86 bootloader
Rust
1,368
star
2

uefi-rs

Rusty wrapper for the Unified Extensible Firmware Interface (UEFI). This crate makes it easy to develop Rust software that leverages safe, convenient, and performant abstractions for UEFI functionality.
Rust
1,297
star
3

x86_64

Library to program x86_64 hardware.
Rust
787
star
4

bootimage

Tool to create bootable disk images from a Rust OS kernel.
Rust
752
star
5

linked-list-allocator

Rust
220
star
6

.github

About this organization
133
star
7

homepage

CSS
119
star
8

multiboot2

Rusty wrappers for Multiboot2.
Rust
110
star
9

volatile

Rust
70
star
10

vga

Library to program vga hardware.
Rust
55
star
11

xhci

A Rust library which is useful to handle xHCI
Rust
41
star
12

spinning_top

A simple spinlock crate based on the abstractions provided by the `lock_api` crate.
Rust
36
star
13

uart_16550

Minimal support for uart_16550 serial output.
Rust
33
star
14

pci_types

Useful types for dealing with PCI
Rust
31
star
15

ovmf-prebuilt

Rust
24
star
16

apic

Rust
15
star
17

ansi_rgb

Colorful terminal text using ANSI escape sequences
Rust
14
star
18

virtio-spec-rs

Definitions from the Virtual I/O Device (VIRTIO) specification.
Rust
12
star
19

endian-num

Byte-order-aware numeric types.
Rust
11
star
20

pic8259

Rust
10
star
21

x86_64_types

Rust
7
star
22

ps2-mouse

Library to manage a PS2 mouse
Rust
7
star
23

ucs2-rs

UCS-2 conversion utilities for Rust.
Rust
6
star
24

usb

Utilities for working with USB devices
Rust
6
star
25

os_bootinfo

Rust
6
star
26

ieee1275-rs

Rudimentary ieee1275/OpenFirmware Rust environment similar to uefi-rs.
Rust
4
star
27

fuse-abi

FUSE device bindings.
Rust
3
star