From baaa85b1b5b7feb6fcc4acaa66a4a36425199bb9 Mon Sep 17 00:00:00 2001 From: "Michael S. Tsirkin" Date: Fri, 20 May 2011 02:10:27 +0300 Subject: [PATCH] --- yaml --- r: 252947 b: refs/heads/master c: bf7035bf20563a6cadcb9e870406e7b21daf5e30 h: refs/heads/master i: 252945: 5d47ede6a3ec95ce7e5b86f0e1a9e9583644a225 252943: 83fff7861abc512211bab9048b8e2efca45cc51c v: v3 --- [refs] | 2 +- trunk/include/linux/virtio_ring.h | 14 ++++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index d1998630057d..b40a97435198 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 770b31a85e000b0194974922f238a30ade4246b6 +refs/heads/master: bf7035bf20563a6cadcb9e870406e7b21daf5e30 diff --git a/trunk/include/linux/virtio_ring.h b/trunk/include/linux/virtio_ring.h index c4eef73deb3f..4a32cb6da425 100644 --- a/trunk/include/linux/virtio_ring.h +++ b/trunk/include/linux/virtio_ring.h @@ -146,6 +146,20 @@ static inline unsigned vring_size(unsigned int num, unsigned long align) + sizeof(__u16) * 3 + sizeof(struct vring_used_elem) * num; } +/* The following is used with USED_EVENT_IDX and AVAIL_EVENT_IDX */ +/* Assuming a given event_idx value from the other size, if + * we have just incremented index from old to new_idx, + * should we trigger an event? */ +static inline int vring_need_event(__u16 event_idx, __u16 new_idx, __u16 old) +{ + /* Note: Xen has similar logic for notification hold-off + * in include/xen/interface/io/ring.h with req_event and req_prod + * corresponding to event_idx + 1 and new_idx respectively. + * Note also that req_event and req_prod in Xen start at 1, + * event indexes in virtio start at 0. */ + return (__u16)(new_idx - event_idx - 1) < (__u16)(new_idx - old); +} + #ifdef __KERNEL__ #include struct virtio_device;