From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=33872 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OnXZj-0002mQ-IR for qemu-devel@nongnu.org; Mon, 23 Aug 2010 10:00:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OnXZi-000500-1z for qemu-devel@nongnu.org; Mon, 23 Aug 2010 10:00:35 -0400 Received: from mx1.redhat.com ([209.132.183.28]:9626) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OnXZh-0004zt-Pp for qemu-devel@nongnu.org; Mon, 23 Aug 2010 10:00:33 -0400 Message-ID: <4C727EF5.6060402@redhat.com> Date: Mon, 23 Aug 2010 17:00:21 +0300 From: Avi Kivity MIME-Version: 1.0 Subject: Re: [Qemu-devel] [PATCH v2 0/7] APIC/IOAPIC cleanup References: <4C6D86F9.3010602@codemonkey.ws> <4C6D98E7.9020109@codemonkey.ws> <4C6DA75D.40303@codemonkey.ws> <4C6ECBB7.7060608@codemonkey.ws> <4C718865.7010807@redhat.com> <4C719080.4030202@codemonkey.ws> <4C720B1F.3030206@redhat.com> <4C727646.3040903@codemonkey.ws> <4C727ACC.7080501@redhat.com> <4C727C43.2040704@codemonkey.ws> In-Reply-To: <4C727C43.2040704@codemonkey.ws> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Anthony Liguori Cc: Blue Swirl , "Liu >> \"Liu, Jinsong\"" , qemu-devel , Markus Armbruster , Paul Brook On 08/23/2010 04:48 PM, Anthony Liguori wrote: >>> The fundamental issue is: every function (minus trivial ones) in the >>> device models code should have a state reference. That state >>> reference should inherit from a DeviceState. If this statement >>> isn't true, then the device has been modelled in qdev incorrectly. >>> >>> Using this test, quite a lot of the "converted" devices are being >>> modelled incorrectly. >> >> Is a "state reference" allowed to have a pointer to the state, or >> reach it in some other way (for example, static storage for singleton >> devices)? > > > No. If this was C++, then the statement would be: device have to be > implemented in terms of objects that inherit from Device. Device is > our common base object. so, struct MyDevicestate { struct DeviceState device_state; bool *some_bit; }; bad, while struct MyDevicestate { struct DeviceState device_state; bool some_bit; }; good? > >> Isn't "save/restore works" an equivalent statement to "device state >> is reachable from the DeviceState"? > > I'm not sure I can connect the dots here as I'm not sure what follows > if your assertion is true. If save/restore works then all state is reachable from one point? Presumable DeviceState? I really don't see why the state has to be in the DeviceState subclass. We're probably talking past each other here due to some confusion in terms. -- error compiling committee.c: too many arguments to function