strat9_kernel/hardware/virtio/
mod.rs1pub mod common;
11pub mod console;
12pub mod gpu;
13pub mod rng;
14
15#[allow(dead_code)]
17pub mod status {
18 pub const ACKNOWLEDGE: u32 = 1;
19 pub const DRIVER: u32 = 2;
20 pub const DRIVER_OK: u32 = 4;
21 pub const FEATURES_OK: u32 = 8;
22 pub const DEVICE_NEEDS_RESET: u32 = 64;
23 pub const FAILED: u32 = 128;
24}
25
26#[allow(dead_code)]
28#[derive(Debug, Clone, Copy, PartialEq)]
29#[repr(u16)]
30pub enum DeviceType {
31 Network = 1,
32 Block = 2,
33 Console = 3,
34 Entropy = 4,
35 Gpu = 16,
36 Input = 18,
37}
38
39#[allow(dead_code)]
41pub mod mmio {
42 pub const MAGIC_VALUE: usize = 0x000;
43 pub const VERSION: usize = 0x004;
44 pub const DEVICE_ID: usize = 0x008;
45 pub const VENDOR_ID: usize = 0x00C;
46 pub const DEVICE_FEATURES: usize = 0x010;
47 pub const DEVICE_FEATURES_SEL: usize = 0x014;
48 pub const DRIVER_FEATURES: usize = 0x020;
49 pub const DRIVER_FEATURES_SEL: usize = 0x024;
50 pub const QUEUE_SEL: usize = 0x030;
51 pub const QUEUE_NUM_MAX: usize = 0x034;
52 pub const QUEUE_NUM: usize = 0x038;
53 pub const QUEUE_READY: usize = 0x044;
54 pub const QUEUE_NOTIFY: usize = 0x050;
55 pub const INTERRUPT_STATUS: usize = 0x060;
56 pub const INTERRUPT_ACK: usize = 0x064;
57 pub const STATUS: usize = 0x070;
58}
59
60#[repr(C)]
62#[derive(Debug, Clone, Copy, Default)]
63pub struct VirtqDesc {
64 pub addr: u64,
66 pub len: u32,
68 pub flags: u16,
70 pub next: u16,
72}
73
74#[allow(dead_code)]
76pub mod vring_flags {
77 pub const NEXT: u16 = 1;
78 pub const WRITE: u16 = 2;
79 pub const INDIRECT: u16 = 4;
80}