]> git.proxmox.com Git - qemu.git/blame - iov.h
change iov_* function prototypes to be more appropriate
[qemu.git] / iov.h
CommitLineData
e4d5639d
AS
1/*
2 * Helpers for getting linearized buffers from iov / filling buffers into iovs
3 *
4 * Copyright (C) 2010 Red Hat, Inc.
5 *
6 * Author(s):
7 * Amit Shah <amit.shah@redhat.com>
8 *
9 * This work is licensed under the terms of the GNU GPL, version 2. See
10 * the COPYING file in the top-level directory.
11 */
12
13#include "qemu-common.h"
14
dcf6f5e1
MT
15/**
16 * count and return data size, in bytes, of an iovec
17 * starting at `iov' of `iov_cnt' number of elements.
18 */
19size_t iov_size(const struct iovec *iov, const unsigned int iov_cnt);
20
21/**
22 * Copy from single continuous buffer to scatter-gather vector of buffers
23 * (iovec) and back like memcpy() between two continuous memory regions.
24 * Data in single continuous buffer starting at address `buf' and
25 * `bytes' bytes long will be copied to/from an iovec `iov' with
26 * `iov_cnt' number of elements, starting at byte position `offset'
27 * within the iovec. If the iovec does not contain enough space,
28 * only part of data will be copied, up to the end of the iovec.
29 * Number of bytes actually copied will be returned, which is
30 * min(bytes, iov_size(iov)-offset)
31 */
348e7b8d 32size_t iov_from_buf(struct iovec *iov, unsigned int iov_cnt,
dcf6f5e1 33 size_t offset, const void *buf, size_t bytes);
348e7b8d 34size_t iov_to_buf(const struct iovec *iov, const unsigned int iov_cnt,
dcf6f5e1
MT
35 size_t offset, void *buf, size_t bytes);
36
37/**
38 * Set data bytes pointed out by iovec `iov' of size `iov_cnt' elements,
39 * starting at byte offset `start', to value `fillc', repeating it
40 * `bytes' number of times.
41 * If `bytes' is large enough, only last bytes portion of iovec,
42 * up to the end of it, will be filled with the specified value.
43 * Function return actual number of bytes processed, which is
44 * min(size, iov_size(iov) - offset).
45 */
46size_t iov_memset(const struct iovec *iov, const unsigned int iov_cnt,
47 size_t offset, int fillc, size_t bytes);
48
49/**
50 * Produce a text hexdump of iovec `iov' with `iov_cnt' number of elements
51 * in file `fp', prefixing each line with `prefix' and processing not more
52 * than `limit' data bytes.
53 */
3a1dca94
GH
54void iov_hexdump(const struct iovec *iov, const unsigned int iov_cnt,
55 FILE *fp, const char *prefix, size_t limit);