• Stars
    star
    787
  • Rank 57,828 (Top 2 %)
  • Language
    Rust
  • License
    Apache License 2.0
  • Created about 9 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

Library to program x86_64 hardware.

x86_64 library

Crates.io Build Status docs.rs

Support for x86_64 specific instructions (e.g. TLB flush), registers (e.g. control registers), and structures (e.g. page tables).

Crate Feature Flags

  • nightly: Enables features only available on nightly Rust; enabled by default.
  • instructions: Enabled by default, turns on x86_64 specific instructions, and dependent features. Only available for x86_64 targets.

Minimum Supported Rust Version (MSRV)

If no features are enabled (--no-default-features), Rust 1.57.0 is required.

If only the instructions feature is enabled (--no-default-features --features instructions), Rust 1.59.0 is required.

If the nightly feature or any of its sub-features is enabled, a recent nightly is required.

Other OS development crates

This crate does not attempt to handle every facet of OS development. Other useful crates in this space include:

  • raw-cpuid: safe wrappers around the cpuid instruction
    • Provides parsed versions of the CPUID data, rather than just raw binary values.
    • Support for AMD and Intel specific values.
    • Works on x86 and x86_64 systems, in both user and kernel mode.
  • uefi: abstractions for UEFI (the successor to BIOS)
    • Provides UEFI tables, functions, and types.
    • Useful for writing UEFI applications, or calling UEFI functions from your OS.
    • Works on a variety of modern platforms, not just x86_64.
  • volatile: interface to read_volatile and write_volatile
    • Makes it easier to program MMIO interfaces and devices.
    • Works on any Rust target.

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

bootimage

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

linked-list-allocator

Rust
220
star
5

acpi

Rust library for parsing ACPI tables and interpreting AML
Rust
200
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