[PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK

Eduardo Habkost posted 3 patches 3 years, 7 months ago
Test docker-quick@centos7 failed
Test docker-mingw@fedora failed
Test checkpatch failed
Test FreeBSD failed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20200916193101.511600-1-ehabkost@redhat.com
include/hw/acpi/acpi_dev_interface.h |  7 +++----
include/hw/arm/linux-boot-if.h       |  6 +++---
include/hw/fw-path-provider.h        |  6 +++---
include/hw/hotplug.h                 |  6 +++---
include/hw/intc/intc.h               |  7 +++----
include/hw/ipmi/ipmi.h               |  6 +++---
include/hw/isa/isa.h                 |  2 +-
include/hw/mem/memory-device.h       |  6 +++---
include/hw/nmi.h                     |  6 +++---
include/hw/ppc/pnv_xscom.h           |  4 ++--
include/hw/ppc/spapr_irq.h           |  4 ++--
include/hw/ppc/xics.h                |  4 ++--
include/hw/ppc/xive.h                | 12 ++++++------
include/hw/rdma/rdma.h               |  7 +++----
include/hw/rtc/m48t59.h              |  6 +++---
include/hw/stream.h                  |  6 +++---
include/hw/vmstate-if.h              |  6 +++---
include/qom/object.h                 | 14 +-------------
include/qom/object_interfaces.h      |  7 +++----
include/sysemu/tpm.h                 |  6 +++---
target/arm/idau.h                    |  6 +++---
tests/check-qom-interface.c          |  6 +++---
22 files changed, 62 insertions(+), 78 deletions(-)
[PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
Posted by Eduardo Habkost 3 years, 7 months ago
This series replaces INTERFACE_CHECK with OBJECT_CHECK because
both macros are exactly the same.

The last patch is a new run of the OBJECT_CHECK ->
DECLARE*_CHECKER* converter script that will convert the former
INTERFACE_CHECK-based macros.

Eduardo Habkost (3):
  qom: Correct object_class_dynamic_cast_assert() documentation
  qom: Replace INTERFACE_CHECK with OBJECT_CHECK
  [automated] Use DECLARE_*CHECKER* macros

 include/hw/acpi/acpi_dev_interface.h |  7 +++----
 include/hw/arm/linux-boot-if.h       |  6 +++---
 include/hw/fw-path-provider.h        |  6 +++---
 include/hw/hotplug.h                 |  6 +++---
 include/hw/intc/intc.h               |  7 +++----
 include/hw/ipmi/ipmi.h               |  6 +++---
 include/hw/isa/isa.h                 |  2 +-
 include/hw/mem/memory-device.h       |  6 +++---
 include/hw/nmi.h                     |  6 +++---
 include/hw/ppc/pnv_xscom.h           |  4 ++--
 include/hw/ppc/spapr_irq.h           |  4 ++--
 include/hw/ppc/xics.h                |  4 ++--
 include/hw/ppc/xive.h                | 12 ++++++------
 include/hw/rdma/rdma.h               |  7 +++----
 include/hw/rtc/m48t59.h              |  6 +++---
 include/hw/stream.h                  |  6 +++---
 include/hw/vmstate-if.h              |  6 +++---
 include/qom/object.h                 | 14 +-------------
 include/qom/object_interfaces.h      |  7 +++----
 include/sysemu/tpm.h                 |  6 +++---
 target/arm/idau.h                    |  6 +++---
 tests/check-qom-interface.c          |  6 +++---
 22 files changed, 62 insertions(+), 78 deletions(-)

-- 
2.26.2



Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
Posted by Marc-André Lureau 3 years, 7 months ago
Hi

On Wed, Sep 16, 2020 at 11:35 PM Eduardo Habkost <ehabkost@redhat.com>
wrote:

> This series replaces INTERFACE_CHECK with OBJECT_CHECK because
> both macros are exactly the same.
>
> The last patch is a new run of the OBJECT_CHECK ->
> DECLARE*_CHECKER* converter script that will convert the former
> INTERFACE_CHECK-based macros.
>
>
Well, at least having a different macro allows to tweak qom implementation
or replace it with something different more easily.

I have some wip branch somewhere where I actually made Interface a
different beast than Object (it was saving some fields, and avoiding some
potentially wrong casts iirc - I didn't bother to upstream that yet). Also
I have a different branch where I played with GObject to replace qom. In
both cases, your proposal would have, or would make, the work more
complicated.


Eduardo Habkost (3):
>   qom: Correct object_class_dynamic_cast_assert() documentation
>   qom: Replace INTERFACE_CHECK with OBJECT_CHECK
>   [automated] Use DECLARE_*CHECKER* macros
>
>  include/hw/acpi/acpi_dev_interface.h |  7 +++----
>  include/hw/arm/linux-boot-if.h       |  6 +++---
>  include/hw/fw-path-provider.h        |  6 +++---
>  include/hw/hotplug.h                 |  6 +++---
>  include/hw/intc/intc.h               |  7 +++----
>  include/hw/ipmi/ipmi.h               |  6 +++---
>  include/hw/isa/isa.h                 |  2 +-
>  include/hw/mem/memory-device.h       |  6 +++---
>  include/hw/nmi.h                     |  6 +++---
>  include/hw/ppc/pnv_xscom.h           |  4 ++--
>  include/hw/ppc/spapr_irq.h           |  4 ++--
>  include/hw/ppc/xics.h                |  4 ++--
>  include/hw/ppc/xive.h                | 12 ++++++------
>  include/hw/rdma/rdma.h               |  7 +++----
>  include/hw/rtc/m48t59.h              |  6 +++---
>  include/hw/stream.h                  |  6 +++---
>  include/hw/vmstate-if.h              |  6 +++---
>  include/qom/object.h                 | 14 +-------------
>  include/qom/object_interfaces.h      |  7 +++----
>  include/sysemu/tpm.h                 |  6 +++---
>  target/arm/idau.h                    |  6 +++---
>  tests/check-qom-interface.c          |  6 +++---
>  22 files changed, 62 insertions(+), 78 deletions(-)
>
> --
> 2.26.2
>
>
>
>

-- 
Marc-André Lureau
Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
Posted by Eduardo Habkost 3 years, 7 months ago
On Thu, Sep 17, 2020 at 01:31:50AM +0400, Marc-André Lureau wrote:
> Hi
> 
> On Wed, Sep 16, 2020 at 11:35 PM Eduardo Habkost <ehabkost@redhat.com>
> wrote:
> 
> > This series replaces INTERFACE_CHECK with OBJECT_CHECK because
> > both macros are exactly the same.
> >
> > The last patch is a new run of the OBJECT_CHECK ->
> > DECLARE*_CHECKER* converter script that will convert the former
> > INTERFACE_CHECK-based macros.
> >
> >
> Well, at least having a different macro allows to tweak qom implementation
> or replace it with something different more easily.
> 
> I have some wip branch somewhere where I actually made Interface a
> different beast than Object (it was saving some fields, and avoiding some
> potentially wrong casts iirc - I didn't bother to upstream that yet). Also
> I have a different branch where I played with GObject to replace qom. In
> both cases, your proposal would have, or would make, the work more
> complicated.

If there are expectations that the distinction will become
useful, we can keep it by now.

I will submit a different proposal to have a
DECLARE_INTERFACE_CHECKER macro similar to
DECLARE_INSTANCE_CHECKER, followed by a
OBJECT_DECLARE_INTERFACE_TYPE macro similar to
OBJECT_DECLARE_TYPE.

-- 
Eduardo


Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
Posted by Philippe Mathieu-Daudé 3 years, 7 months ago
On 9/16/20 11:31 PM, Marc-André Lureau wrote:
> Hi
> 
> On Wed, Sep 16, 2020 at 11:35 PM Eduardo Habkost <ehabkost@redhat.com
> <mailto:ehabkost@redhat.com>> wrote:
> 
>     This series replaces INTERFACE_CHECK with OBJECT_CHECK because
>     both macros are exactly the same.
> 
>     The last patch is a new run of the OBJECT_CHECK ->
>     DECLARE*_CHECKER* converter script that will convert the former
>     INTERFACE_CHECK-based macros.
> 
> 
> Well, at least having a different macro allows to tweak qom
> implementation or replace it with something different more easily.
> 
> I have some wip branch somewhere where I actually made Interface a
> different beast than Object (it was saving some fields, and avoiding
> some potentially wrong casts iirc - I didn't bother to upstream that
> yet). Also I have a different branch where I played with GObject to
> replace qom. In both cases, your proposal would have, or would make, the
> work more complicated.

Considering "wip branch not bothered to upstream" as "fork",
your comment from [*] applies here...

  You can't blame upstream from doing cleanups and modernization, or
  stagnating. Forks are forks, with all the pain they carry. If they
  want to avoid the maintenance cost, they have to do the extra effort
  to get it upstream. This is also a "sneaky way" to remind them that
  effort is better spent in this direction.

[*] https://www.mail-archive.com/qemu-devel@nongnu.org/msg720284.html


Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
Posted by Marc-André Lureau 3 years, 7 months ago
Hi

On Thu, Sep 17, 2020 at 11:19 AM Philippe Mathieu-Daudé <philmd@redhat.com>
wrote:

> On 9/16/20 11:31 PM, Marc-André Lureau wrote:
> > Hi
> >
> > On Wed, Sep 16, 2020 at 11:35 PM Eduardo Habkost <ehabkost@redhat.com
> > <mailto:ehabkost@redhat.com>> wrote:
> >
> >     This series replaces INTERFACE_CHECK with OBJECT_CHECK because
> >     both macros are exactly the same.
> >
> >     The last patch is a new run of the OBJECT_CHECK ->
> >     DECLARE*_CHECKER* converter script that will convert the former
> >     INTERFACE_CHECK-based macros.
> >
> >
> > Well, at least having a different macro allows to tweak qom
> > implementation or replace it with something different more easily.
> >
> > I have some wip branch somewhere where I actually made Interface a
> > different beast than Object (it was saving some fields, and avoiding
> > some potentially wrong casts iirc - I didn't bother to upstream that
> > yet). Also I have a different branch where I played with GObject to
> > replace qom. In both cases, your proposal would have, or would make, the
> > work more complicated.
>
> Considering "wip branch not bothered to upstream" as "fork",
> your comment from [*] applies here...
>
>   You can't blame upstream from doing cleanups and modernization, or
>   stagnating. Forks are forks, with all the pain they carry. If they
>   want to avoid the maintenance cost, they have to do the extra effort
>   to get it upstream. This is also a "sneaky way" to remind them that
>   effort is better spent in this direction.
>
> [*] https://www.mail-archive.com/qemu-devel@nongnu.org/msg720284.html
>
>
Fair enough. Note I didn't nack it, but in general the proposal seems to
blurry some worthy semantic difference between object & interface. Maybe
#define alias INTERFACE_CHECK with OBJECT_CHECK instead ?

-- 
Marc-André Lureau
Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
Posted by Eduardo Habkost 3 years, 7 months ago
On Thu, Sep 17, 2020 at 11:25:30AM +0400, Marc-André Lureau wrote:
> Hi
> 
> On Thu, Sep 17, 2020 at 11:19 AM Philippe Mathieu-Daudé <philmd@redhat.com>
> wrote:
> 
> > On 9/16/20 11:31 PM, Marc-André Lureau wrote:
> > > Hi
> > >
> > > On Wed, Sep 16, 2020 at 11:35 PM Eduardo Habkost <ehabkost@redhat.com
> > > <mailto:ehabkost@redhat.com>> wrote:
> > >
> > >     This series replaces INTERFACE_CHECK with OBJECT_CHECK because
> > >     both macros are exactly the same.
> > >
> > >     The last patch is a new run of the OBJECT_CHECK ->
> > >     DECLARE*_CHECKER* converter script that will convert the former
> > >     INTERFACE_CHECK-based macros.
> > >
> > >
> > > Well, at least having a different macro allows to tweak qom
> > > implementation or replace it with something different more easily.
> > >
> > > I have some wip branch somewhere where I actually made Interface a
> > > different beast than Object (it was saving some fields, and avoiding
> > > some potentially wrong casts iirc - I didn't bother to upstream that
> > > yet). Also I have a different branch where I played with GObject to
> > > replace qom. In both cases, your proposal would have, or would make, the
> > > work more complicated.
> >
> > Considering "wip branch not bothered to upstream" as "fork",
> > your comment from [*] applies here...
> >
> >   You can't blame upstream from doing cleanups and modernization, or
> >   stagnating. Forks are forks, with all the pain they carry. If they
> >   want to avoid the maintenance cost, they have to do the extra effort
> >   to get it upstream. This is also a "sneaky way" to remind them that
> >   effort is better spent in this direction.
> >
> > [*] https://www.mail-archive.com/qemu-devel@nongnu.org/msg720284.html
> >
> >
> Fair enough. Note I didn't nack it, but in general the proposal seems to
> blurry some worthy semantic difference between object & interface. Maybe
> #define alias INTERFACE_CHECK with OBJECT_CHECK instead ?

I'm actually considering deleting INTERFACE_CHECK and
OBJECT_CHECK completely after we finish the boilerplate
conversion, and tell everybody to use
OBJECT_DECLARE_INTERFACE/OBJECT_DECLARE_TYPE instead.

-- 
Eduardo


Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
Posted by Markus Armbruster 3 years, 7 months ago
Eduardo Habkost <ehabkost@redhat.com> writes:

> This series replaces INTERFACE_CHECK with OBJECT_CHECK because
> both macros are exactly the same.

See also issue#2 in

    Subject: Issues around TYPE_INTERFACE
    Date: Tue, 12 Mar 2019 11:50:54 +0100
    Message-ID: <87h8c82woh.fsf@dusky.pond.sub.org>
    https://lists.nongnu.org/archive/html/qemu-devel/2019-03/msg03840.html

> The last patch is a new run of the OBJECT_CHECK ->
> DECLARE*_CHECKER* converter script that will convert the former
> INTERFACE_CHECK-based macros.