virtio_ring.h (238072) | virtio_ring.h (238360) |
---|---|
1/*- 2 * Copyright Rusty Russell IBM Corporation 2007. 3 * 4 * This header is BSD licensed so anyone can use the definitions to implement 5 * compatible drivers/servers. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 13 unchanged lines hidden (view full) --- 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 * | 1/*- 2 * Copyright Rusty Russell IBM Corporation 2007. 3 * 4 * This header is BSD licensed so anyone can use the definitions to implement 5 * compatible drivers/servers. 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions --- 13 unchanged lines hidden (view full) --- 22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 28 * SUCH DAMAGE. 29 * |
30 * $FreeBSD: head/sys/dev/virtio/virtio_ring.h 238072 2012-07-03 15:15:41Z obrien $ | 30 * $FreeBSD: head/sys/dev/virtio/virtio_ring.h 238360 2012-07-11 02:57:19Z grehan $ |
31 */ 32 33#ifndef VIRTIO_RING_H 34#define VIRTIO_RING_H 35 36/* This marks a buffer as continuing via the next field. */ 37#define VRING_DESC_F_NEXT 1 38/* This marks a buffer as write-only (otherwise read-only). */ --- 76 unchanged lines hidden (view full) --- 115 * 116 * NOTE: for VirtIO PCI, align is 4096. 117 */ 118 119/* 120 * We publish the used event index at the end of the available ring, and vice 121 * versa. They are at the end for backwards compatibility. 122 */ | 31 */ 32 33#ifndef VIRTIO_RING_H 34#define VIRTIO_RING_H 35 36/* This marks a buffer as continuing via the next field. */ 37#define VRING_DESC_F_NEXT 1 38/* This marks a buffer as write-only (otherwise read-only). */ --- 76 unchanged lines hidden (view full) --- 115 * 116 * NOTE: for VirtIO PCI, align is 4096. 117 */ 118 119/* 120 * We publish the used event index at the end of the available ring, and vice 121 * versa. They are at the end for backwards compatibility. 122 */ |
123#define vring_used_event(vr) ((vr)->avail->ring[(vr)->num]) 124#define vring_avail_event(vr) (*(uint16_t *)&(vr)->used->ring[(vr)->num]) | 123#define vring_used_event(vr) ((vr)->avail->ring[(vr)->num]) 124#define vring_avail_event(vr) (*(uint16_t *)&(vr)->used->ring[(vr)->num]) |
125 126static inline int 127vring_size(unsigned int num, unsigned long align) 128{ 129 int size; 130 131 size = num * sizeof(struct vring_desc); | 125 126static inline int 127vring_size(unsigned int num, unsigned long align) 128{ 129 int size; 130 131 size = num * sizeof(struct vring_desc); |
132 size += sizeof(struct vring_avail) + (num * sizeof(uint16_t)); | 132 size += sizeof(struct vring_avail) + (num * sizeof(uint16_t)) + 133 sizeof(uint16_t); |
133 size = (size + align - 1) & ~(align - 1); 134 size += sizeof(struct vring_used) + | 134 size = (size + align - 1) & ~(align - 1); 135 size += sizeof(struct vring_used) + |
135 (num * sizeof(struct vring_used_elem)); | 136 (num * sizeof(struct vring_used_elem)) + sizeof(uint16_t); |
136 return (size); 137} 138 139static inline void 140vring_init(struct vring *vr, unsigned int num, uint8_t *p, 141 unsigned long align) 142{ 143 vr->num = num; --- 21 unchanged lines hidden --- | 137 return (size); 138} 139 140static inline void 141vring_init(struct vring *vr, unsigned int num, uint8_t *p, 142 unsigned long align) 143{ 144 vr->num = num; --- 21 unchanged lines hidden --- |