Lines Matching refs:virtqueue

32 struct virtqueue;
34 /// interrupt handler for virtqueue interrupts
35 typedef void (*virtq_intr_hander_t)(struct virtqueue *, void *);
37 /// virtqueue default alignment
57 * this structure holds necessary data to allocate a new virtqueue
75 uint8_t auto_add; ///< adds this virtqueue to the device
92 * \brief allocates and initiates a new virtqueue structure
95 * \param vq pointer where to store the new virtqueue pointer
100 struct virtqueue **vq);
103 * \brief allocates and initiates a new virtqueue structure
107 * \param vq pointer where to store the new virtqueue pointer
113 struct virtqueue **vq);
118 * \param vq pointer to the virtqueue memory to be freed
122 errval_t virtio_virtqueue_free(struct virtqueue *vq);
125 void *virtqueue_drain(struct virtqueue *vq, int *last);
126 int virtqueue_reinit(struct virtqueue *vq, uint16_t size);
132 * Getter functions for certain values of the virtqueue structure
138 * \param vq pointer to the virtqueue structure
142 lpaddr_t virtio_virtqueue_get_vring_paddr(struct virtqueue *vq);
148 * \param vq pointer to the virtqueue structure
151 void virtio_virtqueue_get_vring_cap(struct virtqueue *vq,
155 * \brief Returns the queue index of the virtqueue of the device
157 * \param vq pointer to the virtqueue structure
161 uint16_t virtio_virtqueue_get_queue_index(struct virtqueue *vq);
166 * \param the virtqueue to get the alignment from
170 lvaddr_t virtio_virtqueue_get_vring_align(struct virtqueue *vq);
174 * this virtqueue
176 * \param vq pointer to the virtqueue structure
180 uint16_t virtio_virtqueue_get_num_desc(struct virtqueue *vq);
183 * \brief Checks if the virtqueue is empty
185 * \param vq pointer to the virtqueue structure
190 bool virtio_virtqueue_is_empty(struct virtqueue *vq);
193 * \brief Checks if the virtqueue is full
195 * \param vq pointer to the virtqueue structure
200 bool virtio_virtqueue_is_full(struct virtqueue *vq);
205 * \param vq pointer to the virtqueue structure
209 uint16_t virtio_virtqueue_get_num_used(struct virtqueue *vq);
215 * \param vq the virtqueue
220 uint8_t virtio_virtqueue_has_buffers(struct virtqueue *vq);
225 * \param vq the virtqueue
230 lvaddr_t virtio_virtqueue_buffer_vbase(struct virtqueue *vq);
240 * \param vq the virtqueue to enable the interrupts
245 bool virtio_virtqueue_intr_enable(struct virtqueue *vq);
250 * \param vq the virtqueue to enable the interrupts
256 bool virtio_virtqueue_intr_postpone(struct virtqueue *vq,
268 bool virtio_virtqueue_intr_filter(struct virtqueue *vq);
271 * \brief calls the interrupt handler for this virtqueue
273 * \param vq virtqueue to call the intr handler for
275 void virtio_virtqueue_intr_handle(struct virtqueue *vq);
278 * \brief disables the interrupts for the given virtqueue by giving a hint
281 * \param vq virtqueue to disable the interrupts
283 void virtio_virtqueue_intr_disable(struct virtqueue *vq);
289 * \param vq virtqueue to notify the host
291 void virtio_virtqueue_notify_host(struct virtqueue *vq);
318 * \brief Enqueues a new descriptor chain into the virtqueue
320 * \param vq the virtqueue the descriptor chain gets enqueued in
321 * \param bl list of buffers to enqueue into the virtqueue
329 errval_t virtio_virtqueue_desc_enqueue(struct virtqueue *vq,
336 * \brief dequeues a descriptor chain form the virtqueue
338 * \param vq the virtqueue to dequeue descriptors from
346 errval_t virtio_virtqueue_desc_dequeue(struct virtqueue *vq,
352 * \brief polls the virtqueue
354 * \param vq the virtqueue to dequeue descriptors from
362 errval_t virtio_virtqueue_poll(struct virtqueue *vq,
368 * \brief returns a buffer allocator based on the buffers with the virtqueue
371 * \param vq the virtqueue to get the buffer allocator
377 errval_t virtio_virtqueue_get_buf_alloc(struct virtqueue *vq,