xref: /kvmtool/include/kvm/iovec.h (revision c492534f3ac930107a628c0fadd4c152e8972b35)
1d8f36177SSasha Levin #ifndef KVM_UTIL_IOVEC_H_
2d8f36177SSasha Levin #define KVM_UTIL_IOVEC_H_
3d8f36177SSasha Levin 
4d8f36177SSasha Levin extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len);
5d8f36177SSasha Levin extern int memcpy_fromiovecend(unsigned char *kdata, const struct iovec *iov,
6d8f36177SSasha Levin 				size_t offset, int len);
7d8f36177SSasha Levin extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len);
8d8f36177SSasha Levin extern int memcpy_toiovecend(const struct iovec *v, unsigned char *kdata,
9d8f36177SSasha Levin 				size_t offset, int len);
10*c492534fSJean-Philippe Brucker ssize_t memcpy_fromiovec_safe(void *buf, struct iovec **iov, size_t len,
11*c492534fSJean-Philippe Brucker 			      size_t *iovcount);
12d8f36177SSasha Levin 
iov_size(const struct iovec * iovec,size_t len)13d8f36177SSasha Levin static inline size_t iov_size(const struct iovec *iovec, size_t len)
14d8f36177SSasha Levin {
15d8f36177SSasha Levin 	size_t size = 0, i;
16d8f36177SSasha Levin 
17d8f36177SSasha Levin 	for (i = 0; i < len; i++)
18d8f36177SSasha Levin 		size += iovec[i].iov_len;
19d8f36177SSasha Levin 
20d8f36177SSasha Levin 	return size;
21d8f36177SSasha Levin }
22d8f36177SSasha Levin 
23d8f36177SSasha Levin #endif
24