Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
virtio.h
Go to the documentation of this file.
1#ifndef __HAL__VIRTIO__VIRTIO_H__
2#define __HAL__VIRTIO__VIRTIO_H__
4#include <type.h>
6#define VIRTIO_PCI_CAP 0x09
8#define VIRTIO_PCI_CAP_COMMON_CFG 1
9#define VIRTIO_PCI_CAP_NOTIFY_CFG 2
10#define VIRTIO_PCI_CAP_ISR_CFG 3
11#define VIRTIO_PCI_CAP_DEVICE_CFG 4
12#define VIRTIO_PCI_CAP_PCI_CFG 5
13
14// VirtIO Device Status bits
15#define VIRTIO_STATUS_ACKNOWLEDGE (1 << 0)
16#define VIRTIO_STATUS_DRIVER (1 << 1)
17#define VIRTIO_STATUS_DRIVER_OK (1 << 2)
18#define VIRTIO_STATUS_FEATURES_OK (1 << 3)
19#define VIRTIO_STATUS_DEVICE_NEEDS_RESET (1 << 6)
20#define VIRTIO_STATUS_FAILED (1 << 7)
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26typedef struct {
35
44} __attribute__((packed)) virtio_pci_common_cfg_t;
45
56
67
78
81
82#ifdef __cplusplus
83}
84#endif
85
86#endif // __HAL__VIRTIO__VIRTIO_H__
typedef __attribute__
Definition msi.c:47
uint32_t device_feature_select
Definition virtio.h:27
uint32_t driver_feature_select
Definition virtio.h:29
uint16_t num_queues
Definition virtio.h:32
uint64_t queue_used
Definition virtio.h:43
uint8_t device_status
Definition virtio.h:33
uint16_t queue_select
Definition virtio.h:36
uint64_t queue_avail
Definition virtio.h:42
uint16_t queue_size
Definition virtio.h:37
uint8_t config_generation
Definition virtio.h:34
uint64_t queue_desc
Definition virtio.h:41
uint32_t device_feature
Definition virtio.h:28
uint16_t queue_enable
Definition virtio.h:39
uint16_t msix_config
Definition virtio.h:31
uint32_t driver_feature
Definition virtio.h:30
uint16_t queue_msix_vector
Definition virtio.h:38
uint16_t queue_notify_off
Definition virtio.h:40
virtio_pci_common_cfg_t * common_cfg
Definition virtio.h:58
volatile uint32_t * notify_base
Definition virtio.h:59
bool initialized
Definition virtio.h:65
uintptr_t notify_offset
Definition virtio.h:61
virtio_queue_t controlq
Definition virtio.h:63
uintptr_t notify_multiplier
Definition virtio.h:62
volatile uint8_t * isr
Definition virtio.h:60
uint32_t features
Definition virtio.h:64
uint8_t bar
Definition virtio.h:73
uint32_t offset
Definition virtio.h:75
uint8_t cap_len
Definition virtio.h:71
uint32_t length
Definition virtio.h:76
uint8_t padding[3]
Definition virtio.h:74
uint8_t cap_vndr
Definition virtio.h:69
uint8_t cap_next
Definition virtio.h:70
uint8_t cfg_type
Definition virtio.h:72
uint16_t last_used_idx
Definition virtio.h:53
struct virtq_avail * avail
Definition virtio.h:48
struct virtq_used * used
Definition virtio.h:49
uintptr_t phys_addr
Definition virtio.h:54
struct virtq_desc * desc
Definition virtio.h:47
uint16_t num_free
Definition virtio.h:52
uint16_t queue_size
Definition virtio.h:50
uint16_t free_head
Definition virtio.h:51
unsigned short uint16_t
Definition type.h:13
unsigned int uint32_t
Definition type.h:19
unsigned long uintptr_t
Definition type.h:73
unsigned long uint64_t
Definition type.h:25
unsigned char uint8_t
Definition type.h:7
struct ioforge_virtio_device * find_virtio_device_by_id(uint16_t vendor_id, uint16_t device_id)