From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 2002:a5d:6089:0:0:0:0:0 with SMTP id w9csp776262wrt; Tue, 20 Nov 2018 08:39:59 -0800 (PST) X-Google-Smtp-Source: AJdET5ccR75ZsJTgkSnXXVYONKzP0I9rjaVW9Db+lTTpRGe18oCjj43vqQ14NlTxSMVz0m5Wfy+Y X-Received: by 2002:a81:3e14:: with SMTP id l20mr2243227ywa.396.1542731999491; Tue, 20 Nov 2018 08:39:59 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542731999; cv=none; d=google.com; s=arc-20160816; b=OXH1cxI0txAKYiGfqMHSDo3SVFZddgfAwLrlUhX+qUGNU4Cfkqmqd+K59F472VVBzY z/OV+5K7UR5lbLR8KX2EODOsZFbOe8m79Hs7U7imFYTDWWkDOceBiJj5hhgO7ZIuTCer r/NRHVe+c5gIH+eiAplPGaZIVRhUqkmBoRc4x1j3t+0XmGQ6u0+BG5wFuWdmlVCrUQ3l RYj6j3ITa5atRA4dQsMq3rrx+TbilMdT+wX0a2rgx7I2pW5ZWUeJAwWhtFCVzZ0mGjiS dCkmt4N3voyAUbnRdUtlJ7JW8Y7rVjhDcc095x2hHoIdgLiJQDOU6feSUe2gr6xp/HMV zLgA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:cc:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:subject :content-transfer-encoding:mime-version:references:in-reply-to :message-id:to:from:date; bh=wX7gG+XItr5BT+F0Imm4I9+slISm8Ujqz/8ShLURAmM=; b=LkVt1HW7SuSz7rDCJvDDGcjMnXQD9HMkB5rd6j+u8Sx06bGXI61eazygNTUDZpzxwd koMUInPvXz5UauJ8pYGCKo+UWuyheVK/5gTrRjndD2zx9y1Z/rI30mGNVdNj7uIJ1mJP 9ZzNjL9iDCdt1LJwz3tDxGZGOmntfyJMbsor/bV6gGKR5Ht87RItz8nrbT9zAdkWVpxX gcykAEGNdYlYvyFl7RVVhgsiUa5ruNRAupklQLUI/ohS7T3m4k72vDDFyU4n96Kr/3tf MgbsPz8pyEb4Ur7kQs+gcHa2jc2LUZweWIEbZnf34heNnSTwL28C2LZA9XWzcEI4WLIv X08g== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id e13-v6si27124025ybk.45.2018.11.20.08.39.59 for (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 20 Nov 2018 08:39:59 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Authentication-Results: mx.google.com; spf=pass (google.com: domain of qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) smtp.mailfrom="qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org"; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: from localhost ([::1]:34603 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gP94A-0007rL-N4 for alex.bennee@linaro.org; Tue, 20 Nov 2018 11:39:58 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53707) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gP93s-0007qw-Aa for qemu-arm@nongnu.org; Tue, 20 Nov 2018 11:39:41 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gP93p-0004bD-Kw for qemu-arm@nongnu.org; Tue, 20 Nov 2018 11:39:40 -0500 Received: from mx1.redhat.com ([209.132.183.28]:59342) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gP93n-0004Xf-M2; Tue, 20 Nov 2018 11:39:37 -0500 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id E704658E22; Tue, 20 Nov 2018 16:39:33 +0000 (UTC) Received: from localhost (ovpn-204-50.brq.redhat.com [10.40.204.50]) by smtp.corp.redhat.com (Postfix) with ESMTP id C9C985D6A9; Tue, 20 Nov 2018 16:39:25 +0000 (UTC) Date: Tue, 20 Nov 2018 17:39:24 +0100 From: Igor Mammedov To: =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau Message-ID: <20181120173924.0131a3e4@redhat.com> In-Reply-To: <20181107123652.23417-4-marcandre.lureau@redhat.com> References: <20181107123652.23417-1-marcandre.lureau@redhat.com> <20181107123652.23417-4-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.39]); Tue, 20 Nov 2018 16:39:34 +0000 (UTC) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.132.183.28 Subject: Re: [Qemu-arm] [PATCH for-3.2 v3 03/14] qom: make user_creatable_complete() specific to UserCreatable X-BeenThere: qemu-arm@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Peter Maydell , Stefano Stabellini , Eduardo Habkost , Corey Minyard , Amit Shah , =?UTF-8?B?SGVydsOp?= Poussineau , "Michael S. Tsirkin" , Mark Cave-Ayland , qemu-devel@nongnu.org, dgilbert@redhat.com, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Marcel Apfelbaum , xen-devel@lists.xenproject.org, Anthony Perard , Paolo Bonzini , Stefan Berger , Andreas =?UTF-8?B?RsOkcmJlcg==?= , Artyom Tarasenko , Richard Henderson Errors-To: qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Sender: "Qemu-arm" X-TUID: /1XwFeAPxUUe On Wed, 7 Nov 2018 16:36:41 +0400 Marc-Andr=C3=A9 Lureau wrote: > Instead of accepting any Object*, change user_creatable_complete() to > require a UserCreatable*. Modify the callers to pass the appropriate > argument, removing redundant dynamic cast checks in object creation. Looks like it doesn't apply to current HEAD anymore =20 >=20 > Signed-off-by: Marc-Andr=C3=A9 Lureau > Reviewed-by: Igor Mammedov > --- > include/qom/object_interfaces.h | 4 ++-- > hw/misc/ivshmem.c | 2 +- > hw/virtio/virtio-rng.c | 2 +- > qom/object.c | 12 ++++++++---- > qom/object_interfaces.c | 14 +++----------- > 5 files changed, 15 insertions(+), 19 deletions(-) >=20 > diff --git a/include/qom/object_interfaces.h b/include/qom/object_interfa= ces.h > index 652a16d2ba..682ba1d9b0 100644 > --- a/include/qom/object_interfaces.h > +++ b/include/qom/object_interfaces.h > @@ -51,14 +51,14 @@ typedef struct UserCreatableClass { > =20 > /** > * user_creatable_complete: > - * @obj: the object whose complete() method is called if defined > + * @uc: the user-creatable object whose complete() method is called if d= efined > * @errp: if an error occurs, a pointer to an area to store the error > * > * Wrapper to call complete() method if one of types it's inherited > * from implements USER_CREATABLE interface, otherwise the call does > * nothing. > */ > -void user_creatable_complete(Object *obj, Error **errp); > +void user_creatable_complete(UserCreatable *uc, Error **errp); > =20 > /** > * user_creatable_can_be_deleted: > diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c > index f88910e55c..478f41044c 100644 > --- a/hw/misc/ivshmem.c > +++ b/hw/misc/ivshmem.c > @@ -1279,7 +1279,7 @@ static void desugar_shm(IVShmemState *s) > object_property_set_bool(obj, true, "share", &error_abort); > object_property_add_child(OBJECT(s), "internal-shm-backend", obj, > &error_abort); > - user_creatable_complete(obj, &error_abort); > + user_creatable_complete(USER_CREATABLE(obj), &error_abort); > s->hostmem =3D MEMORY_BACKEND(obj); > } > =20 > diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c > index 855f1b41d1..30493a2586 100644 > --- a/hw/virtio/virtio-rng.c > +++ b/hw/virtio/virtio-rng.c > @@ -191,7 +191,7 @@ static void virtio_rng_device_realize(DeviceState *de= v, Error **errp) > if (vrng->conf.rng =3D=3D NULL) { > vrng->conf.default_backend =3D RNG_RANDOM(object_new(TYPE_RNG_RA= NDOM)); > =20 > - user_creatable_complete(OBJECT(vrng->conf.default_backend), > + user_creatable_complete(USER_CREATABLE(vrng->conf.default_backen= d), > &local_err); > if (local_err) { > error_propagate(errp, local_err); > diff --git a/qom/object.c b/qom/object.c > index 547dcf97c3..eb770dbf7f 100644 > --- a/qom/object.c > +++ b/qom/object.c > @@ -417,6 +417,7 @@ void object_initialize_childv(Object *parentobj, cons= t char *propname, > { > Error *local_err =3D NULL; > Object *obj; > + UserCreatable *uc; > =20 > object_initialize(childobj, size, type); > obj =3D OBJECT(childobj); > @@ -431,8 +432,9 @@ void object_initialize_childv(Object *parentobj, cons= t char *propname, > goto out; > } > =20 > - if (object_dynamic_cast(obj, TYPE_USER_CREATABLE)) { > - user_creatable_complete(obj, &local_err); > + uc =3D (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE= ); > + if (uc) { > + user_creatable_complete(uc, &local_err); > if (local_err) { > object_unparent(obj); > goto out; > @@ -590,6 +592,7 @@ Object *object_new_with_propv(const char *typename, > Object *obj; > ObjectClass *klass; > Error *local_err =3D NULL; > + UserCreatable *uc; > =20 > klass =3D object_class_by_name(typename); > if (!klass) { > @@ -612,8 +615,9 @@ Object *object_new_with_propv(const char *typename, > goto error; > } > =20 > - if (object_dynamic_cast(obj, TYPE_USER_CREATABLE)) { > - user_creatable_complete(obj, &local_err); > + uc =3D (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE= ); > + if (uc) { > + user_creatable_complete(uc, &local_err); > if (local_err) { > object_unparent(obj); > goto error; > diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c > index 97b79b48bb..db85d1eb75 100644 > --- a/qom/object_interfaces.c > +++ b/qom/object_interfaces.c > @@ -8,18 +8,10 @@ > #include "qapi/opts-visitor.h" > #include "qemu/config-file.h" > =20 > -void user_creatable_complete(Object *obj, Error **errp) > +void user_creatable_complete(UserCreatable *uc, Error **errp) > { > + UserCreatableClass *ucc =3D USER_CREATABLE_GET_CLASS(uc); > =20 > - UserCreatableClass *ucc; > - UserCreatable *uc =3D > - (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE); > - > - if (!uc) { > - return; > - } > - > - ucc =3D USER_CREATABLE_GET_CLASS(uc); > if (ucc->complete) { > ucc->complete(uc, errp); > } > @@ -89,7 +81,7 @@ Object *user_creatable_add_type(const char *type, const= char *id, > goto out; > } > =20 > - user_creatable_complete(obj, &local_err); > + user_creatable_complete(USER_CREATABLE(obj), &local_err); > if (local_err) { > object_property_del(object_get_objects_root(), > id, &error_abort); From mboxrd@z Thu Jan 1 00:00:00 1970 From: Igor Mammedov Subject: Re: [PATCH for-3.2 v3 03/14] qom: make user_creatable_complete() specific to UserCreatable Date: Tue, 20 Nov 2018 17:39:24 +0100 Message-ID: <20181120173924.0131a3e4@redhat.com> References: <20181107123652.23417-1-marcandre.lureau@redhat.com> <20181107123652.23417-4-marcandre.lureau@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from all-amaz-eas1.inumbo.com ([34.197.232.57] helo=us1-amaz-eas2.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gP93n-0002JI-L5 for xen-devel@lists.xenproject.org; Tue, 20 Nov 2018 16:39:35 +0000 In-Reply-To: <20181107123652.23417-4-marcandre.lureau@redhat.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau Cc: Peter Maydell , Stefano Stabellini , Eduardo Habkost , Corey Minyard , Amit Shah , =?UTF-8?B?SGVydsOp?= Poussineau , "Michael S. Tsirkin" , Mark Cave-Ayland , qemu-devel@nongnu.org, dgilbert@redhat.com, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Marcel Apfelbaum , xen-devel@lists.xenproject.org, Anthony Perard , Paolo Bonzini , Stefan Berger , Andreas =?UTF-8?B?RsOkcmJlcg==?= , Artyom Tarasenko , Richard Henderson List-Id: xen-devel@lists.xenproject.org T24gV2VkLCAgNyBOb3YgMjAxOCAxNjozNjo0MSArMDQwMApNYXJjLUFuZHLDqSBMdXJlYXUgPG1h cmNhbmRyZS5sdXJlYXVAcmVkaGF0LmNvbT4gd3JvdGU6Cgo+IEluc3RlYWQgb2YgYWNjZXB0aW5n IGFueSBPYmplY3QqLCBjaGFuZ2UgdXNlcl9jcmVhdGFibGVfY29tcGxldGUoKSB0bwo+IHJlcXVp cmUgYSBVc2VyQ3JlYXRhYmxlKi4gTW9kaWZ5IHRoZSBjYWxsZXJzIHRvIHBhc3MgdGhlIGFwcHJv cHJpYXRlCj4gYXJndW1lbnQsIHJlbW92aW5nIHJlZHVuZGFudCBkeW5hbWljIGNhc3QgY2hlY2tz IGluIG9iamVjdCBjcmVhdGlvbi4KCkxvb2tzIGxpa2UgaXQgZG9lc24ndCBhcHBseSB0byBjdXJy ZW50IEhFQUQgYW55bW9yZQogCj4gCj4gU2lnbmVkLW9mZi1ieTogTWFyYy1BbmRyw6kgTHVyZWF1 IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhhdC5jb20+Cj4gUmV2aWV3ZWQtYnk6IElnb3IgTWFtbWVk b3YgPGltYW1tZWRvQHJlZGhhdC5jb20+Cj4gLS0tCj4gIGluY2x1ZGUvcW9tL29iamVjdF9pbnRl cmZhY2VzLmggfCAgNCArKy0tCj4gIGh3L21pc2MvaXZzaG1lbS5jICAgICAgICAgICAgICAgfCAg MiArLQo+ICBody92aXJ0aW8vdmlydGlvLXJuZy5jICAgICAgICAgIHwgIDIgKy0KPiAgcW9tL29i amVjdC5jICAgICAgICAgICAgICAgICAgICB8IDEyICsrKysrKysrLS0tLQo+ICBxb20vb2JqZWN0 X2ludGVyZmFjZXMuYyAgICAgICAgIHwgMTQgKysrLS0tLS0tLS0tLS0KPiAgNSBmaWxlcyBjaGFu Z2VkLCAxNSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEv aW5jbHVkZS9xb20vb2JqZWN0X2ludGVyZmFjZXMuaCBiL2luY2x1ZGUvcW9tL29iamVjdF9pbnRl cmZhY2VzLmgKPiBpbmRleCA2NTJhMTZkMmJhLi42ODJiYTFkOWIwIDEwMDY0NAo+IC0tLSBhL2lu Y2x1ZGUvcW9tL29iamVjdF9pbnRlcmZhY2VzLmgKPiArKysgYi9pbmNsdWRlL3FvbS9vYmplY3Rf aW50ZXJmYWNlcy5oCj4gQEAgLTUxLDE0ICs1MSwxNCBAQCB0eXBlZGVmIHN0cnVjdCBVc2VyQ3Jl YXRhYmxlQ2xhc3Mgewo+ICAKPiAgLyoqCj4gICAqIHVzZXJfY3JlYXRhYmxlX2NvbXBsZXRlOgo+ IC0gKiBAb2JqOiB0aGUgb2JqZWN0IHdob3NlIGNvbXBsZXRlKCkgbWV0aG9kIGlzIGNhbGxlZCBp ZiBkZWZpbmVkCj4gKyAqIEB1YzogdGhlIHVzZXItY3JlYXRhYmxlIG9iamVjdCB3aG9zZSBjb21w bGV0ZSgpIG1ldGhvZCBpcyBjYWxsZWQgaWYgZGVmaW5lZAo+ICAgKiBAZXJycDogaWYgYW4gZXJy b3Igb2NjdXJzLCBhIHBvaW50ZXIgdG8gYW4gYXJlYSB0byBzdG9yZSB0aGUgZXJyb3IKPiAgICoK PiAgICogV3JhcHBlciB0byBjYWxsIGNvbXBsZXRlKCkgbWV0aG9kIGlmIG9uZSBvZiB0eXBlcyBp dCdzIGluaGVyaXRlZAo+ICAgKiBmcm9tIGltcGxlbWVudHMgVVNFUl9DUkVBVEFCTEUgaW50ZXJm YWNlLCBvdGhlcndpc2UgdGhlIGNhbGwgZG9lcwo+ICAgKiBub3RoaW5nLgo+ICAgKi8KPiAtdm9p ZCB1c2VyX2NyZWF0YWJsZV9jb21wbGV0ZShPYmplY3QgKm9iaiwgRXJyb3IgKiplcnJwKTsKPiAr dm9pZCB1c2VyX2NyZWF0YWJsZV9jb21wbGV0ZShVc2VyQ3JlYXRhYmxlICp1YywgRXJyb3IgKipl cnJwKTsKPiAgCj4gIC8qKgo+ICAgKiB1c2VyX2NyZWF0YWJsZV9jYW5fYmVfZGVsZXRlZDoKPiBk aWZmIC0tZ2l0IGEvaHcvbWlzYy9pdnNobWVtLmMgYi9ody9taXNjL2l2c2htZW0uYwo+IGluZGV4 IGY4ODkxMGU1NWMuLjQ3OGY0MTA0NGMgMTAwNjQ0Cj4gLS0tIGEvaHcvbWlzYy9pdnNobWVtLmMK PiArKysgYi9ody9taXNjL2l2c2htZW0uYwo+IEBAIC0xMjc5LDcgKzEyNzksNyBAQCBzdGF0aWMg dm9pZCBkZXN1Z2FyX3NobShJVlNobWVtU3RhdGUgKnMpCj4gICAgICBvYmplY3RfcHJvcGVydHlf c2V0X2Jvb2wob2JqLCB0cnVlLCAic2hhcmUiLCAmZXJyb3JfYWJvcnQpOwo+ICAgICAgb2JqZWN0 X3Byb3BlcnR5X2FkZF9jaGlsZChPQkpFQ1QocyksICJpbnRlcm5hbC1zaG0tYmFja2VuZCIsIG9i aiwKPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yX2Fib3J0KTsKPiAtICAg IHVzZXJfY3JlYXRhYmxlX2NvbXBsZXRlKG9iaiwgJmVycm9yX2Fib3J0KTsKPiArICAgIHVzZXJf Y3JlYXRhYmxlX2NvbXBsZXRlKFVTRVJfQ1JFQVRBQkxFKG9iaiksICZlcnJvcl9hYm9ydCk7Cj4g ICAgICBzLT5ob3N0bWVtID0gTUVNT1JZX0JBQ0tFTkQob2JqKTsKPiAgfQo+ICAKPiBkaWZmIC0t Z2l0IGEvaHcvdmlydGlvL3ZpcnRpby1ybmcuYyBiL2h3L3ZpcnRpby92aXJ0aW8tcm5nLmMKPiBp bmRleCA4NTVmMWI0MWQxLi4zMDQ5M2EyNTg2IDEwMDY0NAo+IC0tLSBhL2h3L3ZpcnRpby92aXJ0 aW8tcm5nLmMKPiArKysgYi9ody92aXJ0aW8vdmlydGlvLXJuZy5jCj4gQEAgLTE5MSw3ICsxOTEs NyBAQCBzdGF0aWMgdm9pZCB2aXJ0aW9fcm5nX2RldmljZV9yZWFsaXplKERldmljZVN0YXRlICpk ZXYsIEVycm9yICoqZXJycCkKPiAgICAgIGlmICh2cm5nLT5jb25mLnJuZyA9PSBOVUxMKSB7Cj4g ICAgICAgICAgdnJuZy0+Y29uZi5kZWZhdWx0X2JhY2tlbmQgPSBSTkdfUkFORE9NKG9iamVjdF9u ZXcoVFlQRV9STkdfUkFORE9NKSk7Cj4gIAo+IC0gICAgICAgIHVzZXJfY3JlYXRhYmxlX2NvbXBs ZXRlKE9CSkVDVCh2cm5nLT5jb25mLmRlZmF1bHRfYmFja2VuZCksCj4gKyAgICAgICAgdXNlcl9j cmVhdGFibGVfY29tcGxldGUoVVNFUl9DUkVBVEFCTEUodnJuZy0+Y29uZi5kZWZhdWx0X2JhY2tl bmQpLAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsb2NhbF9lcnIpOwo+ICAg ICAgICAgIGlmIChsb2NhbF9lcnIpIHsKPiAgICAgICAgICAgICAgZXJyb3JfcHJvcGFnYXRlKGVy cnAsIGxvY2FsX2Vycik7Cj4gZGlmZiAtLWdpdCBhL3FvbS9vYmplY3QuYyBiL3FvbS9vYmplY3Qu Ywo+IGluZGV4IDU0N2RjZjk3YzMuLmViNzcwZGJmN2YgMTAwNjQ0Cj4gLS0tIGEvcW9tL29iamVj dC5jCj4gKysrIGIvcW9tL29iamVjdC5jCj4gQEAgLTQxNyw2ICs0MTcsNyBAQCB2b2lkIG9iamVj dF9pbml0aWFsaXplX2NoaWxkdihPYmplY3QgKnBhcmVudG9iaiwgY29uc3QgY2hhciAqcHJvcG5h bWUsCj4gIHsKPiAgICAgIEVycm9yICpsb2NhbF9lcnIgPSBOVUxMOwo+ICAgICAgT2JqZWN0ICpv Ymo7Cj4gKyAgICBVc2VyQ3JlYXRhYmxlICp1YzsKPiAgCj4gICAgICBvYmplY3RfaW5pdGlhbGl6 ZShjaGlsZG9iaiwgc2l6ZSwgdHlwZSk7Cj4gICAgICBvYmogPSBPQkpFQ1QoY2hpbGRvYmopOwo+ IEBAIC00MzEsOCArNDMyLDkgQEAgdm9pZCBvYmplY3RfaW5pdGlhbGl6ZV9jaGlsZHYoT2JqZWN0 ICpwYXJlbnRvYmosIGNvbnN0IGNoYXIgKnByb3BuYW1lLAo+ICAgICAgICAgIGdvdG8gb3V0Owo+ ICAgICAgfQo+ICAKPiAtICAgIGlmIChvYmplY3RfZHluYW1pY19jYXN0KG9iaiwgVFlQRV9VU0VS X0NSRUFUQUJMRSkpIHsKPiAtICAgICAgICB1c2VyX2NyZWF0YWJsZV9jb21wbGV0ZShvYmosICZs b2NhbF9lcnIpOwo+ICsgICAgdWMgPSAoVXNlckNyZWF0YWJsZSAqKW9iamVjdF9keW5hbWljX2Nh c3Qob2JqLCBUWVBFX1VTRVJfQ1JFQVRBQkxFKTsKPiArICAgIGlmICh1Yykgewo+ICsgICAgICAg IHVzZXJfY3JlYXRhYmxlX2NvbXBsZXRlKHVjLCAmbG9jYWxfZXJyKTsKPiAgICAgICAgICBpZiAo bG9jYWxfZXJyKSB7Cj4gICAgICAgICAgICAgIG9iamVjdF91bnBhcmVudChvYmopOwo+ICAgICAg ICAgICAgICBnb3RvIG91dDsKPiBAQCAtNTkwLDYgKzU5Miw3IEBAIE9iamVjdCAqb2JqZWN0X25l d193aXRoX3Byb3B2KGNvbnN0IGNoYXIgKnR5cGVuYW1lLAo+ICAgICAgT2JqZWN0ICpvYmo7Cj4g ICAgICBPYmplY3RDbGFzcyAqa2xhc3M7Cj4gICAgICBFcnJvciAqbG9jYWxfZXJyID0gTlVMTDsK PiArICAgIFVzZXJDcmVhdGFibGUgKnVjOwo+ICAKPiAgICAgIGtsYXNzID0gb2JqZWN0X2NsYXNz X2J5X25hbWUodHlwZW5hbWUpOwo+ICAgICAgaWYgKCFrbGFzcykgewo+IEBAIC02MTIsOCArNjE1 LDkgQEAgT2JqZWN0ICpvYmplY3RfbmV3X3dpdGhfcHJvcHYoY29uc3QgY2hhciAqdHlwZW5hbWUs Cj4gICAgICAgICAgZ290byBlcnJvcjsKPiAgICAgIH0KPiAgCj4gLSAgICBpZiAob2JqZWN0X2R5 bmFtaWNfY2FzdChvYmosIFRZUEVfVVNFUl9DUkVBVEFCTEUpKSB7Cj4gLSAgICAgICAgdXNlcl9j cmVhdGFibGVfY29tcGxldGUob2JqLCAmbG9jYWxfZXJyKTsKPiArICAgIHVjID0gKFVzZXJDcmVh dGFibGUgKilvYmplY3RfZHluYW1pY19jYXN0KG9iaiwgVFlQRV9VU0VSX0NSRUFUQUJMRSk7Cj4g KyAgICBpZiAodWMpIHsKPiArICAgICAgICB1c2VyX2NyZWF0YWJsZV9jb21wbGV0ZSh1YywgJmxv Y2FsX2Vycik7Cj4gICAgICAgICAgaWYgKGxvY2FsX2Vycikgewo+ICAgICAgICAgICAgICBvYmpl Y3RfdW5wYXJlbnQob2JqKTsKPiAgICAgICAgICAgICAgZ290byBlcnJvcjsKPiBkaWZmIC0tZ2l0 IGEvcW9tL29iamVjdF9pbnRlcmZhY2VzLmMgYi9xb20vb2JqZWN0X2ludGVyZmFjZXMuYwo+IGlu ZGV4IDk3Yjc5YjQ4YmIuLmRiODVkMWViNzUgMTAwNjQ0Cj4gLS0tIGEvcW9tL29iamVjdF9pbnRl cmZhY2VzLmMKPiArKysgYi9xb20vb2JqZWN0X2ludGVyZmFjZXMuYwo+IEBAIC04LDE4ICs4LDEw IEBACj4gICNpbmNsdWRlICJxYXBpL29wdHMtdmlzaXRvci5oIgo+ICAjaW5jbHVkZSAicWVtdS9j b25maWctZmlsZS5oIgo+ICAKPiAtdm9pZCB1c2VyX2NyZWF0YWJsZV9jb21wbGV0ZShPYmplY3Qg Km9iaiwgRXJyb3IgKiplcnJwKQo+ICt2b2lkIHVzZXJfY3JlYXRhYmxlX2NvbXBsZXRlKFVzZXJD cmVhdGFibGUgKnVjLCBFcnJvciAqKmVycnApCj4gIHsKPiArICAgIFVzZXJDcmVhdGFibGVDbGFz cyAqdWNjID0gVVNFUl9DUkVBVEFCTEVfR0VUX0NMQVNTKHVjKTsKPiAgCj4gLSAgICBVc2VyQ3Jl YXRhYmxlQ2xhc3MgKnVjYzsKPiAtICAgIFVzZXJDcmVhdGFibGUgKnVjID0KPiAtICAgICAgICAo VXNlckNyZWF0YWJsZSAqKW9iamVjdF9keW5hbWljX2Nhc3Qob2JqLCBUWVBFX1VTRVJfQ1JFQVRB QkxFKTsKPiAtCj4gLSAgICBpZiAoIXVjKSB7Cj4gLSAgICAgICAgcmV0dXJuOwo+IC0gICAgfQo+ IC0KPiAtICAgIHVjYyA9IFVTRVJfQ1JFQVRBQkxFX0dFVF9DTEFTUyh1Yyk7Cj4gICAgICBpZiAo dWNjLT5jb21wbGV0ZSkgewo+ICAgICAgICAgIHVjYy0+Y29tcGxldGUodWMsIGVycnApOwo+ICAg ICAgfQo+IEBAIC04OSw3ICs4MSw3IEBAIE9iamVjdCAqdXNlcl9jcmVhdGFibGVfYWRkX3R5cGUo Y29uc3QgY2hhciAqdHlwZSwgY29uc3QgY2hhciAqaWQsCj4gICAgICAgICAgZ290byBvdXQ7Cj4g ICAgICB9Cj4gIAo+IC0gICAgdXNlcl9jcmVhdGFibGVfY29tcGxldGUob2JqLCAmbG9jYWxfZXJy KTsKPiArICAgIHVzZXJfY3JlYXRhYmxlX2NvbXBsZXRlKFVTRVJfQ1JFQVRBQkxFKG9iaiksICZs b2NhbF9lcnIpOwo+ICAgICAgaWYgKGxvY2FsX2Vycikgewo+ICAgICAgICAgIG9iamVjdF9wcm9w ZXJ0eV9kZWwob2JqZWN0X2dldF9vYmplY3RzX3Jvb3QoKSwKPiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGlkLCAmZXJyb3JfYWJvcnQpOwoKCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxp c3RzLnhlbnByb2plY3Qub3JnCmh0dHBzOi8vbGlzdHMueGVucHJvamVjdC5vcmcvbWFpbG1hbi9s aXN0aW5mby94ZW4tZGV2ZWw= From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53729) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gP93u-0007rG-Bq for qemu-devel@nongnu.org; Tue, 20 Nov 2018 11:39:43 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gP93t-0004cU-CP for qemu-devel@nongnu.org; Tue, 20 Nov 2018 11:39:42 -0500 Date: Tue, 20 Nov 2018 17:39:24 +0100 From: Igor Mammedov Message-ID: <20181120173924.0131a3e4@redhat.com> In-Reply-To: <20181107123652.23417-4-marcandre.lureau@redhat.com> References: <20181107123652.23417-1-marcandre.lureau@redhat.com> <20181107123652.23417-4-marcandre.lureau@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: Re: [Qemu-devel] [PATCH for-3.2 v3 03/14] qom: make user_creatable_complete() specific to UserCreatable List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau Cc: qemu-devel@nongnu.org, Paolo Bonzini , dgilbert@redhat.com, Richard Henderson , Andreas =?UTF-8?B?RsOkcmJlcg==?= , qemu-arm@nongnu.org, xen-devel@lists.xenproject.org, Artyom Tarasenko , Anthony Perard , Mark Cave-Ayland , Eduardo Habkost , Amit Shah , Stefan Berger , Marcel Apfelbaum , Stefano Stabellini , "Michael S. Tsirkin" , qemu-ppc@nongnu.org, Peter Maydell , Corey Minyard , =?UTF-8?B?SGVydsOp?= Poussineau On Wed, 7 Nov 2018 16:36:41 +0400 Marc-Andr=C3=A9 Lureau wrote: > Instead of accepting any Object*, change user_creatable_complete() to > require a UserCreatable*. Modify the callers to pass the appropriate > argument, removing redundant dynamic cast checks in object creation. Looks like it doesn't apply to current HEAD anymore =20 >=20 > Signed-off-by: Marc-Andr=C3=A9 Lureau > Reviewed-by: Igor Mammedov > --- > include/qom/object_interfaces.h | 4 ++-- > hw/misc/ivshmem.c | 2 +- > hw/virtio/virtio-rng.c | 2 +- > qom/object.c | 12 ++++++++---- > qom/object_interfaces.c | 14 +++----------- > 5 files changed, 15 insertions(+), 19 deletions(-) >=20 > diff --git a/include/qom/object_interfaces.h b/include/qom/object_interfa= ces.h > index 652a16d2ba..682ba1d9b0 100644 > --- a/include/qom/object_interfaces.h > +++ b/include/qom/object_interfaces.h > @@ -51,14 +51,14 @@ typedef struct UserCreatableClass { > =20 > /** > * user_creatable_complete: > - * @obj: the object whose complete() method is called if defined > + * @uc: the user-creatable object whose complete() method is called if d= efined > * @errp: if an error occurs, a pointer to an area to store the error > * > * Wrapper to call complete() method if one of types it's inherited > * from implements USER_CREATABLE interface, otherwise the call does > * nothing. > */ > -void user_creatable_complete(Object *obj, Error **errp); > +void user_creatable_complete(UserCreatable *uc, Error **errp); > =20 > /** > * user_creatable_can_be_deleted: > diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c > index f88910e55c..478f41044c 100644 > --- a/hw/misc/ivshmem.c > +++ b/hw/misc/ivshmem.c > @@ -1279,7 +1279,7 @@ static void desugar_shm(IVShmemState *s) > object_property_set_bool(obj, true, "share", &error_abort); > object_property_add_child(OBJECT(s), "internal-shm-backend", obj, > &error_abort); > - user_creatable_complete(obj, &error_abort); > + user_creatable_complete(USER_CREATABLE(obj), &error_abort); > s->hostmem =3D MEMORY_BACKEND(obj); > } > =20 > diff --git a/hw/virtio/virtio-rng.c b/hw/virtio/virtio-rng.c > index 855f1b41d1..30493a2586 100644 > --- a/hw/virtio/virtio-rng.c > +++ b/hw/virtio/virtio-rng.c > @@ -191,7 +191,7 @@ static void virtio_rng_device_realize(DeviceState *de= v, Error **errp) > if (vrng->conf.rng =3D=3D NULL) { > vrng->conf.default_backend =3D RNG_RANDOM(object_new(TYPE_RNG_RA= NDOM)); > =20 > - user_creatable_complete(OBJECT(vrng->conf.default_backend), > + user_creatable_complete(USER_CREATABLE(vrng->conf.default_backen= d), > &local_err); > if (local_err) { > error_propagate(errp, local_err); > diff --git a/qom/object.c b/qom/object.c > index 547dcf97c3..eb770dbf7f 100644 > --- a/qom/object.c > +++ b/qom/object.c > @@ -417,6 +417,7 @@ void object_initialize_childv(Object *parentobj, cons= t char *propname, > { > Error *local_err =3D NULL; > Object *obj; > + UserCreatable *uc; > =20 > object_initialize(childobj, size, type); > obj =3D OBJECT(childobj); > @@ -431,8 +432,9 @@ void object_initialize_childv(Object *parentobj, cons= t char *propname, > goto out; > } > =20 > - if (object_dynamic_cast(obj, TYPE_USER_CREATABLE)) { > - user_creatable_complete(obj, &local_err); > + uc =3D (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE= ); > + if (uc) { > + user_creatable_complete(uc, &local_err); > if (local_err) { > object_unparent(obj); > goto out; > @@ -590,6 +592,7 @@ Object *object_new_with_propv(const char *typename, > Object *obj; > ObjectClass *klass; > Error *local_err =3D NULL; > + UserCreatable *uc; > =20 > klass =3D object_class_by_name(typename); > if (!klass) { > @@ -612,8 +615,9 @@ Object *object_new_with_propv(const char *typename, > goto error; > } > =20 > - if (object_dynamic_cast(obj, TYPE_USER_CREATABLE)) { > - user_creatable_complete(obj, &local_err); > + uc =3D (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE= ); > + if (uc) { > + user_creatable_complete(uc, &local_err); > if (local_err) { > object_unparent(obj); > goto error; > diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c > index 97b79b48bb..db85d1eb75 100644 > --- a/qom/object_interfaces.c > +++ b/qom/object_interfaces.c > @@ -8,18 +8,10 @@ > #include "qapi/opts-visitor.h" > #include "qemu/config-file.h" > =20 > -void user_creatable_complete(Object *obj, Error **errp) > +void user_creatable_complete(UserCreatable *uc, Error **errp) > { > + UserCreatableClass *ucc =3D USER_CREATABLE_GET_CLASS(uc); > =20 > - UserCreatableClass *ucc; > - UserCreatable *uc =3D > - (UserCreatable *)object_dynamic_cast(obj, TYPE_USER_CREATABLE); > - > - if (!uc) { > - return; > - } > - > - ucc =3D USER_CREATABLE_GET_CLASS(uc); > if (ucc->complete) { > ucc->complete(uc, errp); > } > @@ -89,7 +81,7 @@ Object *user_creatable_add_type(const char *type, const= char *id, > goto out; > } > =20 > - user_creatable_complete(obj, &local_err); > + user_creatable_complete(USER_CREATABLE(obj), &local_err); > if (local_err) { > object_property_del(object_get_objects_root(), > id, &error_abort);