summaryrefslogtreecommitdiff
path: root/libdde_linux26/contrib/include/linux/virtio_ring.h
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2013-07-27 22:07:53 +0000
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2013-07-27 22:07:53 +0000
commit4fbe7358c7747a9165f776eb19addbb9baf7def2 (patch)
treebc7076b4f6d10c2cc2942539bb666e50f0b66954 /libdde_linux26/contrib/include/linux/virtio_ring.h
parent21adb5284111190057db245cfc2b54091920c373 (diff)
rename libdde_linux26 into libdde-linux26 to make dpkg-source happy
Diffstat (limited to 'libdde_linux26/contrib/include/linux/virtio_ring.h')
-rw-r--r--libdde_linux26/contrib/include/linux/virtio_ring.h129
1 files changed, 0 insertions, 129 deletions
diff --git a/libdde_linux26/contrib/include/linux/virtio_ring.h b/libdde_linux26/contrib/include/linux/virtio_ring.h
deleted file mode 100644
index 71e03722..00000000
--- a/libdde_linux26/contrib/include/linux/virtio_ring.h
+++ /dev/null
@@ -1,129 +0,0 @@
-#ifndef _LINUX_VIRTIO_RING_H
-#define _LINUX_VIRTIO_RING_H
-/* An interface for efficient virtio implementation, currently for use by KVM
- * and lguest, but hopefully others soon. Do NOT change this since it will
- * break existing servers and clients.
- *
- * This header is BSD licensed so anyone can use the definitions to implement
- * compatible drivers/servers.
- *
- * Copyright Rusty Russell IBM Corporation 2007. */
-#include <linux/types.h>
-
-/* This marks a buffer as continuing via the next field. */
-#define VRING_DESC_F_NEXT 1
-/* This marks a buffer as write-only (otherwise read-only). */
-#define VRING_DESC_F_WRITE 2
-
-/* The Host uses this in used->flags to advise the Guest: don't kick me when
- * you add a buffer. It's unreliable, so it's simply an optimization. Guest
- * will still kick if it's out of buffers. */
-#define VRING_USED_F_NO_NOTIFY 1
-/* The Guest uses this in avail->flags to advise the Host: don't interrupt me
- * when you consume a buffer. It's unreliable, so it's simply an
- * optimization. */
-#define VRING_AVAIL_F_NO_INTERRUPT 1
-
-/* Virtio ring descriptors: 16 bytes. These can chain together via "next". */
-struct vring_desc
-{
- /* Address (guest-physical). */
- __u64 addr;
- /* Length. */
- __u32 len;
- /* The flags as indicated above. */
- __u16 flags;
- /* We chain unused descriptors via this, too */
- __u16 next;
-};
-
-struct vring_avail
-{
- __u16 flags;
- __u16 idx;
- __u16 ring[];
-};
-
-/* u32 is used here for ids for padding reasons. */
-struct vring_used_elem
-{
- /* Index of start of used descriptor chain. */
- __u32 id;
- /* Total length of the descriptor chain which was used (written to) */
- __u32 len;
-};
-
-struct vring_used
-{
- __u16 flags;
- __u16 idx;
- struct vring_used_elem ring[];
-};
-
-struct vring {
- unsigned int num;
-
- struct vring_desc *desc;
-
- struct vring_avail *avail;
-
- struct vring_used *used;
-};
-
-/* The standard layout for the ring is a continuous chunk of memory which looks
- * like this. We assume num is a power of 2.
- *
- * struct vring
- * {
- * // The actual descriptors (16 bytes each)
- * struct vring_desc desc[num];
- *
- * // A ring of available descriptor heads with free-running index.
- * __u16 avail_flags;
- * __u16 avail_idx;
- * __u16 available[num];
- *
- * // Padding to the next align boundary.
- * char pad[];
- *
- * // A ring of used descriptor heads with free-running index.
- * __u16 used_flags;
- * __u16 used_idx;
- * struct vring_used_elem used[num];
- * };
- */
-static inline void vring_init(struct vring *vr, unsigned int num, void *p,
- unsigned long align)
-{
- vr->num = num;
- vr->desc = p;
- vr->avail = p + num*sizeof(struct vring_desc);
- vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + align-1)
- & ~(align - 1));
-}
-
-static inline unsigned vring_size(unsigned int num, unsigned long align)
-{
- return ((sizeof(struct vring_desc) * num + sizeof(__u16) * (2 + num)
- + align - 1) & ~(align - 1))
- + sizeof(__u16) * 2 + sizeof(struct vring_used_elem) * num;
-}
-
-#ifdef __KERNEL__
-#include <linux/irqreturn.h>
-struct virtio_device;
-struct virtqueue;
-
-struct virtqueue *vring_new_virtqueue(unsigned int num,
- unsigned int vring_align,
- struct virtio_device *vdev,
- void *pages,
- void (*notify)(struct virtqueue *vq),
- void (*callback)(struct virtqueue *vq));
-void vring_del_virtqueue(struct virtqueue *vq);
-/* Filter out transport-specific feature bits. */
-void vring_transport_features(struct virtio_device *vdev);
-
-irqreturn_t vring_interrupt(int irq, void *_vq);
-#endif /* __KERNEL__ */
-#endif /* _LINUX_VIRTIO_RING_H */