Lines Matching refs:qiov
633 void qemu_iovec_init(QEMUIOVector *qiov, int alloc_hint)
635 qiov->iov = qemu_malloc(alloc_hint * sizeof(struct iovec));
636 qiov->niov = 0;
637 qiov->nalloc = alloc_hint;
638 qiov->size = 0;
641 void qemu_iovec_init_external(QEMUIOVector *qiov, struct iovec *iov, int niov)
645 qiov->iov = iov;
646 qiov->niov = niov;
647 qiov->nalloc = -1;
648 qiov->size = 0;
650 qiov->size += iov[i].iov_len;
653 void qemu_iovec_add(QEMUIOVector *qiov, void *base, size_t len)
655 assert(qiov->nalloc != -1);
657 if (qiov->niov == qiov->nalloc) {
658 qiov->nalloc = 2 * qiov->nalloc + 1;
659 qiov->iov = qemu_realloc(qiov->iov, qiov->nalloc * sizeof(struct iovec));
661 qiov->iov[qiov->niov].iov_base = base;
662 qiov->iov[qiov->niov].iov_len = len;
663 qiov->size += len;
664 ++qiov->niov;
692 void qemu_iovec_destroy(QEMUIOVector *qiov)
694 assert(qiov->nalloc != -1);
696 qemu_free(qiov->iov);
699 void qemu_iovec_reset(QEMUIOVector *qiov)
701 assert(qiov->nalloc != -1);
703 qiov->niov = 0;
704 qiov->size = 0;
707 void qemu_iovec_to_buffer(QEMUIOVector *qiov, void *buf)
712 for (i = 0; i < qiov->niov; ++i) {
713 memcpy(p, qiov->iov[i].iov_base, qiov->iov[i].iov_len);
714 p += qiov->iov[i].iov_len;
718 void qemu_iovec_from_buffer(QEMUIOVector *qiov, const void *buf, size_t count)
724 for (i = 0; i < qiov->niov && count; ++i) {
726 if (copy > qiov->iov[i].iov_len)
727 copy = qiov->iov[i].iov_len;
728 memcpy(qiov->iov[i].iov_base, p, copy);