Zephyr Project API 4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
Virtio Interface

Virtio Interface. More...

Data Structures

struct  virtio_driver_api
 Virtio api structure. More...
 

Typedefs

typedef uint16_t(* virtio_enumerate_queues) (uint16_t queue_idx, uint16_t max_queue_size, void *opaque)
 Callback used during virtqueue enumeration.
 

Functions

static struct virtqvirtio_get_virtqueue (const struct device *dev, uint16_t queue_idx)
 Returns virtqueue at given idx.
 
static void virtio_notify_virtqueue (const struct device *dev, uint16_t queue_idx)
 Notifies virtqueue.
 
static void * virtio_get_device_specific_config (const struct device *dev)
 Returns device specific config.
 
static bool virtio_read_device_feature_bit (const struct device *dev, int bit)
 Returns feature bit offered by virtio device.
 
static int virtio_write_driver_feature_bit (const struct device *dev, int bit, bool value)
 Sets feature bit.
 
static int virtio_commit_feature_bits (const struct device *dev)
 Commits feature bits.
 
static int virtio_init_virtqueues (const struct device *dev, uint16_t num_queues, virtio_enumerate_queues cb, void *opaque)
 Initializes virtqueues.
 
static void virtio_finalize_init (const struct device *dev)
 Finalizes initialization of the virtio device.
 

Detailed Description

Virtio Interface.

Typedef Documentation

◆ virtio_enumerate_queues

typedef uint16_t(* virtio_enumerate_queues) (uint16_t queue_idx, uint16_t max_queue_size, void *opaque)

#include <include/zephyr/virtio/virtio.h>

Callback used during virtqueue enumeration.

Parameters
queue_idxindex of currently inspected queue
max_queue_sizemaximum permitted size of currently inspected queue
opaquepointer to user provided data
Returns
the size of currently inspected virtqueue we want to set

Function Documentation

◆ virtio_commit_feature_bits()

static int virtio_commit_feature_bits ( const struct device dev)
inlinestatic

#include <include/zephyr/virtio/virtio.h>

Commits feature bits.

Parameters
devvirtio device it operates on
Returns
0 on success or negative error code on failure

◆ virtio_finalize_init()

static void virtio_finalize_init ( const struct device dev)
inlinestatic

#include <include/zephyr/virtio/virtio.h>

Finalizes initialization of the virtio device.

Parameters
devvirtio device it operates on

◆ virtio_get_device_specific_config()

static void * virtio_get_device_specific_config ( const struct device dev)
inlinestatic

#include <include/zephyr/virtio/virtio.h>

Returns device specific config.

Parameters
devvirtio device it operates on
Returns
pointer to the device specific config or NULL if its not present

◆ virtio_get_virtqueue()

static struct virtq * virtio_get_virtqueue ( const struct device dev,
uint16_t  queue_idx 
)
inlinestatic

#include <include/zephyr/virtio/virtio.h>

Returns virtqueue at given idx.

Parameters
devvirtio device it operates on
queue_idxindex of virtqueue to get
Returns
pointer to virtqueue or NULL if not present

◆ virtio_init_virtqueues()

static int virtio_init_virtqueues ( const struct device dev,
uint16_t  num_queues,
virtio_enumerate_queues  cb,
void *  opaque 
)
inlinestatic

#include <include/zephyr/virtio/virtio.h>

Initializes virtqueues.

Parameters
devvirtio device it operates on
num_queuesnumber of queues to initialize
cbcallback called for each available virtqueue
opaquepointer to user provided data that will be passed to the callback
Returns
0 on success or negative error code on failure

◆ virtio_notify_virtqueue()

static void virtio_notify_virtqueue ( const struct device dev,
uint16_t  queue_idx 
)
inlinestatic

#include <include/zephyr/virtio/virtio.h>

Notifies virtqueue.

Note that according to spec 2.7.13.3 the device may access the buffers as soon as the avail->idx is increased, which is done by virtq_add_buffer_chain, so the device may access the buffers even without notifying it with virtio_notify_virtqueue

Parameters
devvirtio device it operates on
queue_idxvirtqueue to be notified

◆ virtio_read_device_feature_bit()

static bool virtio_read_device_feature_bit ( const struct device dev,
int  bit 
)
inlinestatic

#include <include/zephyr/virtio/virtio.h>

Returns feature bit offered by virtio device.

Parameters
devvirtio device it operates on
bitselected bit
Returns
value of the offered feature bit

◆ virtio_write_driver_feature_bit()

static int virtio_write_driver_feature_bit ( const struct device dev,
int  bit,
bool  value 
)
inlinestatic

#include <include/zephyr/virtio/virtio.h>

Sets feature bit.

Parameters
devvirtio device it operates on
bitselected bit
valuebit value to write
Returns
0 on success or negative error code on failure