From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36098) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zs7Zg-0005e6-Hh for qemu-devel@nongnu.org; Fri, 30 Oct 2015 07:10:26 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Zs7Zd-0002YL-9i for qemu-devel@nongnu.org; Fri, 30 Oct 2015 07:10:24 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53104) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Zs7Zd-0002Xf-3S for qemu-devel@nongnu.org; Fri, 30 Oct 2015 07:10:21 -0400 From: Gerd Hoffmann Date: Fri, 30 Oct 2015 12:09:57 +0100 Message-Id: <1446203414-4013-3-git-send-email-kraxel@redhat.com> In-Reply-To: <1446203414-4013-1-git-send-email-kraxel@redhat.com> References: <1446203414-4013-1-git-send-email-kraxel@redhat.com> Subject: [Qemu-devel] [PATCH 02/19] buffer: add buffer_init List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: pl@kamp.de, Gerd Hoffmann Signed-off-by: Gerd Hoffmann Reviewed-by: Peter Lieven --- include/qemu/buffer.h | 12 ++++++++++++ util/buffer.c | 11 +++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/qemu/buffer.h b/include/qemu/buffer.h index b380cec..0710e16 100644 --- a/include/qemu/buffer.h +++ b/include/qemu/buffer.h @@ -34,12 +34,24 @@ typedef struct Buffer Buffer; */ struct Buffer { + char *name; size_t capacity; size_t offset; uint8_t *buffer; }; /** + * buffer_init: + * @buffer: the buffer object + * @name: buffer name + * + * Optionally attach a name to the buffer, to make it easier + * to identify in debug traces. + */ +void buffer_init(Buffer *buffer, const char *name, ...) + GCC_FMT_ATTR(2, 3); + +/** * buffer_reserve: * @buffer: the buffer object * @len: the minimum required free space diff --git a/util/buffer.c b/util/buffer.c index 7ddd693..12bf2d7 100644 --- a/util/buffer.c +++ b/util/buffer.c @@ -22,6 +22,15 @@ #define BUFFER_MIN_INIT_SIZE 4096 +void buffer_init(Buffer *buffer, const char *name, ...) +{ + va_list ap; + + va_start(ap, name); + buffer->name = g_strdup_vprintf(name, ap); + va_end(ap); +} + void buffer_reserve(Buffer *buffer, size_t len) { if ((buffer->capacity - buffer->offset) < len) { @@ -49,9 +58,11 @@ void buffer_reset(Buffer *buffer) void buffer_free(Buffer *buffer) { g_free(buffer->buffer); + g_free(buffer->name); buffer->offset = 0; buffer->capacity = 0; buffer->buffer = NULL; + buffer->name = NULL; } void buffer_append(Buffer *buffer, const void *data, size_t len) -- 1.8.3.1