L4Re Operating System Framework
Interface and Usage Documentation
|
Queue configuration entry. More...
#include <virtio.h>
Data Fields | |
l4_uint16_t | num_max |
R: maximum number of descriptors supported by this queue. | |
l4_uint16_t | num |
RW: number of descriptors configured for this queue. | |
l4_uint16_t | ready |
RW: queue ready flag (read-write) | |
l4_uint16_t | driver_notify_index |
W: Event index to be used for device notifications (device to driver) | |
l4_uint64_t | desc_addr |
W: address of descriptor table. | |
l4_uint64_t | avail_addr |
W: address of available ring. | |
l4_uint64_t | used_addr |
W: address of used ring. | |
l4_uint16_t | device_notify_index |
R: Event index to be used by the driver (driver to device) | |
Queue configuration entry.
An array of such entries is available at the l4virtio_config_hdr_t::queues_offset in the config data space.
Consistency rules for the queue config are:
num_max
at any time.num
, desc_addr
, avail_addr
, and used_addr
only when ready
is zero (0). Values in these fields are validated and used by the device only after successfully setting ready
to one (1), either by the IPC or by L4VIRTIO_CMD_CFG_QUEUE.device_notify_index
is valid only when ready
is one.device_notify_index
at any time, however the change is guaranteed to take effect after a successful L4VIRTIO_CMD_CFG_QUEUE or after a config_queue IPC. Note, the change might also have immediate effect, depending on the device implementation.