iPXE
|
#include "etherboot.h"
#include "ipxe/io.h"
#include "ipxe/virtio-pci.h"
#include "ipxe/virtio-ring.h"
Go to the source code of this file.
Macros | |
#define | BUG() |
#define | BUG_ON(condition) do { if (condition) BUG(); } while (0) |
Functions | |
FILE_LICENCE (GPL2_OR_LATER) | |
void | vring_detach (struct vring_virtqueue *vq, unsigned int head) |
void * | vring_get_buf (struct vring_virtqueue *vq, unsigned int *len) |
void | vring_add_buf (struct vring_virtqueue *vq, struct vring_list list[], unsigned int out, unsigned int in, void *opaque, int num_added) |
void | vring_kick (struct virtio_pci_modern_device *vdev, unsigned int ioaddr, struct vring_virtqueue *vq, int num_added) |
#define BUG | ( | ) |
Definition at line 24 of file virtio-ring.c.
Definition at line 29 of file virtio-ring.c.
FILE_LICENCE | ( | GPL2_OR_LATER | ) |
void vring_detach | ( | struct vring_virtqueue * | vq, |
unsigned int | head | ||
) |
Definition at line 37 of file virtio-ring.c.
References vring::desc, vring_desc::flags, vring_virtqueue::free_head, head, vring_desc::next, vring_virtqueue::vring, VRING_DESC_F_NEXT, and wmb().
Referenced by vring_get_buf().
void* vring_get_buf | ( | struct vring_virtqueue * | vq, |
unsigned int * | len | ||
) |
Definition at line 62 of file virtio-ring.c.
References BUG_ON, id, vring_used_elem::id, vring_virtqueue::last_used_idx, len, vring_used_elem::len, NULL, vring::num, vring_used::ring, vring::used, vring_virtqueue::vdata, vring_virtqueue::vring, vring_detach(), vring_more_used(), and wmb().
Referenced by virtnet_process_rx_packets(), and virtnet_process_tx_packets().
void vring_add_buf | ( | struct vring_virtqueue * | vq, |
struct vring_list | list[], | ||
unsigned int | out, | ||
unsigned int | in, | ||
void * | opaque, | ||
int | num_added | ||
) |
Definition at line 86 of file virtio-ring.c.
References vring_desc::addr, vring_list::addr, vring::avail, BUG_ON, vring::desc, vring_desc::flags, vring_virtqueue::free_head, head, vring_avail::idx, in, vring_desc::len, vring_list::length, vring_desc::next, vring::num, out, vring_avail::ring, vring_virtqueue::vdata, vring_virtqueue::vring, VRING_DESC_F_NEXT, VRING_DESC_F_WRITE, and wmb().
Referenced by virtnet_enqueue_iob().
void vring_kick | ( | struct virtio_pci_modern_device * | vdev, |
unsigned int | ioaddr, | ||
struct vring_virtqueue * | vq, | ||
int | num_added | ||
) |
Definition at line 125 of file virtio-ring.c.
References vring::avail, vring_used::flags, vring_avail::idx, ioaddr, mb(), vring_virtqueue::queue_index, vring::used, vp_notify(), vpm_notify(), vring_virtqueue::vring, VRING_USED_F_NO_NOTIFY, and wmb().
Referenced by virtnet_enqueue_iob().