Loading include/qemu-common.h +1 −0 Original line number Diff line number Diff line Loading @@ -318,6 +318,7 @@ void qemu_iovec_concat(QEMUIOVector *dst, void qemu_iovec_concat_iov(QEMUIOVector *dst, struct iovec *src_iov, unsigned int src_cnt, size_t soffset, size_t sbytes); bool qemu_iovec_is_zero(QEMUIOVector *qiov); void qemu_iovec_destroy(QEMUIOVector *qiov); void qemu_iovec_reset(QEMUIOVector *qiov); size_t qemu_iovec_to_buf(QEMUIOVector *qiov, size_t offset, Loading util/iov.c +21 −0 Original line number Diff line number Diff line Loading @@ -335,6 +335,27 @@ void qemu_iovec_concat(QEMUIOVector *dst, qemu_iovec_concat_iov(dst, src->iov, src->niov, soffset, sbytes); } /* * Check if the contents of the iovecs are all zero */ bool qemu_iovec_is_zero(QEMUIOVector *qiov) { int i; for (i = 0; i < qiov->niov; i++) { size_t offs = QEMU_ALIGN_DOWN(qiov->iov[i].iov_len, 4 * sizeof(long)); uint8_t *ptr = qiov->iov[i].iov_base; if (offs && !buffer_is_zero(qiov->iov[i].iov_base, offs)) { return false; } for (; offs < qiov->iov[i].iov_len; offs++) { if (ptr[offs]) { return false; } } } return true; } void qemu_iovec_destroy(QEMUIOVector *qiov) { assert(qiov->nalloc != -1); Loading Loading
include/qemu-common.h +1 −0 Original line number Diff line number Diff line Loading @@ -318,6 +318,7 @@ void qemu_iovec_concat(QEMUIOVector *dst, void qemu_iovec_concat_iov(QEMUIOVector *dst, struct iovec *src_iov, unsigned int src_cnt, size_t soffset, size_t sbytes); bool qemu_iovec_is_zero(QEMUIOVector *qiov); void qemu_iovec_destroy(QEMUIOVector *qiov); void qemu_iovec_reset(QEMUIOVector *qiov); size_t qemu_iovec_to_buf(QEMUIOVector *qiov, size_t offset, Loading
util/iov.c +21 −0 Original line number Diff line number Diff line Loading @@ -335,6 +335,27 @@ void qemu_iovec_concat(QEMUIOVector *dst, qemu_iovec_concat_iov(dst, src->iov, src->niov, soffset, sbytes); } /* * Check if the contents of the iovecs are all zero */ bool qemu_iovec_is_zero(QEMUIOVector *qiov) { int i; for (i = 0; i < qiov->niov; i++) { size_t offs = QEMU_ALIGN_DOWN(qiov->iov[i].iov_len, 4 * sizeof(long)); uint8_t *ptr = qiov->iov[i].iov_base; if (offs && !buffer_is_zero(qiov->iov[i].iov_base, offs)) { return false; } for (; offs < qiov->iov[i].iov_len; offs++) { if (ptr[offs]) { return false; } } } return true; } void qemu_iovec_destroy(QEMUIOVector *qiov) { assert(qiov->nalloc != -1); Loading