9 releases (breaking)

new 0.7.2 Apr 23, 2024
0.7.1 Oct 12, 2023
0.7.0 Sep 25, 2023
0.6.0 Jul 26, 2023
0.1.0 Sep 29, 2022

#30 in Hardware support

Download history 982/week @ 2024-01-06 1188/week @ 2024-01-13 1242/week @ 2024-01-20 745/week @ 2024-01-27 1008/week @ 2024-02-03 638/week @ 2024-02-10 851/week @ 2024-02-17 582/week @ 2024-02-24 794/week @ 2024-03-02 1122/week @ 2024-03-09 1463/week @ 2024-03-16 743/week @ 2024-03-23 1321/week @ 2024-03-30 1028/week @ 2024-04-06 1624/week @ 2024-04-13 1208/week @ 2024-04-20

5,221 downloads per month

MIT license

285KB
5.5K SLoC

VirtIO-drivers-rs

crates.io page docs.rs page CI

VirtIO guest drivers in Rust. For no_std environment.

Support status

Device types

Device Supported
Block
Net
GPU
Input
Console
Socket
...

Transports

Transport Supported
Legacy MMIO version 1
MMIO version 2
PCI Memory-mapped CAM only, e.g. aarch64 or PCIe ECAM

Device-independent features

Feature flag Supported
VIRTIO_F_INDIRECT_DESC Indirect descriptors
VIRTIO_F_EVENT_IDX avail_event and used_event fields
VIRTIO_F_VERSION_1 TODO VirtIO version 1 compliance
VIRTIO_F_ACCESS_PLATFORM Limited device access to memory
VIRTIO_F_RING_PACKED Packed virtqueue layout
VIRTIO_F_IN_ORDER Optimisations for in-order buffer usage
VIRTIO_F_ORDER_PLATFORM Platform ordering for memory access
VIRTIO_F_SR_IOV Single root I/O virtualization
VIRTIO_F_NOTIFICATION_DATA Extra data in device notifications

Examples & Tests

x86_64

cd examples/x86_64
make qemu

aarch64

cd examples/aarch64
make qemu

RISCV

cd examples/riscv
make qemu

You will see device info & GUI Window in qemu.

Dependencies

~1–1.6MB
~31K SLoC