From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:38181) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URu3V-0006iY-6h for qemu-devel@nongnu.org; Mon, 15 Apr 2013 20:47:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1URu3S-0006ep-Jg for qemu-devel@nongnu.org; Mon, 15 Apr 2013 20:47:29 -0400 Received: from cantor2.suse.de ([195.135.220.15]:55472 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URu3S-0006ej-A6 for qemu-devel@nongnu.org; Mon, 15 Apr 2013 20:47:26 -0400 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Tue, 16 Apr 2013 02:46:40 +0200 Message-Id: <1366073209-27119-4-git-send-email-afaerber@suse.de> In-Reply-To: <1366073209-27119-1-git-send-email-afaerber@suse.de> References: <1366073209-27119-1-git-send-email-afaerber@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH 03/12] 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: Igor Mammedov , =?UTF-8?q?Andreas=20F=C3=A4rber?= From: Igor Mammedov Signed-off-by: Igor Mammedov [AF: Use new qdev_prop_set_after_realize()] Signed-off-by: Andreas F=C3=A4rber --- hw/core/qdev-properties.c | 33 +++++++++++++++++++++++++++++++++ include/hw/qdev-properties.h | 10 ++++++++++ 2 files changed, 43 insertions(+) diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index ddde18e..ca1739e 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -120,6 +120,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) { + qdev_prop_set_after_realize(dev, name, errp); + 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/include/hw/qdev-properties.h b/include/hw/qdev-properties.h index a379339..25dd1bb 100644 --- a/include/hw/qdev-properties.h +++ b/include/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; @@ -52,6 +53,15 @@ extern PropertyInfo qdev_prop_arraylen; .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 PROP_ARRAY_LEN_PREFIX "len-" =20 /** --=20 1.8.1.4