From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:41783) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UDbRY-0007TR-68 for qemu-devel@nongnu.org; Thu, 07 Mar 2013 09:05:17 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UDbRT-0002PZ-5f for qemu-devel@nongnu.org; Thu, 07 Mar 2013 09:05:12 -0500 Received: from cantor2.suse.de ([195.135.220.15]:37660 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UDbRS-0002Ow-TV for qemu-devel@nongnu.org; Thu, 07 Mar 2013 09:05:07 -0500 Message-ID: <51389E91.1020804@suse.de> Date: Thu, 07 Mar 2013 15:05:05 +0100 From: =?ISO-8859-15?Q?Andreas_F=E4rber?= MIME-Version: 1.0 References: <1361754189-29809-1-git-send-email-imammedo@redhat.com> <1361754189-29809-2-git-send-email-imammedo@redhat.com> In-Reply-To: <1361754189-29809-2-git-send-email-imammedo@redhat.com> Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH 01/10] qdev: add qdev property for bool type List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Igor Mammedov Cc: qemu-devel@nongnu.org, ehabkost@redhat.com Am 25.02.2013 02:03, schrieb Igor Mammedov: > Signed-off-by: Igor Mammedov I vaguely remember having written something like this long time ago for ISA and for Vasilis... looks good except for minor nits. > --- > hw/qdev-properties.c | 33 +++++++++++++++++++++++++++++++++ > hw/qdev-properties.h | 10 ++++++++++ > 2 files changed, 43 insertions(+), 0 deletions(-) >=20 > diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c > index a8a31f5..16ac814 100644 > --- a/hw/qdev-properties.c > +++ b/hw/qdev-properties.c > @@ -106,6 +106,39 @@ PropertyInfo qdev_prop_bit =3D { > .set =3D set_bit, > }; > =20 > +/* --- bool --- */ > + > +static void get_bool(Object *obj, Visitor *v, void *opaque, > + const char *name, Error **errp) > +{ > + DeviceState *dev =3D DEVICE(obj); > + Property *prop =3D opaque; > + bool *ptr =3D qdev_get_prop_ptr(dev, prop); > + > + visit_type_bool(v, ptr, name, errp); > +} > + > +static void set_bool(Object *obj, Visitor *v, void *opaque, > + const char *name, Error **errp) Indentation is off. > +{ > + DeviceState *dev =3D DEVICE(obj); > + Property *prop =3D opaque; > + bool *ptr =3D qdev_get_prop_ptr(dev, prop); > + > + if (dev->realized) { > + error_setg(errp, "Insufficient permission to perform this oper= ation"); Should we be more specific here? E.g., "Property '%s' cannot be changed once realized." Andreas > + return; > + } > + > + visit_type_bool(v, ptr, name, errp); > +} > + > +PropertyInfo qdev_prop_bool =3D { > + .name =3D "boolean", > + .get =3D get_bool, > + .set =3D set_bool, > +}; > + > /* --- 8bit integer --- */ > =20 > static void get_uint8(Object *obj, Visitor *v, void *opaque, > diff --git a/hw/qdev-properties.h b/hw/qdev-properties.h > index 20c67f3..3915f7c 100644 > --- a/hw/qdev-properties.h > +++ b/hw/qdev-properties.h > @@ -6,6 +6,7 @@ > /*** qdev-properties.c ***/ > =20 > extern PropertyInfo qdev_prop_bit; > +extern PropertyInfo qdev_prop_bool; > extern PropertyInfo qdev_prop_uint8; > extern PropertyInfo qdev_prop_uint16; > extern PropertyInfo qdev_prop_uint32; > @@ -51,6 +52,15 @@ extern PropertyInfo qdev_prop_pci_host_devaddr; > .defval =3D (bool)_defval, \ > } > =20 > +#define DEFINE_PROP_BOOL(_name, _state, _field, _defval) { \ > + .name =3D (_name), \ > + .info =3D &(qdev_prop_bool), \ > + .offset =3D offsetof(_state, _field) \ > + + type_check(bool, typeof_field(_state, _field)), \ > + .qtype =3D QTYPE_QBOOL, \ > + .defval =3D (bool)_defval, \ > + } > + > #define DEFINE_PROP_UINT8(_n, _s, _f, _d) \ > DEFINE_PROP_DEFAULT(_n, _s, _f, _d, qdev_prop_uint8, uint8_t) > #define DEFINE_PROP_UINT16(_n, _s, _f, _d) \ >=20 --=20 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 N=FCrnberg, Germany GF: Jeff Hawn, Jennifer Guild, Felix Imend=F6rffer; HRB 16746 AG N=FCrnbe= rg