Zephyr Project API 4.1.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
virtqueue.h File Reference
#include <stdint.h>
#include <stddef.h>
#include <zephyr/kernel.h>

Go to the source code of this file.

Data Structures

struct  virtq_desc
 virtqueue descriptor More...
 
struct  virtq_avail
 virtqueue available ring More...
 
struct  virtq_used_elem
 used descriptor chain More...
 
struct  virtq_used
 virtqueue used ring More...
 
struct  virtq_receive_callback_entry
 callback descriptor More...
 
struct  virtq
 virtqueue More...
 
struct  virtq_buf
 single buffer passed to virtq_add_buffer_chain More...
 

Macros

#define VIRTQ_DESC_F_NEXT   1
 used in virtq_desc::flags, enables chaining descriptor via virtq_desc::next
 
#define VIRTQ_DESC_F_WRITE   2
 used in virtq_desc::flags, makes descriptor device writeable
 

Typedefs

typedef void(* virtq_receive_callback) (void *opaque, uint32_t used_len)
 receive callback function type
 

Functions

int virtq_create (struct virtq *v, size_t size)
 creates virtqueue
 
void virtq_free (struct virtq *v)
 frees virtqueue
 
int virtq_add_buffer_chain (struct virtq *v, struct virtq_buf *bufs, uint16_t bufs_size, uint16_t device_readable_count, virtq_receive_callback cb, void *cb_opaque, k_timeout_t timeout)
 adds chain of buffers to the virtqueue
 
void virtq_add_free_desc (struct virtq *v, uint16_t desc_idx)
 adds free descriptor back
 
int virtq_get_free_desc (struct virtq *v, uint16_t *desc_idx, k_timeout_t timeout)
 gets next free descriptor