From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:39456) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RsEze-0006sO-K0 for qemu-devel@nongnu.org; Tue, 31 Jan 2012 09:47:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RsEza-0004gF-Fx for qemu-devel@nongnu.org; Tue, 31 Jan 2012 09:47:34 -0500 Received: from mail-pw0-f45.google.com ([209.85.160.45]:34824) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RsEza-0004fd-8H for qemu-devel@nongnu.org; Tue, 31 Jan 2012 09:47:30 -0500 Received: by pbaa11 with SMTP id a11so300498pba.4 for ; Tue, 31 Jan 2012 06:47:29 -0800 (PST) Message-ID: <4F27FEFD.5070507@codemonkey.ws> Date: Tue, 31 Jan 2012 08:47:25 -0600 From: Anthony Liguori MIME-Version: 1.0 References: <1327604460-31142-1-git-send-email-aliguori@us.ibm.com> <1327604460-31142-7-git-send-email-aliguori@us.ibm.com> <4F27FBE6.7040800@siemens.com> In-Reply-To: <4F27FBE6.7040800@siemens.com> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 06/15] piix: create i8254 through composition List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Jan Kiszka Cc: Peter Maydell , Anthony Liguori , qemu-devel@nongnu.org, Markus Armbruster , Avi Kivity , Paolo Bonzini On 01/31/2012 08:34 AM, Jan Kiszka wrote: > On 2012-01-26 20:00, Anthony Liguori wrote: >> @@ -548,6 +550,13 @@ static int piix3_realize(PCIDevice *dev) >> /* Setup the RTC IRQ */ >> s->rtc.irq = rtc_irq; >> >> + /* Realize the PIT */ >> + qdev_set_parent_bus(DEVICE(&s->pit), BUS(s->bus)); >> + qdev_init_nofail(DEVICE(&s->pit)); >> + >> + /* FIXME this should be refactored */ >> + pcspk_init(ISA_DEVICE(&s->pit)); > > Fixing ATM, ie. converting to qdev/QOM. > > Q: How do I use qdev_property_add_link& Co. to establish the relation > from the speaker port device to the PIT? In the state structure, have: struct PCSpkState { ... PITState *pit; }; In the pcspk instance_init, do: object_property_add_link(obj, "pit", TYPE_PIT, (Object **)&s->pit, NULL); In the pcspk realize function (DeviceClass::init), do: assert(s->pit != NULL); // make sure the pit link is set And that's it. You can set the s->pit field directly. You are not required to use any special QOM function to interact with link properties. BTW, this is yet another benefit of making structures public. You can take the address of a child and set link fields directly without accessors. Regards, Anthony LIguori > > Jan >