From nobody Wed Nov 5 17:46:08 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zoho.com; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 149685321420860.852473579467755; Wed, 7 Jun 2017 09:33:34 -0700 (PDT) Received: from localhost ([::1]:45100 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIdtk-0003Nc-Eo for importer@patchew.org; Wed, 07 Jun 2017 12:33:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:59610) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dIdsK-0002gy-17 for qemu-devel@nongnu.org; Wed, 07 Jun 2017 12:32:05 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dIdsG-0004ee-1P for qemu-devel@nongnu.org; Wed, 07 Jun 2017 12:32:04 -0400 Received: from mx1.redhat.com ([209.132.183.28]:55832) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dIdsF-0004dL-OM for qemu-devel@nongnu.org; Wed, 07 Jun 2017 12:31:59 -0400 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id BFD463DBED for ; Wed, 7 Jun 2017 16:31:58 +0000 (UTC) Received: from localhost (ovpn-112-40.ams2.redhat.com [10.36.112.40]) by smtp.corp.redhat.com (Postfix) with ESMTP id 879185C685; Wed, 7 Jun 2017 16:31:53 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com BFD463DBED Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx06.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=marcandre.lureau@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com BFD463DBED From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= To: qemu-devel@nongnu.org Date: Wed, 7 Jun 2017 20:30:58 +0400 Message-Id: <20170607163140.17053-2-marcandre.lureau@redhat.com> In-Reply-To: <20170607163140.17053-1-marcandre.lureau@redhat.com> References: <20170607163140.17053-1-marcandre.lureau@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.30]); Wed, 07 Jun 2017 16:31:58 +0000 (UTC) Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.132.183.28 Subject: [Qemu-devel] [PATCH v3 01/43] qdev: remove PropertyInfo.qtype field X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , armbru@redhat.com Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail: RSF_0 Z_629925259 SPT_0 Content-Type: text/plain; charset="utf-8" Remove dependency on qapi qtype, replace a field by a few PropertyInfo callbacks to set the default value type (introduced in commit 4f2d3d7). Signed-off-by: Marc-Andr=C3=A9 Lureau Reviewed-by: Markus Armbruster --- include/hw/qdev-core.h | 2 +- include/hw/qdev-properties.h | 5 ----- hw/core/qdev-properties.c | 35 ++++++++++++++++++++++++++++++++++- hw/core/qdev.c | 13 ++----------- 4 files changed, 37 insertions(+), 18 deletions(-) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index e69489ec6c..9523339762 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -226,7 +226,6 @@ struct Property { PropertyInfo *info; ptrdiff_t offset; uint8_t bitnr; - QType qtype; int64_t defval; int arrayoffset; PropertyInfo *arrayinfo; @@ -238,6 +237,7 @@ struct PropertyInfo { const char *description; const char * const *enum_table; int (*print)(DeviceState *dev, Property *prop, char *dest, size_t len); + void (*set_default_value)(Object *obj, const Property *prop); ObjectPropertyAccessor *get; ObjectPropertyAccessor *set; ObjectPropertyRelease *release; diff --git a/include/hw/qdev-properties.h b/include/hw/qdev-properties.h index d206fc93dd..85e68998a9 100644 --- a/include/hw/qdev-properties.h +++ b/include/hw/qdev-properties.h @@ -42,7 +42,6 @@ extern PropertyInfo qdev_prop_arraylen; .info =3D &(_prop), \ .offset =3D offsetof(_state, _field) \ + type_check(_type,typeof_field(_state, _field)), \ - .qtype =3D QTYPE_QINT, \ .defval =3D (_type)_defval, \ } #define DEFINE_PROP_BIT(_name, _state, _field, _bit, _defval) { \ @@ -51,7 +50,6 @@ extern PropertyInfo qdev_prop_arraylen; .bitnr =3D (_bit), \ .offset =3D offsetof(_state, _field) \ + type_check(uint32_t,typeof_field(_state, _field)), \ - .qtype =3D QTYPE_QBOOL, \ .defval =3D (bool)_defval, \ } #define DEFINE_PROP_BIT64(_name, _state, _field, _bit, _defval) { \ @@ -60,7 +58,6 @@ extern PropertyInfo qdev_prop_arraylen; .bitnr =3D (_bit), \ .offset =3D offsetof(_state, _field) \ + type_check(uint64_t, typeof_field(_state, _field)), \ - .qtype =3D QTYPE_QBOOL, \ .defval =3D (bool)_defval, \ } =20 @@ -69,7 +66,6 @@ extern PropertyInfo qdev_prop_arraylen; .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, \ } =20 @@ -105,7 +101,6 @@ extern PropertyInfo qdev_prop_arraylen; .info =3D &(qdev_prop_arraylen), \ .offset =3D offsetof(_state, _field) \ + type_check(uint32_t, typeof_field(_state, _field)), \ - .qtype =3D QTYPE_QINT, \ .arrayinfo =3D &(_arrayprop), \ .arrayfieldsize =3D sizeof(_arraytype), \ .arrayoffset =3D offsetof(_state, _arrayfield), \ diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 9f1a497322..c5e028a45e 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -69,6 +69,12 @@ static void set_enum(Object *obj, Visitor *v, const char= *name, void *opaque, visit_type_enum(v, prop->name, ptr, prop->info->enum_table, errp); } =20 +static void set_default_value_enum(Object *obj, const Property *prop) +{ + object_property_set_str(obj, prop->info->enum_table[prop->defval], + prop->name, &error_abort); +} + /* Bit */ =20 static uint32_t qdev_get_prop_mask(Property *prop) @@ -120,11 +126,17 @@ static void prop_set_bit(Object *obj, Visitor *v, con= st char *name, bit_prop_set(dev, prop, value); } =20 +static void set_default_value_bool(Object *obj, const Property *prop) +{ + object_property_set_bool(obj, prop->defval, prop->name, &error_abort); +} + PropertyInfo qdev_prop_bit =3D { .name =3D "bool", .description =3D "on/off", .get =3D prop_get_bit, .set =3D prop_set_bit, + .set_default_value =3D set_default_value_bool, }; =20 /* Bit64 */ @@ -183,6 +195,7 @@ PropertyInfo qdev_prop_bit64 =3D { .description =3D "on/off", .get =3D prop_get_bit64, .set =3D prop_set_bit64, + .set_default_value =3D set_default_value_bool, }; =20 /* --- bool --- */ @@ -216,6 +229,7 @@ PropertyInfo qdev_prop_bool =3D { .name =3D "bool", .get =3D get_bool, .set =3D set_bool, + .set_default_value =3D set_default_value_bool, }; =20 /* --- 8bit integer --- */ @@ -245,10 +259,16 @@ static void set_uint8(Object *obj, Visitor *v, const = char *name, void *opaque, visit_type_uint8(v, name, ptr, errp); } =20 +static void set_default_value_int(Object *obj, const Property *prop) +{ + object_property_set_int(obj, prop->defval, prop->name, &error_abort); +} + PropertyInfo qdev_prop_uint8 =3D { .name =3D "uint8", .get =3D get_uint8, .set =3D set_uint8, + .set_default_value =3D set_default_value_int, }; =20 /* --- 16bit integer --- */ @@ -282,6 +302,7 @@ PropertyInfo qdev_prop_uint16 =3D { .name =3D "uint16", .get =3D get_uint16, .set =3D set_uint16, + .set_default_value =3D set_default_value_int, }; =20 /* --- 32bit integer --- */ @@ -340,12 +361,14 @@ PropertyInfo qdev_prop_uint32 =3D { .name =3D "uint32", .get =3D get_uint32, .set =3D set_uint32, + .set_default_value =3D set_default_value_int, }; =20 PropertyInfo qdev_prop_int32 =3D { .name =3D "int32", .get =3D get_int32, .set =3D set_int32, + .set_default_value =3D set_default_value_int, }; =20 /* --- 64bit integer --- */ @@ -379,6 +402,7 @@ PropertyInfo qdev_prop_uint64 =3D { .name =3D "uint64", .get =3D get_uint64, .set =3D set_uint64, + .set_default_value =3D set_default_value_int, }; =20 /* --- string --- */ @@ -526,6 +550,7 @@ PropertyInfo qdev_prop_on_off_auto =3D { .enum_table =3D OnOffAuto_lookup, .get =3D get_enum, .set =3D set_enum, + .set_default_value =3D set_default_value_enum, }; =20 /* --- lost tick policy --- */ @@ -537,6 +562,7 @@ PropertyInfo qdev_prop_losttickpolicy =3D { .enum_table =3D LostTickPolicy_lookup, .get =3D get_enum, .set =3D set_enum, + .set_default_value =3D set_default_value_enum, }; =20 /* --- Block device error handling policy --- */ @@ -550,6 +576,7 @@ PropertyInfo qdev_prop_blockdev_on_error =3D { .enum_table =3D BlockdevOnError_lookup, .get =3D get_enum, .set =3D set_enum, + .set_default_value =3D set_default_value_enum, }; =20 /* --- BIOS CHS translation */ @@ -563,6 +590,7 @@ PropertyInfo qdev_prop_bios_chs_trans =3D { .enum_table =3D BiosAtaTranslation_lookup, .get =3D get_enum, .set =3D set_enum, + .set_default_value =3D set_default_value_enum, }; =20 /* --- FDC default drive types */ @@ -573,7 +601,8 @@ PropertyInfo qdev_prop_fdc_drive_type =3D { "144/288/120/none/auto", .enum_table =3D FloppyDriveType_lookup, .get =3D get_enum, - .set =3D set_enum + .set =3D set_enum, + .set_default_value =3D set_default_value_enum, }; =20 /* --- pci address --- */ @@ -648,6 +677,7 @@ PropertyInfo qdev_prop_pci_devfn =3D { .print =3D print_pci_devfn, .get =3D get_int32, .set =3D set_pci_devfn, + .set_default_value =3D set_default_value_int, }; =20 /* --- blocksize --- */ @@ -695,6 +725,7 @@ PropertyInfo qdev_prop_blocksize =3D { .description =3D "A power of two between 512 and 32768", .get =3D get_uint16, .set =3D set_blocksize, + .set_default_value =3D set_default_value_int, }; =20 /* --- pci host address --- */ @@ -917,6 +948,7 @@ PropertyInfo qdev_prop_arraylen =3D { .name =3D "uint32", .get =3D get_uint32, .set =3D set_prop_arraylen, + .set_default_value =3D set_default_value_int, }; =20 /* --- public helpers --- */ @@ -1153,4 +1185,5 @@ PropertyInfo qdev_prop_size =3D { .name =3D "size", .get =3D get_size, .set =3D set_size, + .set_default_value =3D set_default_value_int, }; diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 0ce45a2019..849952a8d4 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -793,17 +793,8 @@ void qdev_property_add_static(DeviceState *dev, Proper= ty *prop, prop->info->description, &error_abort); =20 - if (prop->qtype =3D=3D QTYPE_NONE) { - return; - } - - if (prop->qtype =3D=3D QTYPE_QBOOL) { - object_property_set_bool(obj, prop->defval, prop->name, &error_abo= rt); - } else if (prop->info->enum_table) { - object_property_set_str(obj, prop->info->enum_table[prop->defval], - prop->name, &error_abort); - } else if (prop->qtype =3D=3D QTYPE_QINT) { - object_property_set_int(obj, prop->defval, prop->name, &error_abor= t); + if (prop->info->set_default_value) { + prop->info->set_default_value(obj, prop); } } =20 --=20 2.13.0.91.g00982b8dd