From mboxrd@z Thu Jan 1 00:00:00 1970 Received: by 2002:a5d:6089:0:0:0:0:0 with SMTP id w9csp1614240wrt; Wed, 21 Nov 2018 01:10:38 -0800 (PST) X-Google-Smtp-Source: AJdET5fxGcbU4Eu4Y90CMsu6wKAfLsPAlaBw1nK2n009eRJ+aW6TBEkRPS1bqwi1kyrVUJo3TvnT X-Received: by 2002:a0d:f302:: with SMTP id c2-v6mr5490041ywf.337.1542791438161; Wed, 21 Nov 2018 01:10:38 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542791438; cv=none; d=google.com; s=arc-20160816; b=SMvHR9t6mos49zwrmIC3T7w0Xg4OqAd4I57aW20Jr6xqQTqO+FvhiVcIjrGLfpgNxt ta0caR0Rol//p97eQQoLH51ecZtyiZ8WY2SpOguk20Dp9JZhlwBhNfxipiGKzC7/g/3k iqwyFzZn/9ilOaMH0FBULgDIXpINiWnfKD/h8oR5x7WDpnZveDuv+RLzfPiitce8UP0B fyejjIJ/aZgeXFZj5itK2/LM8nIwqdE2dLIEugbHsNRviNKWVyhcEih95BhhojI+vD/B O8fnuQUp6+ZcAK3dAxR1bLB7EgcQx9DH3G0RE67qt2phxHY7GmJPL3JavDa4HURKft3+ oJIw== 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=0Ckx1r5ASo9TFJZqDxu4zL3htFrAmdq+2fnRoKfwONQ=; b=zYOcELhOyaeW4uswh3vsJYVKtnHeULhd+2gHTjz8unVFu1QJ83bMPD3HiXNnAsGM5q FGGa+yRI1npThr43sdzQjkasupjFeTz9+z5lxuZqWxLsYAhAakblPVE4akY5EymwEA7d X9tQ7po1P3xZtX5XUxRIkISxLxX/b+tHI35iqUHC4ff7DWT1Z9icjnippF3cZTO9TGON npbLEcFQ9szcbXEggL0lniR2ctrY+w+yhfsdSw+gg3KfmIIFm3YOCkpT0Zty+XBK0lsR y/yE4SImdhaqxdmkv3XTqSNhtrK5Lt/f1Dk3N0fm2jzkYhH0dTjBv1elINGSkeE1phUB uycQ== 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 w16-v6si7829159ybl.441.2018.11.21.01.10.38 for (version=TLS1 cipher=AES128-SHA bits=128/128); Wed, 21 Nov 2018 01:10:38 -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]:37929 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gPOWr-0003Rh-JP for alex.bennee@linaro.org; Wed, 21 Nov 2018 04:10:37 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34078) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gPOWk-0003RK-2X for qemu-arm@nongnu.org; Wed, 21 Nov 2018 04:10:30 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gPOWg-0007Dx-W0 for qemu-arm@nongnu.org; Wed, 21 Nov 2018 04:10:30 -0500 Received: from mx1.redhat.com ([209.132.183.28]:58666) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gPOWg-0007Cz-Ov; Wed, 21 Nov 2018 04:10:26 -0500 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 49409308624F; Wed, 21 Nov 2018 09:10:25 +0000 (UTC) Received: from localhost (unknown [10.43.2.182]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3170F18E33; Wed, 21 Nov 2018 09:10:06 +0000 (UTC) Date: Wed, 21 Nov 2018 10:10:04 +0100 From: Igor Mammedov To: Laszlo Ersek Message-ID: <20181121101004.6405408a@redhat.com> In-Reply-To: References: <20181107123652.23417-1-marcandre.lureau@redhat.com> <20181107123652.23417-3-marcandre.lureau@redhat.com> <20181120173324.64a36d8e@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.14 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.49]); Wed, 21 Nov 2018 09:10:25 +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] [Qemu-devel] [PATCH for-3.2 v3 02/14] qom: make interface types abstract 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 , "Michael S. Tsirkin" , Mark Cave-Ayland , qemu-devel@nongnu.org, dgilbert@redhat.com, xen-devel@lists.xenproject.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Paolo Bonzini , Anthony Perard , =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau , Stefan Berger , Richard Henderson , Andreas =?UTF-8?B?RsOkcmJlcg==?= , Artyom Tarasenko , =?UTF-8?B?SGVydsOp?= Poussineau Errors-To: qemu-arm-bounces+alex.bennee=linaro.org@nongnu.org Sender: "Qemu-arm" X-TUID: XpwOkBNuwiaQ On Tue, 20 Nov 2018 19:54:23 +0100 Laszlo Ersek wrote: > On 11/20/18 17:33, Igor Mammedov wrote: > > On Wed, 7 Nov 2018 16:36:40 +0400 > > Marc-Andr=C3=A9 Lureau wrote: > > =20 > >> Interfaces don't have instance, let's make the interface type really > >> abstract to avoid confusion. > >> > >> Signed-off-by: Marc-Andr=C3=A9 Lureau > >> --- > >> include/hw/acpi/acpi_dev_interface.h | 6 +----- > >> include/hw/arm/linux-boot-if.h | 5 +---- > >> include/hw/fw-path-provider.h | 4 +--- > >> include/hw/hotplug.h | 6 +----- > >> include/hw/intc/intc.h | 4 +--- > >> include/hw/ipmi/ipmi.h | 4 +--- > >> include/hw/isa/isa.h | 4 ---- > >> include/hw/mem/memory-device.h | 4 +--- > >> include/hw/nmi.h | 4 +--- > >> include/hw/stream.h | 4 +--- > >> include/hw/timer/m48t59.h | 4 +--- > >> include/qom/object_interfaces.h | 6 +----- > >> include/sysemu/tpm.h | 4 +--- > >> target/arm/idau.h | 4 +--- > >> tests/check-qom-interface.c | 4 +--- > >> 15 files changed, 14 insertions(+), 53 deletions(-) > >> > >> diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/ac= pi_dev_interface.h > >> index dabf4c4fc9..43ff119179 100644 > >> --- a/include/hw/acpi/acpi_dev_interface.h > >> +++ b/include/hw/acpi/acpi_dev_interface.h > >> @@ -25,11 +25,7 @@ typedef enum { > >> INTERFACE_CHECK(AcpiDeviceIf, (obj), \ > >> TYPE_ACPI_DEVICE_IF) > >> =20 > >> - > >> -typedef struct AcpiDeviceIf { > >> - /* */ > >> - Object Parent; > >> -} AcpiDeviceIf; > >> +typedef struct AcpiDeviceIf AcpiDeviceIf; > >> =20 > >> void acpi_send_event(DeviceState *dev, AcpiEventStatusBits event); > >> =20 > >> diff --git a/include/hw/arm/linux-boot-if.h b/include/hw/arm/linux-boo= t-if.h > >> index aba4479a14..7bbdfd1cc6 100644 > >> --- a/include/hw/arm/linux-boot-if.h > >> +++ b/include/hw/arm/linux-boot-if.h > >> @@ -16,10 +16,7 @@ > >> #define ARM_LINUX_BOOT_IF(obj) \ > >> INTERFACE_CHECK(ARMLinuxBootIf, (obj), TYPE_ARM_LINUX_BOOT_IF) > >> =20 > >> -typedef struct ARMLinuxBootIf { > >> - /*< private >*/ > >> - Object parent_obj; > >> -} ARMLinuxBootIf; > >> +typedef struct ARMLinuxBootIf ARMLinuxBootIf; =20 > > I like how it makes interface truly opaque and removes the need for > > structure declaration but: > >=20 > > 1: I'm not sure if it's acceptable thing to do from language point of = view =20 >=20 > Yeah, it's fine. If you have just >=20 > struct ARMLinuxBootIf; >=20 > (and, optionally, a typedef to it,) then this type is called an > "incomplete type" (for translation units that don't see the actual type > definition). You can't apply the "sizeof" operator to it, you can't put > it in other structs and arrays etc. I'm too lazy to look up the exact > details in the C standard now. :) But, importantly, > "pointer-to-ARMLinuxBootIf" is a complete type, and you can do all the > usual things with that. (Define variables of that pointer type, embed > them in other structures, use it as an array element type, pass them to > functions, and so on.) Thanks Laszlo, that's the answer I was looking for. > Thanks > Laszlo >=20 > > 2: For a reader not aware of a trick, it's sort of confusing to have f= orward declaration but without structure itself. So if #1 is acceptable we = probably should document interface trick in object.h > >=20 > > [...] > > =20 >=20 >=20 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Igor Mammedov Subject: Re: [Qemu-devel] [PATCH for-3.2 v3 02/14] qom: make interface types abstract Date: Wed, 21 Nov 2018 10:10:04 +0100 Message-ID: <20181121101004.6405408a@redhat.com> References: <20181107123652.23417-1-marcandre.lureau@redhat.com> <20181107123652.23417-3-marcandre.lureau@redhat.com> <20181120173324.64a36d8e@redhat.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gPOWh-0003vc-Dq for xen-devel@lists.xenproject.org; Wed, 21 Nov 2018 09:10:27 +0000 In-Reply-To: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Laszlo Ersek Cc: Peter Maydell , Stefano Stabellini , Eduardo Habkost , Corey Minyard , Amit Shah , "Michael S. Tsirkin" , Mark Cave-Ayland , qemu-devel@nongnu.org, dgilbert@redhat.com, xen-devel@lists.xenproject.org, qemu-arm@nongnu.org, qemu-ppc@nongnu.org, Paolo Bonzini , Anthony Perard , =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau , Stefan Berger , Richard Henderson , Andreas =?UTF-8?B?RsOkcmJlcg==?= , Artyom Tarasenko , =?UTF-8?B?SGVydsOp?= Poussineau List-Id: xen-devel@lists.xenproject.org T24gVHVlLCAyMCBOb3YgMjAxOCAxOTo1NDoyMyArMDEwMApMYXN6bG8gRXJzZWsgPGxlcnNla0By ZWRoYXQuY29tPiB3cm90ZToKCj4gT24gMTEvMjAvMTggMTc6MzMsIElnb3IgTWFtbWVkb3Ygd3Jv dGU6Cj4gPiBPbiBXZWQsICA3IE5vdiAyMDE4IDE2OjM2OjQwICswNDAwCj4gPiBNYXJjLUFuZHLD qSBMdXJlYXUgPG1hcmNhbmRyZS5sdXJlYXVAcmVkaGF0LmNvbT4gd3JvdGU6Cj4gPiAgIAo+ID4+ IEludGVyZmFjZXMgZG9uJ3QgaGF2ZSBpbnN0YW5jZSwgbGV0J3MgbWFrZSB0aGUgaW50ZXJmYWNl IHR5cGUgcmVhbGx5Cj4gPj4gYWJzdHJhY3QgdG8gYXZvaWQgY29uZnVzaW9uLgo+ID4+Cj4gPj4g U2lnbmVkLW9mZi1ieTogTWFyYy1BbmRyw6kgTHVyZWF1IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhh dC5jb20+Cj4gPj4gLS0tCj4gPj4gIGluY2x1ZGUvaHcvYWNwaS9hY3BpX2Rldl9pbnRlcmZhY2Uu aCB8IDYgKy0tLS0tCj4gPj4gIGluY2x1ZGUvaHcvYXJtL2xpbnV4LWJvb3QtaWYuaCAgICAgICB8 IDUgKy0tLS0KPiA+PiAgaW5jbHVkZS9ody9mdy1wYXRoLXByb3ZpZGVyLmggICAgICAgIHwgNCAr LS0tCj4gPj4gIGluY2x1ZGUvaHcvaG90cGx1Zy5oICAgICAgICAgICAgICAgICB8IDYgKy0tLS0t Cj4gPj4gIGluY2x1ZGUvaHcvaW50Yy9pbnRjLmggICAgICAgICAgICAgICB8IDQgKy0tLQo+ID4+ ICBpbmNsdWRlL2h3L2lwbWkvaXBtaS5oICAgICAgICAgICAgICAgfCA0ICstLS0KPiA+PiAgaW5j bHVkZS9ody9pc2EvaXNhLmggICAgICAgICAgICAgICAgIHwgNCAtLS0tCj4gPj4gIGluY2x1ZGUv aHcvbWVtL21lbW9yeS1kZXZpY2UuaCAgICAgICB8IDQgKy0tLQo+ID4+ICBpbmNsdWRlL2h3L25t aS5oICAgICAgICAgICAgICAgICAgICAgfCA0ICstLS0KPiA+PiAgaW5jbHVkZS9ody9zdHJlYW0u aCAgICAgICAgICAgICAgICAgIHwgNCArLS0tCj4gPj4gIGluY2x1ZGUvaHcvdGltZXIvbTQ4dDU5 LmggICAgICAgICAgICB8IDQgKy0tLQo+ID4+ICBpbmNsdWRlL3FvbS9vYmplY3RfaW50ZXJmYWNl cy5oICAgICAgfCA2ICstLS0tLQo+ID4+ICBpbmNsdWRlL3N5c2VtdS90cG0uaCAgICAgICAgICAg ICAgICAgfCA0ICstLS0KPiA+PiAgdGFyZ2V0L2FybS9pZGF1LmggICAgICAgICAgICAgICAgICAg IHwgNCArLS0tCj4gPj4gIHRlc3RzL2NoZWNrLXFvbS1pbnRlcmZhY2UuYyAgICAgICAgICB8IDQg Ky0tLQo+ID4+ICAxNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA1MyBkZWxldGlv bnMoLSkKPiA+Pgo+ID4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2h3L2FjcGkvYWNwaV9kZXZfaW50 ZXJmYWNlLmggYi9pbmNsdWRlL2h3L2FjcGkvYWNwaV9kZXZfaW50ZXJmYWNlLmgKPiA+PiBpbmRl eCBkYWJmNGM0ZmM5Li40M2ZmMTE5MTc5IDEwMDY0NAo+ID4+IC0tLSBhL2luY2x1ZGUvaHcvYWNw aS9hY3BpX2Rldl9pbnRlcmZhY2UuaAo+ID4+ICsrKyBiL2luY2x1ZGUvaHcvYWNwaS9hY3BpX2Rl dl9pbnRlcmZhY2UuaAo+ID4+IEBAIC0yNSwxMSArMjUsNyBAQCB0eXBlZGVmIGVudW0gewo+ID4+ ICAgICAgIElOVEVSRkFDRV9DSEVDSyhBY3BpRGV2aWNlSWYsIChvYmopLCBcCj4gPj4gICAgICAg ICAgICAgICAgICAgICAgIFRZUEVfQUNQSV9ERVZJQ0VfSUYpCj4gPj4gIAo+ID4+IC0KPiA+PiAt dHlwZWRlZiBzdHJ1Y3QgQWNwaURldmljZUlmIHsKPiA+PiAtICAgIC8qIDxwcml2YXRlPiAqLwo+ ID4+IC0gICAgT2JqZWN0IFBhcmVudDsKPiA+PiAtfSBBY3BpRGV2aWNlSWY7Cj4gPj4gK3R5cGVk ZWYgc3RydWN0IEFjcGlEZXZpY2VJZiBBY3BpRGV2aWNlSWY7Cj4gPj4gIAo+ID4+ICB2b2lkIGFj cGlfc2VuZF9ldmVudChEZXZpY2VTdGF0ZSAqZGV2LCBBY3BpRXZlbnRTdGF0dXNCaXRzIGV2ZW50 KTsKPiA+PiAgCj4gPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvaHcvYXJtL2xpbnV4LWJvb3QtaWYu aCBiL2luY2x1ZGUvaHcvYXJtL2xpbnV4LWJvb3QtaWYuaAo+ID4+IGluZGV4IGFiYTQ0NzlhMTQu LjdiYmRmZDFjYzYgMTAwNjQ0Cj4gPj4gLS0tIGEvaW5jbHVkZS9ody9hcm0vbGludXgtYm9vdC1p Zi5oCj4gPj4gKysrIGIvaW5jbHVkZS9ody9hcm0vbGludXgtYm9vdC1pZi5oCj4gPj4gQEAgLTE2 LDEwICsxNiw3IEBACj4gPj4gICNkZWZpbmUgQVJNX0xJTlVYX0JPT1RfSUYob2JqKSBcCj4gPj4g ICAgICBJTlRFUkZBQ0VfQ0hFQ0soQVJNTGludXhCb290SWYsIChvYmopLCBUWVBFX0FSTV9MSU5V WF9CT09UX0lGKQo+ID4+ICAKPiA+PiAtdHlwZWRlZiBzdHJ1Y3QgQVJNTGludXhCb290SWYgewo+ ID4+IC0gICAgLyo8IHByaXZhdGUgPiovCj4gPj4gLSAgICBPYmplY3QgcGFyZW50X29iajsKPiA+ PiAtfSBBUk1MaW51eEJvb3RJZjsKPiA+PiArdHlwZWRlZiBzdHJ1Y3QgQVJNTGludXhCb290SWYg QVJNTGludXhCb290SWY7ICAKPiA+IEkgbGlrZSBob3cgaXQgbWFrZXMgaW50ZXJmYWNlIHRydWx5 IG9wYXF1ZSBhbmQgcmVtb3ZlcyB0aGUgbmVlZCBmb3IKPiA+IHN0cnVjdHVyZSBkZWNsYXJhdGlv biBidXQ6Cj4gPiAKPiA+ICAxOiBJJ20gbm90IHN1cmUgaWYgaXQncyBhY2NlcHRhYmxlIHRoaW5n IHRvIGRvIGZyb20gbGFuZ3VhZ2UgcG9pbnQgb2YgdmlldyAgCj4gCj4gWWVhaCwgaXQncyBmaW5l LiBJZiB5b3UgaGF2ZSBqdXN0Cj4gCj4gc3RydWN0IEFSTUxpbnV4Qm9vdElmOwo+IAo+IChhbmQs IG9wdGlvbmFsbHksIGEgdHlwZWRlZiB0byBpdCwpIHRoZW4gdGhpcyB0eXBlIGlzIGNhbGxlZCBh bgo+ICJpbmNvbXBsZXRlIHR5cGUiIChmb3IgdHJhbnNsYXRpb24gdW5pdHMgdGhhdCBkb24ndCBz ZWUgdGhlIGFjdHVhbCB0eXBlCj4gZGVmaW5pdGlvbikuIFlvdSBjYW4ndCBhcHBseSB0aGUgInNp emVvZiIgb3BlcmF0b3IgdG8gaXQsIHlvdSBjYW4ndCBwdXQKPiBpdCBpbiBvdGhlciBzdHJ1Y3Rz IGFuZCBhcnJheXMgZXRjLiBJJ20gdG9vIGxhenkgdG8gbG9vayB1cCB0aGUgZXhhY3QKPiBkZXRh aWxzIGluIHRoZSBDIHN0YW5kYXJkIG5vdy4gOikgQnV0LCBpbXBvcnRhbnRseSwKPiAicG9pbnRl ci10by1BUk1MaW51eEJvb3RJZiIgaXMgYSBjb21wbGV0ZSB0eXBlLCBhbmQgeW91IGNhbiBkbyBh bGwgdGhlCj4gdXN1YWwgdGhpbmdzIHdpdGggdGhhdC4gKERlZmluZSB2YXJpYWJsZXMgb2YgdGhh dCBwb2ludGVyIHR5cGUsIGVtYmVkCj4gdGhlbSBpbiBvdGhlciBzdHJ1Y3R1cmVzLCB1c2UgaXQg YXMgYW4gYXJyYXkgZWxlbWVudCB0eXBlLCBwYXNzIHRoZW0gdG8KPiBmdW5jdGlvbnMsIGFuZCBz byBvbi4pCgpUaGFua3MgTGFzemxvLCB0aGF0J3MgdGhlIGFuc3dlciBJIHdhcyBsb29raW5nIGZv ci4KCj4gVGhhbmtzCj4gTGFzemxvCj4gCj4gPiAgMjogRm9yIGEgcmVhZGVyIG5vdCBhd2FyZSBv ZiBhIHRyaWNrLCBpdCdzIHNvcnQgb2YgY29uZnVzaW5nIHRvIGhhdmUgZm9yd2FyZCBkZWNsYXJh dGlvbiBidXQgd2l0aG91dCBzdHJ1Y3R1cmUgaXRzZWxmLiBTbyBpZiAjMSBpcyBhY2NlcHRhYmxl IHdlIHByb2JhYmx5IHNob3VsZCBkb2N1bWVudCBpbnRlcmZhY2UgdHJpY2sgaW4gb2JqZWN0LmgK PiA+IAo+ID4gWy4uLl0KPiA+ICAgCj4gCj4gCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlz dHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFuL2xp c3RpbmZvL3hlbi1kZXZlbA== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34102) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gPOWn-0003SG-KE for qemu-devel@nongnu.org; Wed, 21 Nov 2018 04:10:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gPOWl-0007Iq-KB for qemu-devel@nongnu.org; Wed, 21 Nov 2018 04:10:33 -0500 Date: Wed, 21 Nov 2018 10:10:04 +0100 From: Igor Mammedov Message-ID: <20181121101004.6405408a@redhat.com> In-Reply-To: References: <20181107123652.23417-1-marcandre.lureau@redhat.com> <20181107123652.23417-3-marcandre.lureau@redhat.com> <20181120173324.64a36d8e@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 02/14] qom: make interface types abstract List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Laszlo Ersek Cc: =?UTF-8?B?TWFyYy1BbmRyw6k=?= Lureau , Peter Maydell , Stefano Stabellini , Eduardo Habkost , Corey Minyard , Amit Shah , qemu-ppc@nongnu.org, "Michael S. Tsirkin" , Mark Cave-Ayland , qemu-devel@nongnu.org, dgilbert@redhat.com, qemu-arm@nongnu.org, =?UTF-8?B?SGVydsOp?= Poussineau , Paolo Bonzini , Anthony Perard , xen-devel@lists.xenproject.org, Richard Henderson , Andreas =?UTF-8?B?RsOkcmJlcg==?= , Artyom Tarasenko , Stefan Berger On Tue, 20 Nov 2018 19:54:23 +0100 Laszlo Ersek wrote: > On 11/20/18 17:33, Igor Mammedov wrote: > > On Wed, 7 Nov 2018 16:36:40 +0400 > > Marc-Andr=C3=A9 Lureau wrote: > > =20 > >> Interfaces don't have instance, let's make the interface type really > >> abstract to avoid confusion. > >> > >> Signed-off-by: Marc-Andr=C3=A9 Lureau > >> --- > >> include/hw/acpi/acpi_dev_interface.h | 6 +----- > >> include/hw/arm/linux-boot-if.h | 5 +---- > >> include/hw/fw-path-provider.h | 4 +--- > >> include/hw/hotplug.h | 6 +----- > >> include/hw/intc/intc.h | 4 +--- > >> include/hw/ipmi/ipmi.h | 4 +--- > >> include/hw/isa/isa.h | 4 ---- > >> include/hw/mem/memory-device.h | 4 +--- > >> include/hw/nmi.h | 4 +--- > >> include/hw/stream.h | 4 +--- > >> include/hw/timer/m48t59.h | 4 +--- > >> include/qom/object_interfaces.h | 6 +----- > >> include/sysemu/tpm.h | 4 +--- > >> target/arm/idau.h | 4 +--- > >> tests/check-qom-interface.c | 4 +--- > >> 15 files changed, 14 insertions(+), 53 deletions(-) > >> > >> diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/ac= pi_dev_interface.h > >> index dabf4c4fc9..43ff119179 100644 > >> --- a/include/hw/acpi/acpi_dev_interface.h > >> +++ b/include/hw/acpi/acpi_dev_interface.h > >> @@ -25,11 +25,7 @@ typedef enum { > >> INTERFACE_CHECK(AcpiDeviceIf, (obj), \ > >> TYPE_ACPI_DEVICE_IF) > >> =20 > >> - > >> -typedef struct AcpiDeviceIf { > >> - /* */ > >> - Object Parent; > >> -} AcpiDeviceIf; > >> +typedef struct AcpiDeviceIf AcpiDeviceIf; > >> =20 > >> void acpi_send_event(DeviceState *dev, AcpiEventStatusBits event); > >> =20 > >> diff --git a/include/hw/arm/linux-boot-if.h b/include/hw/arm/linux-boo= t-if.h > >> index aba4479a14..7bbdfd1cc6 100644 > >> --- a/include/hw/arm/linux-boot-if.h > >> +++ b/include/hw/arm/linux-boot-if.h > >> @@ -16,10 +16,7 @@ > >> #define ARM_LINUX_BOOT_IF(obj) \ > >> INTERFACE_CHECK(ARMLinuxBootIf, (obj), TYPE_ARM_LINUX_BOOT_IF) > >> =20 > >> -typedef struct ARMLinuxBootIf { > >> - /*< private >*/ > >> - Object parent_obj; > >> -} ARMLinuxBootIf; > >> +typedef struct ARMLinuxBootIf ARMLinuxBootIf; =20 > > I like how it makes interface truly opaque and removes the need for > > structure declaration but: > >=20 > > 1: I'm not sure if it's acceptable thing to do from language point of = view =20 >=20 > Yeah, it's fine. If you have just >=20 > struct ARMLinuxBootIf; >=20 > (and, optionally, a typedef to it,) then this type is called an > "incomplete type" (for translation units that don't see the actual type > definition). You can't apply the "sizeof" operator to it, you can't put > it in other structs and arrays etc. I'm too lazy to look up the exact > details in the C standard now. :) But, importantly, > "pointer-to-ARMLinuxBootIf" is a complete type, and you can do all the > usual things with that. (Define variables of that pointer type, embed > them in other structures, use it as an array element type, pass them to > functions, and so on.) Thanks Laszlo, that's the answer I was looking for. > Thanks > Laszlo >=20 > > 2: For a reader not aware of a trick, it's sort of confusing to have f= orward declaration but without structure itself. So if #1 is acceptable we = probably should document interface trick in object.h > >=20 > > [...] > > =20 >=20 >=20