From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:55973) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UDdZe-0005v2-Vl for qemu-devel@nongnu.org; Thu, 07 Mar 2013 11:21:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UDdZW-00027V-RH for qemu-devel@nongnu.org; Thu, 07 Mar 2013 11:21:42 -0500 Received: from mx1.redhat.com ([209.132.183.28]:60166) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UDdZW-00027I-Hb for qemu-devel@nongnu.org; Thu, 07 Mar 2013 11:21:34 -0500 From: Igor Mammedov Date: Thu, 7 Mar 2013 17:16:18 +0100 Message-Id: <1362672978-19701-1-git-send-email-imammedo@redhat.com> In-Reply-To: <51389E91.1020804@suse.de> References: <51389E91.1020804@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH 01/10 v2] qdev: add qdev property for bool type List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: afaerber@suse.de Signed-off-by: Igor Mammedov --- v2: - fixed indentation - replaced error message. Suggested-By: Andreas F=C3=A4rber --- hw/qdev-properties.c | 33 +++++++++++++++++++++++++++++++++ hw/qdev-properties.h | 10 ++++++++++ 2 files changed, 43 insertions(+), 0 deletions(-) diff --git a/hw/qdev-properties.c b/hw/qdev-properties.c index a8a31f5..b0f2333 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) +{ + DeviceState *dev =3D DEVICE(obj); + Property *prop =3D opaque; + bool *ptr =3D qdev_get_prop_ptr(dev, prop); + + if (dev->realized) { + error_setg(errp, "Property '%s' cannot be changed once realized"= , name); + 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 1.7.1