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