cpuio
: Rust wrapper for inb
, outb
, etc., instructionsThis library is intended to be run on bare metal, and it only depends on
the core
library.
To use this, add it to your Cargo.toml
file and call cpuio::Port::new
to create a port, being sure to specify u8
, u16
or u32
depending on
the size data supported by the port.
```rust extern crate cpuio;
use cpuio::Port;
fn main() {
// Create a port pointing at 0x60, the address of the PS/2 keyboard
// port on x86 hardware. This is an unsafe operation because many
// ports can be used to reconfigure your underlying hardware, and
// it's the responsiblity of the port creator to make sure it's
// used safely.
let mut keyboard: Port
// Read a single scancode from a PS/2 keyboard. If you run this as
// an ordinary user, it will fail with a SIGSEGV.
println!("scancode: {}", keyboard.read());
} ```
The constructor Port::new
is available as a const fn
, which allows you
to configure a port at compile time.
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.