From: Anthony Liguori <anthony@codemonkey.ws>
To: "Michael S. Tsirkin" <mst@redhat.com>,
qemu-devel@nongnu.org, Jason Wang <jasowang@redhat.com>,
stefanha@linux.vnet.ibm.com, aurelien@aurel32.net
Subject: Re: [Qemu-devel] [PATCH 03/14] iov: add iov_cpy
Date: Mon, 24 Sep 2012 19:34:00 -0500 [thread overview]
Message-ID: <87d31b0wlj.fsf@codemonkey.ws> (raw)
In-Reply-To: <a2b6d7e7a1190474b61b054dc483d03ba5e09f4a.1348527749.git.mst@redhat.com>
"Michael S. Tsirkin" <mst@redhat.com> writes:
> Add API to copy part of iovec safely.
>
> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
> ---
> iov.c | 23 +++++++++++++++++++++++
> iov.h | 9 +++++++++
> 2 files changed, 32 insertions(+)
>
> diff --git a/iov.c b/iov.c
> index c6a66f0..0dfcb28 100644
> --- a/iov.c
> +++ b/iov.c
> @@ -228,3 +228,26 @@ void iov_hexdump(const struct iovec *iov, const unsigned int iov_cnt,
> fprintf(fp, "\n");
> }
> }
> +
> +unsigned iov_cpy(struct iovec *dst_iov, unsigned int dst_iov_cnt,
> + const struct iovec *iov, unsigned int iov_cnt,
> + size_t offset, size_t bytes)
I think the readability f the cde wuld be imprved if yu added the
missing 'o' to iov_cpy.
Otherwise:
Reviewed-by: Anthony Liguori <aliguori@us.ibm.com>
Regards,
Anthony Liguori
> +{
> + size_t len;
> + unsigned int i, j;
> + for (i = 0, j = 0; i < iov_cnt && j < dst_iov_cnt && bytes; i++) {
> + if (offset >= iov[i].iov_len) {
> + offset -= iov[i].iov_len;
> + continue;
> + }
> + len = MIN(bytes, iov[i].iov_len - offset);
> +
> + dst_iov[j].iov_base = iov[i].iov_base + offset;
> + dst_iov[j].iov_len = len;
> + j++;
> + bytes -= len;
> + offset = 0;
> + }
> + assert(offset == 0);
> + return j;
> +}
> diff --git a/iov.h b/iov.h
> index a73569f..f0daefa 100644
> --- a/iov.h
> +++ b/iov.h
> @@ -86,3 +86,12 @@ ssize_t iov_send_recv(int sockfd, struct iovec *iov, unsigned iov_cnt,
> */
> void iov_hexdump(const struct iovec *iov, const unsigned int iov_cnt,
> FILE *fp, const char *prefix, size_t limit);
> +
> +/*
> + * Partial copy of vector from iov to dst_iov (data is not copied).
> + * dst_iov overlaps iov at a specified offset.
> + * size of dst_iov is at most bytes. Actual size is returned.
> + */
> +size_t iov_cpy(struct iovec *dst_iov, unsigned int dst_iov_cnt,
> + const struct iovec *iov, unsigned int iov_cnt,
> + size_t offset, size_t bytes);
> --
> MST
next prev parent reply other threads:[~2012-09-25 0:34 UTC|newest]
Thread overview: 24+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-24 23:04 [Qemu-devel] [PATCH 00/14] virtio-net: iovec handling cleanup Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 01/14] virtio-net: track host/guest header length Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 02/14] iov: add const annotation Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 03/14] iov: add iov_cpy Michael S. Tsirkin
2012-09-25 0:34 ` Anthony Liguori [this message]
2012-09-25 0:45 ` Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 04/14] virtio-net: avoid sg copy Michael S. Tsirkin
2012-09-25 0:37 ` Anthony Liguori
2012-09-25 0:44 ` Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 05/14] virtio-net: use safe iov operations for rx Michael S. Tsirkin
2012-09-25 0:38 ` Anthony Liguori
2012-09-24 23:04 ` [Qemu-devel] [PATCH 06/14] virtio-net: refactor receive_hdr Michael S. Tsirkin
2012-09-25 0:39 ` Anthony Liguori
2012-09-24 23:04 ` [Qemu-devel] [PATCH 07/14] virtio-net: first s/g is always at start of buf Michael S. Tsirkin
2012-09-25 0:39 ` Anthony Liguori
2012-09-24 23:04 ` [Qemu-devel] [PATCH 08/14] virtio-net: switch tx to safe iov functions Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 09/14] virtio-net: simplify rx code Michael S. Tsirkin
2012-09-24 23:04 ` [Qemu-devel] [PATCH 10/14] virtio: don't mark unaccessed memory as dirty Michael S. Tsirkin
2012-09-24 23:05 ` [Qemu-devel] [PATCH 11/14] virtio-net: fix used len for tx Michael S. Tsirkin
2012-09-25 6:15 ` Jason Wang
2012-09-25 7:20 ` Michael S. Tsirkin
2012-09-24 23:05 ` [Qemu-devel] [PATCH 12/14] virtio-net: minor code simplification Michael S. Tsirkin
2012-09-24 23:05 ` [Qemu-devel] [PATCH 13/14] virtio-net: test peer header support at init time Michael S. Tsirkin
2012-09-24 23:05 ` [Qemu-devel] [PATCH 14/14] virtio-net: enable mrg buf header in tap on linux Michael S. Tsirkin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87d31b0wlj.fsf@codemonkey.ws \
--to=anthony@codemonkey.ws \
--cc=aurelien@aurel32.net \
--cc=jasowang@redhat.com \
--cc=mst@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@linux.vnet.ibm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.