From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:42089) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SPYiI-0002rO-Gh for qemu-devel@nongnu.org; Wed, 02 May 2012 08:31:23 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1SPYiB-00012z-Pg for qemu-devel@nongnu.org; Wed, 02 May 2012 08:31:22 -0400 Received: from e38.co.us.ibm.com ([32.97.110.159]:32925) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1SPYiB-00012E-IJ for qemu-devel@nongnu.org; Wed, 02 May 2012 08:31:15 -0400 Received: from /spool/local by e38.co.us.ibm.com with IBM ESMTP SMTP Gateway: Authorized Use Only! Violators will be prosecuted for from ; Wed, 2 May 2012 06:31:11 -0600 Received: from d03relay03.boulder.ibm.com (d03relay03.boulder.ibm.com [9.17.195.228]) by d03dlp03.boulder.ibm.com (Postfix) with ESMTP id 665AC19D8048 for ; Wed, 2 May 2012 06:30:56 -0600 (MDT) Received: from d03av06.boulder.ibm.com (d03av06.boulder.ibm.com [9.17.195.245]) by d03relay03.boulder.ibm.com (8.13.8/8.13.8/NCO v10.0) with ESMTP id q42CUtWP160914 for ; Wed, 2 May 2012 06:30:59 -0600 Received: from d03av06.boulder.ibm.com (loopback [127.0.0.1]) by d03av06.boulder.ibm.com (8.14.4/8.13.1/NCO v10.0 AVout) with ESMTP id q42CVW6Z018576 for ; Wed, 2 May 2012 06:31:33 -0600 Message-ID: <4FA128FE.4090901@us.ibm.com> Date: Wed, 02 May 2012 07:30:54 -0500 From: Anthony Liguori MIME-Version: 1.0 References: <1335958273-769-1-git-send-email-pbonzini@redhat.com> <1335958273-769-15-git-send-email-pbonzini@redhat.com> In-Reply-To: <1335958273-769-15-git-send-email-pbonzini@redhat.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH 14/21] qdev: remove qdev_prop_set_defaults List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Paolo Bonzini Cc: peter.maydell@linaro.org, qemu-devel@nongnu.org, afaerber@suse.de, liwp@linux.vnet.ibm.com On 05/02/2012 06:31 AM, Paolo Bonzini wrote: > Instead, qdev_property_add_static can set the default. > > Signed-off-by: Paolo Bonzini Great idea! Reviewed-by: Anthony Liguori Regards, Anthony Liguori > --- > hw/qdev-properties.c | 22 ---------------------- > hw/qdev.c | 26 +++++++++++++++++++++++--- > hw/qdev.h | 1 - > 3 files changed, 23 insertions(+), 26 deletions(-) > > diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c > index 572b83c..244646c 100644 > --- a/hw/qdev-properties.c > +++ b/hw/qdev-properties.c > @@ -1130,28 +1130,6 @@ void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value) > *ptr = value; > } > > -void qdev_prop_set_defaults(DeviceState *dev, Property *props) > -{ > - Object *obj = OBJECT(dev); > - if (!props) > - return; > - for (; props->name; props++) { > - Error *errp = NULL; > - if (props->qtype == QTYPE_NONE) { > - continue; > - } > - if (props->qtype == QTYPE_QBOOL) { > - object_property_set_bool(obj, props->defval, props->name,&errp); > - } else if (props->info->enum_table) { > - object_property_set_str(obj, props->info->enum_table[props->defval], > - props->name,&errp); > - } else if (props->qtype == QTYPE_QINT) { > - object_property_set_int(obj, props->defval, props->name,&errp); > - } > - assert_no_error(errp); > - } > -} > - > static QTAILQ_HEAD(, GlobalProperty) global_props = QTAILQ_HEAD_INITIALIZER(global_props); > > static void qdev_prop_register_global(GlobalProperty *prop) > diff --git a/hw/qdev.c b/hw/qdev.c > index 7288b8e..f953c51 100644 > --- a/hw/qdev.c > +++ b/hw/qdev.c > @@ -576,6 +576,9 @@ void qdev_property_add_legacy(DeviceState *dev, Property *prop, > void qdev_property_add_static(DeviceState *dev, Property *prop, > Error **errp) > { > + Error *local_err = NULL; > + Object *obj = OBJECT(dev); > + > /* > * TODO qdev_prop_ptr does not have getters or setters. It must > * go now that it can be replaced with links. The test should be > @@ -585,10 +588,28 @@ void qdev_property_add_static(DeviceState *dev, Property *prop, > return; > } > > - object_property_add(OBJECT(dev), prop->name, prop->info->name, > + object_property_add(obj, prop->name, prop->info->name, > prop->info->get, prop->info->set, > prop->info->release, > - prop, errp); > + prop,&local_err); > + > + if (local_err) { > + error_propagate(errp, local_err); > + return; > + } > + if (prop->qtype == QTYPE_NONE) { > + return; > + } > + > + if (prop->qtype == QTYPE_QBOOL) { > + object_property_set_bool(obj, prop->defval, prop->name,&local_err); > + } else if (prop->info->enum_table) { > + object_property_set_str(obj, prop->info->enum_table[prop->defval], > + prop->name,&local_err); > + } else if (prop->qtype == QTYPE_QINT) { > + object_property_set_int(obj, prop->defval, prop->name,&local_err); > + } > + assert_no_error(local_err); > } > > static void device_initfn(Object *obj) > @@ -611,7 +632,6 @@ static void device_initfn(Object *obj) > qdev_property_add_legacy(dev, prop, NULL); > qdev_property_add_static(dev, prop, NULL); > } > - qdev_prop_set_defaults(dev, DEVICE_CLASS(class)->props); > class = object_class_get_parent(class); > } while (class != object_class_by_name(TYPE_DEVICE)); > qdev_prop_set_globals(dev); > diff --git a/hw/qdev.h b/hw/qdev.h > index 4d6458f..23147df 100644 > --- a/hw/qdev.h > +++ b/hw/qdev.h > @@ -311,7 +311,6 @@ void qdev_prop_set_macaddr(DeviceState *dev, const char *name, uint8_t *value); > void qdev_prop_set_enum(DeviceState *dev, const char *name, int value); > /* FIXME: Remove opaque pointer properties. */ > void qdev_prop_set_ptr(DeviceState *dev, const char *name, void *value); > -void qdev_prop_set_defaults(DeviceState *dev, Property *props); > > void qdev_prop_register_global_list(GlobalProperty *props); > void qdev_prop_set_globals(DeviceState *dev);