Lines Matching refs:qiov
137 void qemu_iovec_init(QEMUIOVector *qiov, int alloc_hint)
139 qiov->iov = qemu_malloc(alloc_hint * sizeof(struct iovec));
140 qiov->niov = 0;
141 qiov->nalloc = alloc_hint;
142 qiov->size = 0;
145 void qemu_iovec_init_external(QEMUIOVector *qiov, struct iovec *iov, int niov)
149 qiov->iov = iov;
150 qiov->niov = niov;
151 qiov->nalloc = -1;
152 qiov->size = 0;
154 qiov->size += iov[i].iov_len;
157 void qemu_iovec_add(QEMUIOVector *qiov, void *base, size_t len)
159 assert(qiov->nalloc != -1);
161 if (qiov->niov == qiov->nalloc) {
162 qiov->nalloc = 2 * qiov->nalloc + 1;
163 qiov->iov = qemu_realloc(qiov->iov, qiov->nalloc * sizeof(struct iovec));
165 qiov->iov[qiov->niov].iov_base = base;
166 qiov->iov[qiov->niov].iov_len = len;
167 qiov->size += len;
168 ++qiov->niov;
216 void qemu_iovec_destroy(QEMUIOVector *qiov)
218 assert(qiov->nalloc != -1);
220 qemu_free(qiov->iov);
223 void qemu_iovec_reset(QEMUIOVector *qiov)
225 assert(qiov->nalloc != -1);
227 qiov->niov = 0;
228 qiov->size = 0;
231 void qemu_iovec_to_buffer(QEMUIOVector *qiov, void *buf)
236 for (i = 0; i < qiov->niov; ++i) {
237 memcpy(p, qiov->iov[i].iov_base, qiov->iov[i].iov_len);
238 p += qiov->iov[i].iov_len;
242 void qemu_iovec_from_buffer(QEMUIOVector *qiov, const void *buf, size_t count)
248 for (i = 0; i < qiov->niov && count; ++i) {
250 if (copy > qiov->iov[i].iov_len)
251 copy = qiov->iov[i].iov_len;
252 memcpy(qiov->iov[i].iov_base, p, copy);
258 void qemu_iovec_memset(QEMUIOVector *qiov, int c, size_t count)
263 for (i = 0; i < qiov->niov && count; ++i) {
264 n = MIN(count, qiov->iov[i].iov_len);
265 memset(qiov->iov[i].iov_base, c, n);
270 void qemu_iovec_memset_skip(QEMUIOVector *qiov, int c, size_t count,
279 for (i = 0; (i < qiov->niov) && (done != count); i++) {
280 if (skip >= qiov->iov[i].iov_len) {
282 skip -= qiov->iov[i].iov_len;
286 iov_base = (uint8_t*) qiov->iov[i].iov_base + skip;
287 iov_len = qiov->iov[i].iov_len - skip;