summaryrefslogtreecommitdiffstats
path: root/iov.h
diff options
context:
space:
mode:
authorMichael S. Tsirkin2012-09-24 13:02:52 +0200
committerMichael S. Tsirkin2012-10-29 17:25:22 +0100
commitd336336c8164859e4527cbb9f3df189f8bb406de (patch)
tree535d5bcd4bc99c024dce289d87fa0b1dc5f76809 /iov.h
parentvirtio-net: track host/guest header length (diff)
downloadqemu-d336336c8164859e4527cbb9f3df189f8bb406de.tar.gz
qemu-d336336c8164859e4527cbb9f3df189f8bb406de.tar.xz
qemu-d336336c8164859e4527cbb9f3df189f8bb406de.zip
iov: add iov_cpy
Add API to copy part of iovec safely. Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'iov.h')
-rw-r--r--iov.h9
1 files changed, 9 insertions, 0 deletions
diff --git a/iov.h b/iov.h
index a73569f94e..34c8ec9faa 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. dst vector count is returned.
+ */
+unsigned iov_copy(struct iovec *dst_iov, unsigned int dst_iov_cnt,
+ const struct iovec *iov, unsigned int iov_cnt,
+ size_t offset, size_t bytes);