lkml.org 
[lkml]   [2011]   [Jun]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCHv2 RFC 1/4] virtio_ring: add capacity check API
    Add API to check ring capacity. Because of the option
    to use indirect buffers, this returns the worst
    case, not the normal case capacity.

    Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
    ---
    drivers/virtio/virtio_ring.c | 8 ++++++++
    include/linux/virtio.h | 5 +++++
    2 files changed, 13 insertions(+), 0 deletions(-)

    diff --git a/drivers/virtio/virtio_ring.c b/drivers/virtio/virtio_ring.c
    index 68b9136..23422f1 100644
    --- a/drivers/virtio/virtio_ring.c
    +++ b/drivers/virtio/virtio_ring.c
    @@ -344,6 +344,14 @@ void *virtqueue_get_buf(struct virtqueue *_vq, unsigned int *len)
    }
    EXPORT_SYMBOL_GPL(virtqueue_get_buf);

    +int virtqueue_min_capacity(struct virtqueue *_vq)
    +{
    + struct vring_virtqueue *vq = to_vvq(_vq);
    +
    + return vq->num_free;
    +}
    +EXPORT_SYMBOL_GPL(virtqueue_min_capacity);
    +
    void virtqueue_disable_cb(struct virtqueue *_vq)
    {
    struct vring_virtqueue *vq = to_vvq(_vq);
    diff --git a/include/linux/virtio.h b/include/linux/virtio.h
    index 7108857..209220d 100644
    --- a/include/linux/virtio.h
    +++ b/include/linux/virtio.h
    @@ -42,6 +42,9 @@ struct virtqueue {
    * vq: the struct virtqueue we're talking about.
    * len: the length written into the buffer
    * Returns NULL or the "data" token handed to add_buf.
    + * virtqueue_min_capacity: get the current capacity of the queue
    + * vq: the struct virtqueue we're talking about.
    + * Returns the current worst case capacity of the queue.
    * virtqueue_disable_cb: disable callbacks
    * vq: the struct virtqueue we're talking about.
    * Note that this is not necessarily synchronous, hence unreliable and only
    @@ -89,6 +92,8 @@ void virtqueue_kick(struct virtqueue *vq);

    void *virtqueue_get_buf(struct virtqueue *vq, unsigned int *len);

    +int virtqueue_min_capacity(struct virtqueue *vq);
    +
    void virtqueue_disable_cb(struct virtqueue *vq);

    bool virtqueue_enable_cb(struct virtqueue *vq);
    --
    1.7.5.53.gc233e


    \
     
     \ /
      Last update: 2011-06-02 17:47    [W:2.253 / U:0.080 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site