Deleted Added
full compact
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 ---