From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([140.186.70.92]:55359) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RYh63-0002W9-TI for qemu-devel@nongnu.org; Thu, 08 Dec 2011 11:45:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1RYh62-0001NK-VR for qemu-devel@nongnu.org; Thu, 08 Dec 2011 11:45:23 -0500 Received: from mail-iy0-f173.google.com ([209.85.210.173]:32842) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1RYh62-0001ND-Rx for qemu-devel@nongnu.org; Thu, 08 Dec 2011 11:45:22 -0500 Received: by iafj26 with SMTP id j26so3206572iaf.4 for ; Thu, 08 Dec 2011 08:45:22 -0800 (PST) Message-ID: <4EE0E999.6070803@codemonkey.ws> Date: Thu, 08 Dec 2011 10:45:13 -0600 From: Anthony Liguori MIME-Version: 1.0 References: <1322857256-14951-1-git-send-email-aliguori@us.ibm.com> <1322857256-14951-8-git-send-email-aliguori@us.ibm.com> <4EE0DA08.6030001@redhat.com> In-Reply-To: <4EE0DA08.6030001@redhat.com> Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v2 07/18] qom: add child properties (composition) (v2) List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Kevin Wolf Cc: Peter Maydell , Anthony Liguori , Stefan Hajnoczi , Jan Kiszka , qemu-devel@nongnu.org, Luiz Capitulino , Gerd Hoffman , Markus Armbruster On 12/08/2011 09:38 AM, Kevin Wolf wrote: > Am 02.12.2011 21:20, schrieb Anthony Liguori: >> Child properties express a relationship of composition. >> >> Signed-off-by: Anthony Liguori >> --- >> v1 -> v2 >> - fix comments (Kevin) >> - add a reference when adding a child property (Kevin) >> --- >> hw/qdev.c | 26 ++++++++++++++++++++++++++ >> hw/qdev.h | 20 ++++++++++++++++++++ >> 2 files changed, 46 insertions(+), 0 deletions(-) >> >> diff --git a/hw/qdev.c b/hw/qdev.c >> index 2519f00..fa6b489 100644 >> --- a/hw/qdev.c >> +++ b/hw/qdev.c >> @@ -1174,6 +1174,32 @@ DeviceState *qdev_get_root(void) >> return qdev_root; >> } >> >> +static void qdev_get_child_property(DeviceState *dev, Visitor *v, void *opaque, >> + const char *name, Error **errp) >> +{ >> + DeviceState *child = opaque; >> + gchar *path; >> + >> + path = qdev_get_canonical_path(child); >> + visit_type_str(v,&path, name, errp); >> + g_free(path); >> +} >> + >> +void qdev_property_add_child(DeviceState *dev, const char *name, >> + DeviceState *child, Error **errp) >> +{ >> + gchar *type; >> + >> + type = g_strdup_printf("child<%s>", child->info->name); >> + >> + qdev_property_add(dev, name, type, qdev_get_child_property, >> + NULL, NULL, child, errp); >> + >> + qdev_ref(dev); > > Shouldn't you increase the refcount for child rather than dev? Indeed, I've fixed it in my tree. Thanks. Regards, Anthony Liguori > > Kevin >