From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:50414) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QozZA-0003Ml-F5 for qemu-devel@nongnu.org; Thu, 04 Aug 2011 11:10:33 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QozZ9-0007pJ-Cp for qemu-devel@nongnu.org; Thu, 04 Aug 2011 11:10:32 -0400 Received: from mx1.redhat.com ([209.132.183.28]:5676) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QozZ8-0007p4-V3 for qemu-devel@nongnu.org; Thu, 04 Aug 2011 11:10:31 -0400 Received: from int-mx12.intmail.prod.int.phx2.redhat.com (int-mx12.intmail.prod.int.phx2.redhat.com [10.5.11.25]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id p74FATQ9017124 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 4 Aug 2011 11:10:30 -0400 From: Gerd Hoffmann Date: Thu, 4 Aug 2011 17:10:12 +0200 Message-Id: <1312470626-25872-3-git-send-email-kraxel@redhat.com> In-Reply-To: <1312470626-25872-1-git-send-email-kraxel@redhat.com> References: <1312470626-25872-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 02/16] Add iov_hexdump() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Gerd Hoffmann Useful for debugging purposes. Signed-off-by: Gerd Hoffmann --- iov.c | 31 +++++++++++++++++++++++++++++++ iov.h | 2 ++ 2 files changed, 33 insertions(+), 0 deletions(-) diff --git a/iov.c b/iov.c index 1e02791..60553c7 100644 --- a/iov.c +++ b/iov.c @@ -73,3 +73,34 @@ size_t iov_size(const struct iovec *iov, const unsigned int iov_cnt) } return len; } + +void iov_hexdump(const struct iovec *iov, const unsigned int iov_cnt, + FILE *fp, const char *prefix, size_t limit) +{ + unsigned int i, v, b; + uint8_t *c; + + c = iov[0].iov_base; + for (i = 0, v = 0, b = 0; b < limit; i++, b++) { + if (i == iov[v].iov_len) { + i = 0; v++; + if (v == iov_cnt) { + break; + } + c = iov[v].iov_base; + } + if ((b % 16) == 0) { + fprintf(fp, "%s: %04x:", prefix, b); + } + if ((b % 4) == 0) { + fprintf(fp, " "); + } + fprintf(fp, " %02x", c[i]); + if ((b % 16) == 15) { + fprintf(fp, "\n"); + } + } + if ((b % 16) != 0) { + fprintf(fp, "\n"); + } +} diff --git a/iov.h b/iov.h index 110f67a..c2c5b39 100644 --- a/iov.h +++ b/iov.h @@ -17,3 +17,5 @@ size_t iov_from_buf(struct iovec *iov, unsigned int iov_cnt, size_t iov_to_buf(const struct iovec *iov, const unsigned int iov_cnt, void *buf, size_t iov_off, size_t size); size_t iov_size(const struct iovec *iov, const unsigned int iov_cnt); +void iov_hexdump(const struct iovec *iov, const unsigned int iov_cnt, + FILE *fp, const char *prefix, size_t limit); -- 1.7.1