Go to the source code of this file.
|
NTSTATUS | virtio_device_initialize (VirtIODevice *vdev, const VirtIOSystemOps *pSystemOps, void *DeviceContext, bool msix_used) |
|
void | virtio_device_shutdown (VirtIODevice *vdev) |
|
u8 | virtio_get_status (VirtIODevice *vdev) |
|
void | virtio_set_status (VirtIODevice *vdev, u8 status) |
|
void | virtio_add_status (VirtIODevice *vdev, u8 status) |
|
void | virtio_device_reset (VirtIODevice *vdev) |
|
void | virtio_device_ready (VirtIODevice *vdev) |
|
u64 | virtio_get_features (VirtIODevice *dev) |
|
NTSTATUS | virtio_set_features (VirtIODevice *vdev, u64 features) |
|
void | virtio_get_config (VirtIODevice *vdev, unsigned offset, void *buf, unsigned len) |
|
void | virtio_set_config (VirtIODevice *vdev, unsigned offset, void *buf, unsigned len) |
|
NTSTATUS | virtio_query_queue_allocation (VirtIODevice *vdev, unsigned index, unsigned short *pNumEntries, unsigned long *pRingSize, unsigned long *pHeapSize) |
|
NTSTATUS | virtio_reserve_queue_memory (VirtIODevice *vdev, unsigned nvqs) |
|
NTSTATUS | virtio_find_queue (VirtIODevice *vdev, unsigned index, struct virtqueue **vq) |
|
NTSTATUS | virtio_find_queues (VirtIODevice *vdev, unsigned nvqs, struct virtqueue *vqs[]) |
|
void | virtio_delete_queue (struct virtqueue *vq) |
|
void | virtio_delete_queues (VirtIODevice *vdev) |
|
u32 | virtio_get_queue_size (struct virtqueue *vq) |
|
unsigned long | virtio_get_indirect_page_capacity () |
|
static ULONG FORCEINLINE | virtio_get_queue_descriptor_size () |
|
u16 | virtio_set_config_vector (VirtIODevice *vdev, u16 vector) |
|
u16 | virtio_set_queue_vector (struct virtqueue *vq, u16 vector) |
|
u8 | virtio_read_isr_status (VirtIODevice *vdev) |
|
int | virtio_get_bar_index (PPCI_COMMON_HEADER pPCIHeader, PHYSICAL_ADDRESS BasePA) |
|
◆ MAX_QUEUES_PER_DEVICE_DEFAULT
#define MAX_QUEUES_PER_DEVICE_DEFAULT 8 |
◆ virtio_feature_disable
#define virtio_feature_disable |
( |
|
FeaturesList, |
|
|
|
Feature |
|
) |
| ((FeaturesList) &= ~(1ULL << (Feature))) |
◆ virtio_feature_enable
#define virtio_feature_enable |
( |
|
FeaturesList, |
|
|
|
Feature |
|
) |
| ((FeaturesList) |= (1ULL << (Feature))) |
◆ virtio_is_feature_enabled
#define virtio_is_feature_enabled |
( |
|
FeaturesList, |
|
|
|
Feature |
|
) |
| (!!((FeaturesList) & (1ULL << (Feature)))) |
◆ VIRTIO_MSI_CONFIG_VECTOR
#define VIRTIO_MSI_CONFIG_VECTOR 20 |
◆ VIRTIO_MSI_NO_VECTOR
#define VIRTIO_MSI_NO_VECTOR 0xffff |
◆ VIRTIO_MSI_QUEUE_VECTOR
#define VIRTIO_MSI_QUEUE_VECTOR 22 |
◆ VIRTIO_PCI_CAP_COMMON_CFG
#define VIRTIO_PCI_CAP_COMMON_CFG 1 |
◆ VIRTIO_PCI_CAP_DEVICE_CFG
#define VIRTIO_PCI_CAP_DEVICE_CFG 4 |
◆ VIRTIO_PCI_CAP_ISR_CFG
#define VIRTIO_PCI_CAP_ISR_CFG 3 |
◆ VIRTIO_PCI_CAP_NOTIFY_CFG
#define VIRTIO_PCI_CAP_NOTIFY_CFG 2 |
◆ VIRTIO_PCI_CAP_PCI_CFG
#define VIRTIO_PCI_CAP_PCI_CFG 5 |
◆ VIRTIO_PCI_CONFIG
◆ VIRTIO_PCI_CONFIG_OFF
#define VIRTIO_PCI_CONFIG_OFF |
( |
|
msix_enabled | ) |
((msix_enabled) ? 24 : 20) |
◆ VIRTIO_PCI_GUEST_FEATURES
#define VIRTIO_PCI_GUEST_FEATURES 4 |
◆ VIRTIO_PCI_HOST_FEATURES
#define VIRTIO_PCI_HOST_FEATURES 0 |
◆ VIRTIO_PCI_ISR
◆ VIRTIO_PCI_ISR_CONFIG
#define VIRTIO_PCI_ISR_CONFIG 0x2 |
◆ VIRTIO_PCI_QUEUE_ADDR_SHIFT
#define VIRTIO_PCI_QUEUE_ADDR_SHIFT 12 |
◆ VIRTIO_PCI_QUEUE_NOTIFY
#define VIRTIO_PCI_QUEUE_NOTIFY 16 |
◆ VIRTIO_PCI_QUEUE_NUM
#define VIRTIO_PCI_QUEUE_NUM 12 |
◆ VIRTIO_PCI_QUEUE_PFN
#define VIRTIO_PCI_QUEUE_PFN 8 |
◆ VIRTIO_PCI_QUEUE_SEL
#define VIRTIO_PCI_QUEUE_SEL 14 |
◆ VIRTIO_PCI_STATUS
◆ VIRTIO_PCI_VRING_ALIGN
#define VIRTIO_PCI_VRING_ALIGN 4096 |
◆ VirtIODevice
◆ VirtIOQueueInfo
◆ VirtIOSystemOps
◆ virtio_add_status()
◆ virtio_delete_queue()
Definition at line 311 of file VirtIOPCICommon.c.
const struct virtio_device_ops * device
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
◆ virtio_delete_queues()
Definition at line 320 of file VirtIOPCICommon.c.
const struct virtio_device_ops * device
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Referenced by DeleteNetQueues(), and virtio_find_queues().
◆ virtio_device_initialize()
◆ virtio_device_ready()
◆ virtio_device_reset()
◆ virtio_device_shutdown()
Definition at line 77 of file VirtIOPCICommon.c.
VirtIOQueueInfo inline_info[MAX_QUEUES_PER_DEVICE_DEFAULT]
#define mem_free_nonpaged_block(vdev, addr)
Referenced by VirtIONetRelease().
◆ virtio_find_queue()
Definition at line 256 of file VirtIOPCICommon.c.
#define vdev_get_msix_vector(vdev, queue)
static NTSTATUS vp_setup_vq(struct virtqueue **queue, VirtIODevice *vdev, unsigned index, u16 msix_vec)
◆ virtio_find_queues()
Definition at line 267 of file VirtIOPCICommon.c.
293 for (
i = 0;
i < nvqs;
i++) {
#define vdev_get_msix_vector(vdev, queue)
NTSTATUS virtio_reserve_queue_memory(VirtIODevice *vdev, unsigned nvqs)
const struct virtio_device_ops * device
void virtio_delete_queues(VirtIODevice *vdev)
#define NT_SUCCESS(StatCode)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define STATUS_DEVICE_BUSY
#define VIRTIO_MSI_NO_VECTOR
static SERVICE_STATUS status
static NTSTATUS vp_setup_vq(struct virtqueue **queue, VirtIODevice *vdev, unsigned index, u16 msix_vec)
Referenced by FindNetQueues().
◆ virtio_get_bar_index()
Definition at line 357 of file VirtIOPCICommon.c.
366 BAR.
LowPart = pPCIHeader->u.type0.BaseAddresses[
i];
376 BAR.
HighPart = pPCIHeader->u.type0.BaseAddresses[++
i];
#define PCI_TYPE0_ADDRESSES
#define PCI_ADDRESS_IO_ADDRESS_MASK
#define PCI_MULTIFUNCTION
#define PCI_ADDRESS_MEMORY_TYPE_MASK
#define PCI_ADDRESS_MEMORY_ADDRESS_MASK
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
#define PCI_ADDRESS_IO_SPACE
Referenced by GetAdapterResources().
◆ virtio_get_config()
◆ virtio_get_features()
◆ virtio_get_indirect_page_capacity()
◆ virtio_get_queue_descriptor_size()
◆ virtio_get_queue_size()
◆ virtio_get_status()
◆ virtio_query_queue_allocation()
Definition at line 215 of file VirtIOPCICommon.c.
221 return vdev->
device->query_queue_alloc(vdev,
index, pNumEntries, pRingSize, pHeapSize);
const struct virtio_device_ops * device
◆ virtio_read_isr_status()
◆ virtio_reserve_queue_memory()
Definition at line 224 of file VirtIOPCICommon.c.
236 vdev->
info = new_info;
#define STATUS_INSUFFICIENT_RESOURCES
static ULONG FORCEINLINE virtio_get_queue_descriptor_size()
#define mem_alloc_nonpaged_block(vdev, size)
VirtIOQueueInfo inline_info[MAX_QUEUES_PER_DEVICE_DEFAULT]
#define mem_free_nonpaged_block(vdev, addr)
Referenced by virtio_find_queues().
◆ virtio_set_config()
Definition at line 197 of file VirtIOPCICommon.c.
static void virtio_cwrite_many(VirtIODevice *vdev, unsigned int offset, void *buf, size_t count, size_t bytes)
GLenum GLuint GLenum GLsizei const GLchar * buf
const struct virtio_device_ops * device
◆ virtio_set_config_vector()
◆ virtio_set_features()
Definition at line 119 of file VirtIOPCICommon.c.
121 unsigned char dev_status;
137 dev_status = vdev->
device->get_status(vdev);
139 DPrintf(0,
"virtio: device refuses features: %x\n", dev_status);
#define STATUS_INVALID_PARAMETER
#define VIRTIO_F_RING_PACKED
void virtio_add_status(VirtIODevice *vdev, u8 status)
#define VIRTIO_CONFIG_S_FEATURES_OK
const struct virtio_device_ops * device
#define virtio_is_feature_enabled(FeaturesList, Feature)
#define DPrintf(Level, Fmt)
#define VIRTIO_RING_F_EVENT_IDX
#define NT_SUCCESS(StatCode)
bool event_suppression_enabled
#define VIRTIO_F_VERSION_1
static SERVICE_STATUS status
Referenced by FinalizeFeatures().
◆ virtio_set_queue_vector()
◆ virtio_set_status()