From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35615) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZtZCz-0001VY-E7 for qemu-devel@nongnu.org; Tue, 03 Nov 2015 05:52:58 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZtZCu-0000Bl-Dy for qemu-devel@nongnu.org; Tue, 03 Nov 2015 05:52:57 -0500 Received: from mx1.redhat.com ([209.132.183.28]:36939) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZtZCu-0000Bh-8H for qemu-devel@nongnu.org; Tue, 03 Nov 2015 05:52:52 -0500 Message-ID: <1446547969.4693.12.camel@redhat.com> From: Gerd Hoffmann Date: Tue, 03 Nov 2015 11:52:49 +0100 In-Reply-To: <1446541276-32467-3-git-send-email-pl@kamp.de> References: <1446541276-32467-1-git-send-email-pl@kamp.de> <1446541276-32467-3-git-send-email-pl@kamp.de> Content-Type: text/plain; charset="UTF-8" Mime-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 2/2] io/buffer: avoid memmove at each qio_buffer_advance List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Lieven Cc: qemu-devel@nongnu.org > diff --git a/include/io/buffer.h b/include/io/buffer.h > index f63869e..43688cc 100644 > --- a/include/io/buffer.h > +++ b/include/io/buffer.h > @@ -39,6 +39,8 @@ struct QIOBuffer { > size_t offset; > uint64_t avg_size; > uint8_t *buffer; > + size_t base_offs; > + uint8_t *base_ptr; Why a separate base_ptr? While being at it I'd much prefer to replace offset with start & end. The buffer content is buffer[start] ... buffer[end-1] then. We can allow the buffer to wrap around, i.e. end < start. Buffer content is buf[start] ... buffer[size-1] and buffer[0] .. buffer[end-1] then. Makes the buffer management a bit more complicated, but we never have to memmove then (except when changing buffer size) and the WASTED_SIZE logic isn't needed too ... cheers, Gerd