From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=59858 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1PFkeE-00008O-88 for qemu-devel@nongnu.org; Tue, 09 Nov 2010 04:37:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1PFke5-0002aJ-Mg for qemu-devel@nongnu.org; Tue, 09 Nov 2010 04:37:48 -0500 Received: from mx1.redhat.com ([209.132.183.28]:23131) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1PFke5-0002Zu-D2 for qemu-devel@nongnu.org; Tue, 09 Nov 2010 04:37:41 -0500 Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.13.8/8.13.8) with ESMTP id oA99be6w026301 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Tue, 9 Nov 2010 04:37:40 -0500 Message-ID: <4CD91661.6030102@redhat.com> Date: Tue, 09 Nov 2010 10:37:37 +0100 From: Gerd Hoffmann MIME-Version: 1.0 References: <1288623114-14439-1-git-send-email-kraxel@redhat.com> <20101108174752.GC8498@redhat.com> In-Reply-To: <20101108174752.GC8498@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: [Qemu-devel] Re: [PATCH] add VMSTATE_BOOL List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: "Michael S. Tsirkin" Cc: qemu-devel@nongnu.org Hi, >> +#define VMSTATE_BOOL_ARRAY(_f, _s, _n) \ >> + VMSTATE_BOOL_ARRAY_V(_f, _s, _n, 0) >> + > > Why don't we pack the bits? Point being? As long as we don't save *big* arrays of bools it simply isn't worth the effort IMHO. And for big arrays we'll probably wouldn't use bool in the first place ... >> +/* bool */ >> + >> +static int get_bool(QEMUFile *f, void *pv, size_t size) >> +{ >> + bool *v = pv; >> + *v = qemu_get_byte(f); >> + return 0; > > We must really validate that the value is 0 or 1. > If it's not, we will get undefined behaviour. I disagree. You indeed have a bug in case your bool ends up with a value being neither 0 nor 1. That is completely independant from savevm/loadvm though, it can trip you up even in case you don't save/load the VM at all. >> +} >> + >> +static void put_bool(QEMUFile *f, void *pv, size_t size) >> +{ >> + bool *v = pv; >> + qemu_put_byte(f, *v); > > Is there a guarantee that bool is a single byte, BTW? No. bool must be 0 or 1 though, and a single byte is big enough to keep that information. cheers, Gerd