All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
@ 2020-09-16 19:30 Eduardo Habkost
  2020-09-16 19:30 ` [PATCH 1/3] qom: Correct object_class_dynamic_cast_assert() documentation Eduardo Habkost
                   ` (4 more replies)
  0 siblings, 5 replies; 10+ messages in thread
From: Eduardo Habkost @ 2020-09-16 19:30 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Daniel P. Berrange

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




^ permalink raw reply	[flat|nested] 10+ messages in thread

* [PATCH 1/3] qom: Correct object_class_dynamic_cast_assert() documentation
  2020-09-16 19:30 [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Eduardo Habkost
@ 2020-09-16 19:30 ` Eduardo Habkost
  2020-09-16 19:31 ` [PATCH 2/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Eduardo Habkost
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Eduardo Habkost @ 2020-09-16 19:30 UTC (permalink / raw)
  To: qemu-devel; +Cc: Paolo Bonzini, Daniel P. Berrange

object_class_dynamic_cast_assert() is not used by
INTERFACE_CHECK, remove misleading mention of that function in
the documentation.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: qemu-devel@nongnu.org
---
 include/qom/object.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/include/qom/object.h b/include/qom/object.h
index 056f67ab3b..6c0d424b51 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -1257,7 +1257,7 @@ type_init(do_qemu_init_ ## type_array)
  * of this function.  The only difference in behavior is that this function
  * asserts instead of returning #NULL on failure if QOM cast debugging is
  * enabled.  This function is not meant to be called directly, but only through
- * the wrapper macros OBJECT_CLASS_CHECK and INTERFACE_CHECK.
+ * the wrapper macro OBJECT_CLASS_CHECK.
  */
 ObjectClass *object_class_dynamic_cast_assert(ObjectClass *klass,
                                               const char *typename,
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 2/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
  2020-09-16 19:30 [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Eduardo Habkost
  2020-09-16 19:30 ` [PATCH 1/3] qom: Correct object_class_dynamic_cast_assert() documentation Eduardo Habkost
@ 2020-09-16 19:31 ` Eduardo Habkost
  2020-09-16 19:31 ` [PATCH 3/3] [automated] Use DECLARE_*CHECKER* macros Eduardo Habkost
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 10+ messages in thread
From: Eduardo Habkost @ 2020-09-16 19:31 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Daniel P. Berrange, Corey Minyard,
	Michael S. Tsirkin, qemu-ppc, Juan Quintela, Edgar E. Iglesias,
	Dr. David Alan Gilbert, qemu-arm, Hervé Poussineau,
	Cédric Le Goater, Igor Mammedov, Paolo Bonzini,
	Stefan Berger, David Gibson

INTERFACE_CHECK and OBJECT_CHECK do exactly the same.  There's no
need to have two different methods for declaring the type checker
macro for interface types.

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Corey Minyard <minyard@acm.org>
Cc: "Cédric Le Goater" <clg@kaod.org>
Cc: David Gibson <david@gibson.dropbear.id.au>
Cc: "Hervé Poussineau" <hpoussin@reactos.org>
Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: Juan Quintela <quintela@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Stefan Berger <stefanb@linux.ibm.com>
Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org
Cc: qemu-arm@nongnu.org
---
 include/hw/acpi/acpi_dev_interface.h |  2 +-
 include/hw/arm/linux-boot-if.h       |  2 +-
 include/hw/fw-path-provider.h        |  2 +-
 include/hw/hotplug.h                 |  2 +-
 include/hw/intc/intc.h               |  2 +-
 include/hw/ipmi/ipmi.h               |  2 +-
 include/hw/isa/isa.h                 |  2 +-
 include/hw/mem/memory-device.h       |  2 +-
 include/hw/nmi.h                     |  2 +-
 include/hw/ppc/pnv_xscom.h           |  2 +-
 include/hw/ppc/spapr_irq.h           |  2 +-
 include/hw/ppc/xics.h                |  2 +-
 include/hw/ppc/xive.h                |  6 +++---
 include/hw/rdma/rdma.h               |  2 +-
 include/hw/rtc/m48t59.h              |  2 +-
 include/hw/stream.h                  |  2 +-
 include/hw/vmstate-if.h              |  2 +-
 include/qom/object.h                 | 12 ------------
 include/qom/object_interfaces.h      |  2 +-
 include/sysemu/tpm.h                 |  2 +-
 target/arm/idau.h                    |  2 +-
 tests/check-qom-interface.c          |  2 +-
 22 files changed, 23 insertions(+), 35 deletions(-)

diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/acpi_dev_interface.h
index 9adf1e4706..5637a41936 100644
--- a/include/hw/acpi/acpi_dev_interface.h
+++ b/include/hw/acpi/acpi_dev_interface.h
@@ -22,7 +22,7 @@ typedef struct AcpiDeviceIfClass AcpiDeviceIfClass;
 DECLARE_CLASS_CHECKERS(AcpiDeviceIfClass, ACPI_DEVICE_IF,
                        TYPE_ACPI_DEVICE_IF)
 #define ACPI_DEVICE_IF(obj) \
-     INTERFACE_CHECK(AcpiDeviceIf, (obj), \
+     OBJECT_CHECK(AcpiDeviceIf, (obj), \
                      TYPE_ACPI_DEVICE_IF)
 
 typedef struct AcpiDeviceIf AcpiDeviceIf;
diff --git a/include/hw/arm/linux-boot-if.h b/include/hw/arm/linux-boot-if.h
index c85f33b2c5..4b86bb1067 100644
--- a/include/hw/arm/linux-boot-if.h
+++ b/include/hw/arm/linux-boot-if.h
@@ -13,7 +13,7 @@ typedef struct ARMLinuxBootIfClass ARMLinuxBootIfClass;
 DECLARE_CLASS_CHECKERS(ARMLinuxBootIfClass, ARM_LINUX_BOOT_IF,
                        TYPE_ARM_LINUX_BOOT_IF)
 #define ARM_LINUX_BOOT_IF(obj) \
-    INTERFACE_CHECK(ARMLinuxBootIf, (obj), TYPE_ARM_LINUX_BOOT_IF)
+    OBJECT_CHECK(ARMLinuxBootIf, (obj), TYPE_ARM_LINUX_BOOT_IF)
 
 typedef struct ARMLinuxBootIf ARMLinuxBootIf;
 
diff --git a/include/hw/fw-path-provider.h b/include/hw/fw-path-provider.h
index 8e1d45651c..9b00b2eb37 100644
--- a/include/hw/fw-path-provider.h
+++ b/include/hw/fw-path-provider.h
@@ -26,7 +26,7 @@ typedef struct FWPathProviderClass FWPathProviderClass;
 DECLARE_CLASS_CHECKERS(FWPathProviderClass, FW_PATH_PROVIDER,
                        TYPE_FW_PATH_PROVIDER)
 #define FW_PATH_PROVIDER(obj) \
-     INTERFACE_CHECK(FWPathProvider, (obj), TYPE_FW_PATH_PROVIDER)
+     OBJECT_CHECK(FWPathProvider, (obj), TYPE_FW_PATH_PROVIDER)
 
 typedef struct FWPathProvider FWPathProvider;
 
diff --git a/include/hw/hotplug.h b/include/hw/hotplug.h
index e15f59c8b3..c87dfba941 100644
--- a/include/hw/hotplug.h
+++ b/include/hw/hotplug.h
@@ -20,7 +20,7 @@ typedef struct HotplugHandlerClass HotplugHandlerClass;
 DECLARE_CLASS_CHECKERS(HotplugHandlerClass, HOTPLUG_HANDLER,
                        TYPE_HOTPLUG_HANDLER)
 #define HOTPLUG_HANDLER(obj) \
-     INTERFACE_CHECK(HotplugHandler, (obj), TYPE_HOTPLUG_HANDLER)
+     OBJECT_CHECK(HotplugHandler, (obj), TYPE_HOTPLUG_HANDLER)
 
 typedef struct HotplugHandler HotplugHandler;
 
diff --git a/include/hw/intc/intc.h b/include/hw/intc/intc.h
index 7018f608ca..c01d696937 100644
--- a/include/hw/intc/intc.h
+++ b/include/hw/intc/intc.h
@@ -9,7 +9,7 @@ typedef struct InterruptStatsProviderClass InterruptStatsProviderClass;
 DECLARE_CLASS_CHECKERS(InterruptStatsProviderClass, INTERRUPT_STATS_PROVIDER,
                        TYPE_INTERRUPT_STATS_PROVIDER)
 #define INTERRUPT_STATS_PROVIDER(obj) \
-    INTERFACE_CHECK(InterruptStatsProvider, (obj), \
+    OBJECT_CHECK(InterruptStatsProvider, (obj), \
                     TYPE_INTERRUPT_STATS_PROVIDER)
 
 typedef struct InterruptStatsProvider InterruptStatsProvider;
diff --git a/include/hw/ipmi/ipmi.h b/include/hw/ipmi/ipmi.h
index 3fa5a4abd0..7073472ff8 100644
--- a/include/hw/ipmi/ipmi.h
+++ b/include/hw/ipmi/ipmi.h
@@ -110,7 +110,7 @@ uint32_t ipmi_next_uuid(void);
  */
 #define TYPE_IPMI_INTERFACE "ipmi-interface"
 #define IPMI_INTERFACE(obj) \
-     INTERFACE_CHECK(IPMIInterface, (obj), TYPE_IPMI_INTERFACE)
+     OBJECT_CHECK(IPMIInterface, (obj), TYPE_IPMI_INTERFACE)
 typedef struct IPMIInterfaceClass IPMIInterfaceClass;
 DECLARE_CLASS_CHECKERS(IPMIInterfaceClass, IPMI_INTERFACE,
                        TYPE_IPMI_INTERFACE)
diff --git a/include/hw/isa/isa.h b/include/hw/isa/isa.h
index ddb6a2d168..492e0f073f 100644
--- a/include/hw/isa/isa.h
+++ b/include/hw/isa/isa.h
@@ -39,7 +39,7 @@ typedef struct IsaDmaClass IsaDmaClass;
 DECLARE_CLASS_CHECKERS(IsaDmaClass, ISADMA,
                        TYPE_ISADMA)
 #define ISADMA(obj) \
-    INTERFACE_CHECK(IsaDma, (obj), TYPE_ISADMA)
+    OBJECT_CHECK(IsaDma, (obj), TYPE_ISADMA)
 
 typedef enum {
     ISADMA_TRANSFER_VERIFY,
diff --git a/include/hw/mem/memory-device.h b/include/hw/mem/memory-device.h
index cde52e83c9..5eaa106dc3 100644
--- a/include/hw/mem/memory-device.h
+++ b/include/hw/mem/memory-device.h
@@ -23,7 +23,7 @@ typedef struct MemoryDeviceClass MemoryDeviceClass;
 DECLARE_CLASS_CHECKERS(MemoryDeviceClass, MEMORY_DEVICE,
                        TYPE_MEMORY_DEVICE)
 #define MEMORY_DEVICE(obj) \
-     INTERFACE_CHECK(MemoryDeviceState, (obj), TYPE_MEMORY_DEVICE)
+     OBJECT_CHECK(MemoryDeviceState, (obj), TYPE_MEMORY_DEVICE)
 
 typedef struct MemoryDeviceState MemoryDeviceState;
 
diff --git a/include/hw/nmi.h b/include/hw/nmi.h
index fff41bebc6..faa1c62aaa 100644
--- a/include/hw/nmi.h
+++ b/include/hw/nmi.h
@@ -30,7 +30,7 @@ typedef struct NMIClass NMIClass;
 DECLARE_CLASS_CHECKERS(NMIClass, NMI,
                        TYPE_NMI)
 #define NMI(obj) \
-     INTERFACE_CHECK(NMIState, (obj), TYPE_NMI)
+     OBJECT_CHECK(NMIState, (obj), TYPE_NMI)
 
 typedef struct NMIState NMIState;
 
diff --git a/include/hw/ppc/pnv_xscom.h b/include/hw/ppc/pnv_xscom.h
index 7e3b189c07..597784393f 100644
--- a/include/hw/ppc/pnv_xscom.h
+++ b/include/hw/ppc/pnv_xscom.h
@@ -26,7 +26,7 @@ typedef struct PnvXScomInterface PnvXScomInterface;
 
 #define TYPE_PNV_XSCOM_INTERFACE "pnv-xscom-interface"
 #define PNV_XSCOM_INTERFACE(obj) \
-    INTERFACE_CHECK(PnvXScomInterface, (obj), TYPE_PNV_XSCOM_INTERFACE)
+    OBJECT_CHECK(PnvXScomInterface, (obj), TYPE_PNV_XSCOM_INTERFACE)
 typedef struct PnvXScomInterfaceClass PnvXScomInterfaceClass;
 DECLARE_CLASS_CHECKERS(PnvXScomInterfaceClass, PNV_XSCOM_INTERFACE,
                        TYPE_PNV_XSCOM_INTERFACE)
diff --git a/include/hw/ppc/spapr_irq.h b/include/hw/ppc/spapr_irq.h
index c22a72c9e2..c2f8665a51 100644
--- a/include/hw/ppc/spapr_irq.h
+++ b/include/hw/ppc/spapr_irq.h
@@ -35,7 +35,7 @@ typedef struct SpaprInterruptController SpaprInterruptController;
 
 #define TYPE_SPAPR_INTC "spapr-interrupt-controller"
 #define SPAPR_INTC(obj)                                     \
-    INTERFACE_CHECK(SpaprInterruptController, (obj), TYPE_SPAPR_INTC)
+    OBJECT_CHECK(SpaprInterruptController, (obj), TYPE_SPAPR_INTC)
 typedef struct SpaprInterruptControllerClass SpaprInterruptControllerClass;
 DECLARE_CLASS_CHECKERS(SpaprInterruptControllerClass, SPAPR_INTC,
                        TYPE_SPAPR_INTC)
diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
index c5a3cdcadc..884dc5ae28 100644
--- a/include/hw/ppc/xics.h
+++ b/include/hw/ppc/xics.h
@@ -138,7 +138,7 @@ struct ICSIRQState {
 
 #define TYPE_XICS_FABRIC "xics-fabric"
 #define XICS_FABRIC(obj)                                     \
-    INTERFACE_CHECK(XICSFabric, (obj), TYPE_XICS_FABRIC)
+    OBJECT_CHECK(XICSFabric, (obj), TYPE_XICS_FABRIC)
 typedef struct XICSFabricClass XICSFabricClass;
 DECLARE_CLASS_CHECKERS(XICSFabricClass, XICS_FABRIC,
                        TYPE_XICS_FABRIC)
diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h
index 482fafccfd..fba72e0304 100644
--- a/include/hw/ppc/xive.h
+++ b/include/hw/ppc/xive.h
@@ -153,7 +153,7 @@ typedef struct XiveNotifier XiveNotifier;
 
 #define TYPE_XIVE_NOTIFIER "xive-notifier"
 #define XIVE_NOTIFIER(obj)                                     \
-    INTERFACE_CHECK(XiveNotifier, (obj), TYPE_XIVE_NOTIFIER)
+    OBJECT_CHECK(XiveNotifier, (obj), TYPE_XIVE_NOTIFIER)
 typedef struct XiveNotifierClass XiveNotifierClass;
 DECLARE_CLASS_CHECKERS(XiveNotifierClass, XIVE_NOTIFIER,
                        TYPE_XIVE_NOTIFIER)
@@ -390,7 +390,7 @@ typedef struct XiveTCTXMatch {
 
 #define TYPE_XIVE_PRESENTER "xive-presenter"
 #define XIVE_PRESENTER(obj)                                     \
-    INTERFACE_CHECK(XivePresenter, (obj), TYPE_XIVE_PRESENTER)
+    OBJECT_CHECK(XivePresenter, (obj), TYPE_XIVE_PRESENTER)
 typedef struct XivePresenterClass XivePresenterClass;
 DECLARE_CLASS_CHECKERS(XivePresenterClass, XIVE_PRESENTER,
                        TYPE_XIVE_PRESENTER)
@@ -415,7 +415,7 @@ int xive_presenter_tctx_match(XivePresenter *xptr, XiveTCTX *tctx,
 
 #define TYPE_XIVE_FABRIC "xive-fabric"
 #define XIVE_FABRIC(obj)                                     \
-    INTERFACE_CHECK(XiveFabric, (obj), TYPE_XIVE_FABRIC)
+    OBJECT_CHECK(XiveFabric, (obj), TYPE_XIVE_FABRIC)
 typedef struct XiveFabricClass XiveFabricClass;
 DECLARE_CLASS_CHECKERS(XiveFabricClass, XIVE_FABRIC,
                        TYPE_XIVE_FABRIC)
diff --git a/include/hw/rdma/rdma.h b/include/hw/rdma/rdma.h
index e77e43a170..3f46986550 100644
--- a/include/hw/rdma/rdma.h
+++ b/include/hw/rdma/rdma.h
@@ -23,7 +23,7 @@ typedef struct RdmaProviderClass RdmaProviderClass;
 DECLARE_CLASS_CHECKERS(RdmaProviderClass, RDMA_PROVIDER,
                        INTERFACE_RDMA_PROVIDER)
 #define RDMA_PROVIDER(obj) \
-    INTERFACE_CHECK(RdmaProvider, (obj), \
+    OBJECT_CHECK(RdmaProvider, (obj), \
                     INTERFACE_RDMA_PROVIDER)
 
 typedef struct RdmaProvider RdmaProvider;
diff --git a/include/hw/rtc/m48t59.h b/include/hw/rtc/m48t59.h
index 04abedf3b2..7e3b077741 100644
--- a/include/hw/rtc/m48t59.h
+++ b/include/hw/rtc/m48t59.h
@@ -35,7 +35,7 @@ typedef struct NvramClass NvramClass;
 DECLARE_CLASS_CHECKERS(NvramClass, NVRAM,
                        TYPE_NVRAM)
 #define NVRAM(obj) \
-    INTERFACE_CHECK(Nvram, (obj), TYPE_NVRAM)
+    OBJECT_CHECK(Nvram, (obj), TYPE_NVRAM)
 
 typedef struct Nvram Nvram;
 
diff --git a/include/hw/stream.h b/include/hw/stream.h
index e39d5a5b55..afa6679c64 100644
--- a/include/hw/stream.h
+++ b/include/hw/stream.h
@@ -10,7 +10,7 @@ typedef struct StreamSlaveClass StreamSlaveClass;
 DECLARE_CLASS_CHECKERS(StreamSlaveClass, STREAM_SLAVE,
                        TYPE_STREAM_SLAVE)
 #define STREAM_SLAVE(obj) \
-     INTERFACE_CHECK(StreamSlave, (obj), TYPE_STREAM_SLAVE)
+     OBJECT_CHECK(StreamSlave, (obj), TYPE_STREAM_SLAVE)
 
 typedef struct StreamSlave StreamSlave;
 
diff --git a/include/hw/vmstate-if.h b/include/hw/vmstate-if.h
index 52df571d17..99bb1de7c2 100644
--- a/include/hw/vmstate-if.h
+++ b/include/hw/vmstate-if.h
@@ -17,7 +17,7 @@ typedef struct VMStateIfClass VMStateIfClass;
 DECLARE_CLASS_CHECKERS(VMStateIfClass, VMSTATE_IF,
                        TYPE_VMSTATE_IF)
 #define VMSTATE_IF(obj)                             \
-    INTERFACE_CHECK(VMStateIf, (obj), TYPE_VMSTATE_IF)
+    OBJECT_CHECK(VMStateIf, (obj), TYPE_VMSTATE_IF)
 
 typedef struct VMStateIf VMStateIf;
 
diff --git a/include/qom/object.h b/include/qom/object.h
index 6c0d424b51..c0c692f761 100644
--- a/include/qom/object.h
+++ b/include/qom/object.h
@@ -920,18 +920,6 @@ struct InterfaceClass
 #define INTERFACE_CLASS(klass) \
     OBJECT_CLASS_CHECK(InterfaceClass, klass, TYPE_INTERFACE)
 
-/**
- * INTERFACE_CHECK:
- * @interface: the type to return
- * @obj: the object to convert to an interface
- * @name: the interface type name
- *
- * Returns: @obj casted to @interface if cast is valid, otherwise raise error.
- */
-#define INTERFACE_CHECK(interface, obj, name) \
-    ((interface *)object_dynamic_cast_assert(OBJECT((obj)), (name), \
-                                             __FILE__, __LINE__, __func__))
-
 /**
  * object_new_with_class:
  * @klass: The class to instantiate.
diff --git a/include/qom/object_interfaces.h b/include/qom/object_interfaces.h
index f118fb516b..a6626e0ed6 100644
--- a/include/qom/object_interfaces.h
+++ b/include/qom/object_interfaces.h
@@ -10,7 +10,7 @@ typedef struct UserCreatableClass UserCreatableClass;
 DECLARE_CLASS_CHECKERS(UserCreatableClass, USER_CREATABLE,
                        TYPE_USER_CREATABLE)
 #define USER_CREATABLE(obj) \
-     INTERFACE_CHECK(UserCreatable, (obj), \
+     OBJECT_CHECK(UserCreatable, (obj), \
                      TYPE_USER_CREATABLE)
 
 typedef struct UserCreatable UserCreatable;
diff --git a/include/sysemu/tpm.h b/include/sysemu/tpm.h
index 1a85564e47..102217c348 100644
--- a/include/sysemu/tpm.h
+++ b/include/sysemu/tpm.h
@@ -30,7 +30,7 @@ typedef struct TPMIfClass TPMIfClass;
 DECLARE_CLASS_CHECKERS(TPMIfClass, TPM_IF,
                        TYPE_TPM_IF)
 #define TPM_IF(obj)                             \
-    INTERFACE_CHECK(TPMIf, (obj), TYPE_TPM_IF)
+    OBJECT_CHECK(TPMIf, (obj), TYPE_TPM_IF)
 
 typedef struct TPMIf TPMIf;
 
diff --git a/target/arm/idau.h b/target/arm/idau.h
index 0ef5251971..6b28d26da9 100644
--- a/target/arm/idau.h
+++ b/target/arm/idau.h
@@ -32,7 +32,7 @@
 
 #define TYPE_IDAU_INTERFACE "idau-interface"
 #define IDAU_INTERFACE(obj) \
-    INTERFACE_CHECK(IDAUInterface, (obj), TYPE_IDAU_INTERFACE)
+    OBJECT_CHECK(IDAUInterface, (obj), TYPE_IDAU_INTERFACE)
 typedef struct IDAUInterfaceClass IDAUInterfaceClass;
 DECLARE_CLASS_CHECKERS(IDAUInterfaceClass, IDAU_INTERFACE,
                        TYPE_IDAU_INTERFACE)
diff --git a/tests/check-qom-interface.c b/tests/check-qom-interface.c
index c99be97ed8..53bdcb8878 100644
--- a/tests/check-qom-interface.c
+++ b/tests/check-qom-interface.c
@@ -20,7 +20,7 @@ typedef struct TestIfClass TestIfClass;
 DECLARE_CLASS_CHECKERS(TestIfClass, TEST_IF,
                        TYPE_TEST_IF)
 #define TEST_IF(obj) \
-     INTERFACE_CHECK(TestIf, (obj), TYPE_TEST_IF)
+     OBJECT_CHECK(TestIf, (obj), TYPE_TEST_IF)
 
 typedef struct TestIf TestIf;
 
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* [PATCH 3/3] [automated] Use DECLARE_*CHECKER* macros
  2020-09-16 19:30 [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Eduardo Habkost
  2020-09-16 19:30 ` [PATCH 1/3] qom: Correct object_class_dynamic_cast_assert() documentation Eduardo Habkost
  2020-09-16 19:31 ` [PATCH 2/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Eduardo Habkost
@ 2020-09-16 19:31 ` Eduardo Habkost
  2020-09-16 21:31 ` [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Marc-André Lureau
  2020-09-17  7:05 ` Markus Armbruster
  4 siblings, 0 replies; 10+ messages in thread
From: Eduardo Habkost @ 2020-09-16 19:31 UTC (permalink / raw)
  To: qemu-devel
  Cc: Peter Maydell, Daniel P. Berrange, Corey Minyard,
	Michael S. Tsirkin, qemu-ppc, Juan Quintela, Edgar E. Iglesias,
	Dr. David Alan Gilbert, qemu-arm, Hervé Poussineau,
	Cédric Le Goater, Igor Mammedov, Paolo Bonzini,
	Stefan Berger, David Gibson

New round of conversion of type checking macros to
DECLARE_*CHECKER, in the files that were previously using
INTERFACE_CHECK.

Genereated using:

 $ ./scripts/codeconverter/converter.py --passes=3 -i \
   --pattern=QOMStructTypedefSplit,MoveSymbols,TypeCheckMacro \
     include/hw/acpi/acpi_dev_interface.h \
     include/hw/arm/linux-boot-if.h \
     include/hw/fw-path-provider.h \
     include/hw/hotplug.h \
     include/hw/intc/intc.h \
     include/hw/ipmi/ipmi.h \
     include/hw/isa/isa.h \
     include/hw/mem/memory-device.h \
     include/hw/nmi.h \
     include/hw/ppc/pnv_xscom.h \
     include/hw/ppc/spapr_irq.h \
     include/hw/ppc/xics.h \
     include/hw/ppc/xive.h \
     include/hw/rdma/rdma.h \
     include/hw/rtc/m48t59.h \
     include/hw/stream.h \
     include/hw/vmstate-if.h \
     include/qom/object.h \
     include/qom/object_interfaces.h \
     include/sysemu/tpm.h \
     scripts/codeconverter/codeconverter/qom_macros.py \
     target/arm/idau.h \
     tests/check-qom-interface.c

Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
---
Cc: "Michael S. Tsirkin" <mst@redhat.com>
Cc: Igor Mammedov <imammedo@redhat.com>
Cc: Corey Minyard <minyard@acm.org>
Cc: "Cédric Le Goater" <clg@kaod.org>
Cc: David Gibson <david@gibson.dropbear.id.au>
Cc: "Hervé Poussineau" <hpoussin@reactos.org>
Cc: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
Cc: Juan Quintela <quintela@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Daniel P. Berrangé" <berrange@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>
Cc: Stefan Berger <stefanb@linux.ibm.com>
Cc: Peter Maydell <peter.maydell@linaro.org>
Cc: qemu-devel@nongnu.org
Cc: qemu-ppc@nongnu.org
Cc: qemu-arm@nongnu.org
---
 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/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_interfaces.h      |  7 +++----
 include/sysemu/tpm.h                 |  6 +++---
 target/arm/idau.h                    |  6 +++---
 tests/check-qom-interface.c          |  6 +++---
 20 files changed, 60 insertions(+), 64 deletions(-)

diff --git a/include/hw/acpi/acpi_dev_interface.h b/include/hw/acpi/acpi_dev_interface.h
index 5637a41936..d0e02451ba 100644
--- a/include/hw/acpi/acpi_dev_interface.h
+++ b/include/hw/acpi/acpi_dev_interface.h
@@ -21,11 +21,10 @@ typedef enum {
 typedef struct AcpiDeviceIfClass AcpiDeviceIfClass;
 DECLARE_CLASS_CHECKERS(AcpiDeviceIfClass, ACPI_DEVICE_IF,
                        TYPE_ACPI_DEVICE_IF)
-#define ACPI_DEVICE_IF(obj) \
-     OBJECT_CHECK(AcpiDeviceIf, (obj), \
-                     TYPE_ACPI_DEVICE_IF)
-
 typedef struct AcpiDeviceIf AcpiDeviceIf;
+DECLARE_INSTANCE_CHECKER(AcpiDeviceIf, ACPI_DEVICE_IF,
+                         TYPE_ACPI_DEVICE_IF)
+
 
 void acpi_send_event(DeviceState *dev, AcpiEventStatusBits event);
 
diff --git a/include/hw/arm/linux-boot-if.h b/include/hw/arm/linux-boot-if.h
index 4b86bb1067..645ef60a7b 100644
--- a/include/hw/arm/linux-boot-if.h
+++ b/include/hw/arm/linux-boot-if.h
@@ -12,10 +12,10 @@
 typedef struct ARMLinuxBootIfClass ARMLinuxBootIfClass;
 DECLARE_CLASS_CHECKERS(ARMLinuxBootIfClass, ARM_LINUX_BOOT_IF,
                        TYPE_ARM_LINUX_BOOT_IF)
-#define ARM_LINUX_BOOT_IF(obj) \
-    OBJECT_CHECK(ARMLinuxBootIf, (obj), TYPE_ARM_LINUX_BOOT_IF)
-
 typedef struct ARMLinuxBootIf ARMLinuxBootIf;
+DECLARE_INSTANCE_CHECKER(ARMLinuxBootIf, ARM_LINUX_BOOT_IF,
+                         TYPE_ARM_LINUX_BOOT_IF)
+
 
 struct ARMLinuxBootIfClass {
     /*< private >*/
diff --git a/include/hw/fw-path-provider.h b/include/hw/fw-path-provider.h
index 9b00b2eb37..85fd3256c6 100644
--- a/include/hw/fw-path-provider.h
+++ b/include/hw/fw-path-provider.h
@@ -25,10 +25,10 @@
 typedef struct FWPathProviderClass FWPathProviderClass;
 DECLARE_CLASS_CHECKERS(FWPathProviderClass, FW_PATH_PROVIDER,
                        TYPE_FW_PATH_PROVIDER)
-#define FW_PATH_PROVIDER(obj) \
-     OBJECT_CHECK(FWPathProvider, (obj), TYPE_FW_PATH_PROVIDER)
-
 typedef struct FWPathProvider FWPathProvider;
+DECLARE_INSTANCE_CHECKER(FWPathProvider, FW_PATH_PROVIDER,
+                         TYPE_FW_PATH_PROVIDER)
+
 
 struct FWPathProviderClass {
     InterfaceClass parent_class;
diff --git a/include/hw/hotplug.h b/include/hw/hotplug.h
index c87dfba941..914188b306 100644
--- a/include/hw/hotplug.h
+++ b/include/hw/hotplug.h
@@ -19,10 +19,10 @@
 typedef struct HotplugHandlerClass HotplugHandlerClass;
 DECLARE_CLASS_CHECKERS(HotplugHandlerClass, HOTPLUG_HANDLER,
                        TYPE_HOTPLUG_HANDLER)
-#define HOTPLUG_HANDLER(obj) \
-     OBJECT_CHECK(HotplugHandler, (obj), TYPE_HOTPLUG_HANDLER)
-
 typedef struct HotplugHandler HotplugHandler;
+DECLARE_INSTANCE_CHECKER(HotplugHandler, HOTPLUG_HANDLER,
+                         TYPE_HOTPLUG_HANDLER)
+
 
 /**
  * hotplug_fn:
diff --git a/include/hw/intc/intc.h b/include/hw/intc/intc.h
index c01d696937..bcc66f394b 100644
--- a/include/hw/intc/intc.h
+++ b/include/hw/intc/intc.h
@@ -8,11 +8,10 @@
 typedef struct InterruptStatsProviderClass InterruptStatsProviderClass;
 DECLARE_CLASS_CHECKERS(InterruptStatsProviderClass, INTERRUPT_STATS_PROVIDER,
                        TYPE_INTERRUPT_STATS_PROVIDER)
-#define INTERRUPT_STATS_PROVIDER(obj) \
-    OBJECT_CHECK(InterruptStatsProvider, (obj), \
-                    TYPE_INTERRUPT_STATS_PROVIDER)
-
 typedef struct InterruptStatsProvider InterruptStatsProvider;
+DECLARE_INSTANCE_CHECKER(InterruptStatsProvider, INTERRUPT_STATS_PROVIDER,
+                         TYPE_INTERRUPT_STATS_PROVIDER)
+
 
 struct InterruptStatsProviderClass {
     InterfaceClass parent;
diff --git a/include/hw/ipmi/ipmi.h b/include/hw/ipmi/ipmi.h
index 7073472ff8..9ec84b1bd8 100644
--- a/include/hw/ipmi/ipmi.h
+++ b/include/hw/ipmi/ipmi.h
@@ -109,13 +109,13 @@ uint32_t ipmi_next_uuid(void);
  * and the BMC.
  */
 #define TYPE_IPMI_INTERFACE "ipmi-interface"
-#define IPMI_INTERFACE(obj) \
-     OBJECT_CHECK(IPMIInterface, (obj), TYPE_IPMI_INTERFACE)
+typedef struct IPMIInterface IPMIInterface;
+DECLARE_INSTANCE_CHECKER(IPMIInterface, IPMI_INTERFACE,
+                         TYPE_IPMI_INTERFACE)
 typedef struct IPMIInterfaceClass IPMIInterfaceClass;
 DECLARE_CLASS_CHECKERS(IPMIInterfaceClass, IPMI_INTERFACE,
                        TYPE_IPMI_INTERFACE)
 
-typedef struct IPMIInterface IPMIInterface;
 
 struct IPMIInterfaceClass {
     InterfaceClass parent;
diff --git a/include/hw/mem/memory-device.h b/include/hw/mem/memory-device.h
index 5eaa106dc3..4d1a87441d 100644
--- a/include/hw/mem/memory-device.h
+++ b/include/hw/mem/memory-device.h
@@ -22,10 +22,10 @@
 typedef struct MemoryDeviceClass MemoryDeviceClass;
 DECLARE_CLASS_CHECKERS(MemoryDeviceClass, MEMORY_DEVICE,
                        TYPE_MEMORY_DEVICE)
-#define MEMORY_DEVICE(obj) \
-     OBJECT_CHECK(MemoryDeviceState, (obj), TYPE_MEMORY_DEVICE)
-
 typedef struct MemoryDeviceState MemoryDeviceState;
+DECLARE_INSTANCE_CHECKER(MemoryDeviceState, MEMORY_DEVICE,
+                         TYPE_MEMORY_DEVICE)
+
 
 /**
  * MemoryDeviceClass:
diff --git a/include/hw/nmi.h b/include/hw/nmi.h
index faa1c62aaa..a8fa9f7cff 100644
--- a/include/hw/nmi.h
+++ b/include/hw/nmi.h
@@ -29,10 +29,10 @@
 typedef struct NMIClass NMIClass;
 DECLARE_CLASS_CHECKERS(NMIClass, NMI,
                        TYPE_NMI)
-#define NMI(obj) \
-     OBJECT_CHECK(NMIState, (obj), TYPE_NMI)
-
 typedef struct NMIState NMIState;
+DECLARE_INSTANCE_CHECKER(NMIState, NMI,
+                         TYPE_NMI)
+
 
 struct NMIClass {
     InterfaceClass parent_class;
diff --git a/include/hw/ppc/pnv_xscom.h b/include/hw/ppc/pnv_xscom.h
index 597784393f..34c2f05177 100644
--- a/include/hw/ppc/pnv_xscom.h
+++ b/include/hw/ppc/pnv_xscom.h
@@ -25,8 +25,8 @@
 typedef struct PnvXScomInterface PnvXScomInterface;
 
 #define TYPE_PNV_XSCOM_INTERFACE "pnv-xscom-interface"
-#define PNV_XSCOM_INTERFACE(obj) \
-    OBJECT_CHECK(PnvXScomInterface, (obj), TYPE_PNV_XSCOM_INTERFACE)
+DECLARE_INSTANCE_CHECKER(PnvXScomInterface, PNV_XSCOM_INTERFACE,
+                         TYPE_PNV_XSCOM_INTERFACE)
 typedef struct PnvXScomInterfaceClass PnvXScomInterfaceClass;
 DECLARE_CLASS_CHECKERS(PnvXScomInterfaceClass, PNV_XSCOM_INTERFACE,
                        TYPE_PNV_XSCOM_INTERFACE)
diff --git a/include/hw/ppc/spapr_irq.h b/include/hw/ppc/spapr_irq.h
index c2f8665a51..95e0151154 100644
--- a/include/hw/ppc/spapr_irq.h
+++ b/include/hw/ppc/spapr_irq.h
@@ -34,8 +34,8 @@ struct SpaprMachineState;
 typedef struct SpaprInterruptController SpaprInterruptController;
 
 #define TYPE_SPAPR_INTC "spapr-interrupt-controller"
-#define SPAPR_INTC(obj)                                     \
-    OBJECT_CHECK(SpaprInterruptController, (obj), TYPE_SPAPR_INTC)
+DECLARE_INSTANCE_CHECKER(SpaprInterruptController, SPAPR_INTC,
+                         TYPE_SPAPR_INTC)
 typedef struct SpaprInterruptControllerClass SpaprInterruptControllerClass;
 DECLARE_CLASS_CHECKERS(SpaprInterruptControllerClass, SPAPR_INTC,
                        TYPE_SPAPR_INTC)
diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h
index 884dc5ae28..cb2e30f932 100644
--- a/include/hw/ppc/xics.h
+++ b/include/hw/ppc/xics.h
@@ -137,8 +137,8 @@ struct ICSIRQState {
 };
 
 #define TYPE_XICS_FABRIC "xics-fabric"
-#define XICS_FABRIC(obj)                                     \
-    OBJECT_CHECK(XICSFabric, (obj), TYPE_XICS_FABRIC)
+DECLARE_INSTANCE_CHECKER(XICSFabric, XICS_FABRIC,
+                         TYPE_XICS_FABRIC)
 typedef struct XICSFabricClass XICSFabricClass;
 DECLARE_CLASS_CHECKERS(XICSFabricClass, XICS_FABRIC,
                        TYPE_XICS_FABRIC)
diff --git a/include/hw/ppc/xive.h b/include/hw/ppc/xive.h
index fba72e0304..b22f7f76f5 100644
--- a/include/hw/ppc/xive.h
+++ b/include/hw/ppc/xive.h
@@ -152,8 +152,8 @@
 typedef struct XiveNotifier XiveNotifier;
 
 #define TYPE_XIVE_NOTIFIER "xive-notifier"
-#define XIVE_NOTIFIER(obj)                                     \
-    OBJECT_CHECK(XiveNotifier, (obj), TYPE_XIVE_NOTIFIER)
+DECLARE_INSTANCE_CHECKER(XiveNotifier, XIVE_NOTIFIER,
+                         TYPE_XIVE_NOTIFIER)
 typedef struct XiveNotifierClass XiveNotifierClass;
 DECLARE_CLASS_CHECKERS(XiveNotifierClass, XIVE_NOTIFIER,
                        TYPE_XIVE_NOTIFIER)
@@ -389,8 +389,8 @@ typedef struct XiveTCTXMatch {
 } XiveTCTXMatch;
 
 #define TYPE_XIVE_PRESENTER "xive-presenter"
-#define XIVE_PRESENTER(obj)                                     \
-    OBJECT_CHECK(XivePresenter, (obj), TYPE_XIVE_PRESENTER)
+DECLARE_INSTANCE_CHECKER(XivePresenter, XIVE_PRESENTER,
+                         TYPE_XIVE_PRESENTER)
 typedef struct XivePresenterClass XivePresenterClass;
 DECLARE_CLASS_CHECKERS(XivePresenterClass, XIVE_PRESENTER,
                        TYPE_XIVE_PRESENTER)
@@ -414,8 +414,8 @@ int xive_presenter_tctx_match(XivePresenter *xptr, XiveTCTX *tctx,
  */
 
 #define TYPE_XIVE_FABRIC "xive-fabric"
-#define XIVE_FABRIC(obj)                                     \
-    OBJECT_CHECK(XiveFabric, (obj), TYPE_XIVE_FABRIC)
+DECLARE_INSTANCE_CHECKER(XiveFabric, XIVE_FABRIC,
+                         TYPE_XIVE_FABRIC)
 typedef struct XiveFabricClass XiveFabricClass;
 DECLARE_CLASS_CHECKERS(XiveFabricClass, XIVE_FABRIC,
                        TYPE_XIVE_FABRIC)
diff --git a/include/hw/rdma/rdma.h b/include/hw/rdma/rdma.h
index 3f46986550..9d30fc2169 100644
--- a/include/hw/rdma/rdma.h
+++ b/include/hw/rdma/rdma.h
@@ -22,11 +22,10 @@
 typedef struct RdmaProviderClass RdmaProviderClass;
 DECLARE_CLASS_CHECKERS(RdmaProviderClass, RDMA_PROVIDER,
                        INTERFACE_RDMA_PROVIDER)
-#define RDMA_PROVIDER(obj) \
-    OBJECT_CHECK(RdmaProvider, (obj), \
-                    INTERFACE_RDMA_PROVIDER)
-
 typedef struct RdmaProvider RdmaProvider;
+DECLARE_INSTANCE_CHECKER(RdmaProvider, RDMA_PROVIDER,
+                         INTERFACE_RDMA_PROVIDER)
+
 
 struct RdmaProviderClass {
     InterfaceClass parent;
diff --git a/include/hw/rtc/m48t59.h b/include/hw/rtc/m48t59.h
index 7e3b077741..6e103241dd 100644
--- a/include/hw/rtc/m48t59.h
+++ b/include/hw/rtc/m48t59.h
@@ -34,10 +34,10 @@
 typedef struct NvramClass NvramClass;
 DECLARE_CLASS_CHECKERS(NvramClass, NVRAM,
                        TYPE_NVRAM)
-#define NVRAM(obj) \
-    OBJECT_CHECK(Nvram, (obj), TYPE_NVRAM)
-
 typedef struct Nvram Nvram;
+DECLARE_INSTANCE_CHECKER(Nvram, NVRAM,
+                         TYPE_NVRAM)
+
 
 struct NvramClass {
     InterfaceClass parent;
diff --git a/include/hw/stream.h b/include/hw/stream.h
index afa6679c64..cd8fbdf382 100644
--- a/include/hw/stream.h
+++ b/include/hw/stream.h
@@ -9,10 +9,10 @@
 typedef struct StreamSlaveClass StreamSlaveClass;
 DECLARE_CLASS_CHECKERS(StreamSlaveClass, STREAM_SLAVE,
                        TYPE_STREAM_SLAVE)
-#define STREAM_SLAVE(obj) \
-     OBJECT_CHECK(StreamSlave, (obj), TYPE_STREAM_SLAVE)
-
 typedef struct StreamSlave StreamSlave;
+DECLARE_INSTANCE_CHECKER(StreamSlave, STREAM_SLAVE,
+                         TYPE_STREAM_SLAVE)
+
 
 typedef void (*StreamCanPushNotifyFn)(void *opaque);
 
diff --git a/include/hw/vmstate-if.h b/include/hw/vmstate-if.h
index 99bb1de7c2..f4e40ed022 100644
--- a/include/hw/vmstate-if.h
+++ b/include/hw/vmstate-if.h
@@ -16,10 +16,10 @@
 typedef struct VMStateIfClass VMStateIfClass;
 DECLARE_CLASS_CHECKERS(VMStateIfClass, VMSTATE_IF,
                        TYPE_VMSTATE_IF)
-#define VMSTATE_IF(obj)                             \
-    OBJECT_CHECK(VMStateIf, (obj), TYPE_VMSTATE_IF)
-
 typedef struct VMStateIf VMStateIf;
+DECLARE_INSTANCE_CHECKER(VMStateIf, VMSTATE_IF,
+                         TYPE_VMSTATE_IF)
+
 
 struct VMStateIfClass {
     InterfaceClass parent_class;
diff --git a/include/qom/object_interfaces.h b/include/qom/object_interfaces.h
index a6626e0ed6..80c3d34598 100644
--- a/include/qom/object_interfaces.h
+++ b/include/qom/object_interfaces.h
@@ -9,11 +9,10 @@
 typedef struct UserCreatableClass UserCreatableClass;
 DECLARE_CLASS_CHECKERS(UserCreatableClass, USER_CREATABLE,
                        TYPE_USER_CREATABLE)
-#define USER_CREATABLE(obj) \
-     OBJECT_CHECK(UserCreatable, (obj), \
-                     TYPE_USER_CREATABLE)
-
 typedef struct UserCreatable UserCreatable;
+DECLARE_INSTANCE_CHECKER(UserCreatable, USER_CREATABLE,
+                         TYPE_USER_CREATABLE)
+
 
 /**
  * UserCreatableClass:
diff --git a/include/sysemu/tpm.h b/include/sysemu/tpm.h
index 102217c348..922924b1d0 100644
--- a/include/sysemu/tpm.h
+++ b/include/sysemu/tpm.h
@@ -29,10 +29,10 @@ typedef enum TPMVersion {
 typedef struct TPMIfClass TPMIfClass;
 DECLARE_CLASS_CHECKERS(TPMIfClass, TPM_IF,
                        TYPE_TPM_IF)
-#define TPM_IF(obj)                             \
-    OBJECT_CHECK(TPMIf, (obj), TYPE_TPM_IF)
-
 typedef struct TPMIf TPMIf;
+DECLARE_INSTANCE_CHECKER(TPMIf, TPM_IF,
+                         TYPE_TPM_IF)
+
 
 struct TPMIfClass {
     InterfaceClass parent_class;
diff --git a/target/arm/idau.h b/target/arm/idau.h
index 6b28d26da9..f811b00f21 100644
--- a/target/arm/idau.h
+++ b/target/arm/idau.h
@@ -31,13 +31,13 @@
 #include "qom/object.h"
 
 #define TYPE_IDAU_INTERFACE "idau-interface"
-#define IDAU_INTERFACE(obj) \
-    OBJECT_CHECK(IDAUInterface, (obj), TYPE_IDAU_INTERFACE)
+typedef struct IDAUInterface IDAUInterface;
+DECLARE_INSTANCE_CHECKER(IDAUInterface, IDAU_INTERFACE,
+                         TYPE_IDAU_INTERFACE)
 typedef struct IDAUInterfaceClass IDAUInterfaceClass;
 DECLARE_CLASS_CHECKERS(IDAUInterfaceClass, IDAU_INTERFACE,
                        TYPE_IDAU_INTERFACE)
 
-typedef struct IDAUInterface IDAUInterface;
 
 #define IREGION_NOTVALID -1
 
diff --git a/tests/check-qom-interface.c b/tests/check-qom-interface.c
index 53bdcb8878..2c29af8100 100644
--- a/tests/check-qom-interface.c
+++ b/tests/check-qom-interface.c
@@ -19,10 +19,10 @@
 typedef struct TestIfClass TestIfClass;
 DECLARE_CLASS_CHECKERS(TestIfClass, TEST_IF,
                        TYPE_TEST_IF)
-#define TEST_IF(obj) \
-     OBJECT_CHECK(TestIf, (obj), TYPE_TEST_IF)
-
 typedef struct TestIf TestIf;
+DECLARE_INSTANCE_CHECKER(TestIf, TEST_IF,
+                         TYPE_TEST_IF)
+
 
 struct TestIfClass {
     InterfaceClass parent_class;
-- 
2.26.2



^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
  2020-09-16 19:30 [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Eduardo Habkost
                   ` (2 preceding siblings ...)
  2020-09-16 19:31 ` [PATCH 3/3] [automated] Use DECLARE_*CHECKER* macros Eduardo Habkost
@ 2020-09-16 21:31 ` Marc-André Lureau
  2020-09-16 22:13   ` Eduardo Habkost
  2020-09-17  7:19   ` Philippe Mathieu-Daudé
  2020-09-17  7:05 ` Markus Armbruster
  4 siblings, 2 replies; 10+ messages in thread
From: Marc-André Lureau @ 2020-09-16 21:31 UTC (permalink / raw)
  To: Eduardo Habkost; +Cc: Paolo Bonzini, Daniel P. Berrange, QEMU

[-- Attachment #1: Type: text/plain, Size: 2342 bytes --]

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

[-- Attachment #2: Type: text/html, Size: 3204 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
  2020-09-16 21:31 ` [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Marc-André Lureau
@ 2020-09-16 22:13   ` Eduardo Habkost
  2020-09-17  7:19   ` Philippe Mathieu-Daudé
  1 sibling, 0 replies; 10+ messages in thread
From: Eduardo Habkost @ 2020-09-16 22:13 UTC (permalink / raw)
  To: Marc-André Lureau; +Cc: Paolo Bonzini, Daniel P. Berrange, QEMU

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



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
  2020-09-16 19:30 [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Eduardo Habkost
                   ` (3 preceding siblings ...)
  2020-09-16 21:31 ` [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Marc-André Lureau
@ 2020-09-17  7:05 ` Markus Armbruster
  4 siblings, 0 replies; 10+ messages in thread
From: Markus Armbruster @ 2020-09-17  7:05 UTC (permalink / raw)
  To: Eduardo Habkost; +Cc: Paolo Bonzini, Daniel P. Berrange, qemu-devel

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.



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
  2020-09-16 21:31 ` [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Marc-André Lureau
  2020-09-16 22:13   ` Eduardo Habkost
@ 2020-09-17  7:19   ` Philippe Mathieu-Daudé
  2020-09-17  7:25     ` Marc-André Lureau
  1 sibling, 1 reply; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2020-09-17  7:19 UTC (permalink / raw)
  To: Marc-André Lureau, Eduardo Habkost
  Cc: Paolo Bonzini, Daniel P. Berrange, QEMU

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



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
  2020-09-17  7:19   ` Philippe Mathieu-Daudé
@ 2020-09-17  7:25     ` Marc-André Lureau
  2020-09-18 18:23       ` Eduardo Habkost
  0 siblings, 1 reply; 10+ messages in thread
From: Marc-André Lureau @ 2020-09-17  7:25 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: Paolo Bonzini, Daniel P. Berrange, Eduardo Habkost, QEMU

[-- Attachment #1: Type: text/plain, Size: 1887 bytes --]

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

[-- Attachment #2: Type: text/html, Size: 2712 bytes --]

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK
  2020-09-17  7:25     ` Marc-André Lureau
@ 2020-09-18 18:23       ` Eduardo Habkost
  0 siblings, 0 replies; 10+ messages in thread
From: Eduardo Habkost @ 2020-09-18 18:23 UTC (permalink / raw)
  To: Marc-André Lureau
  Cc: Paolo Bonzini, Philippe Mathieu-Daudé, Daniel P. Berrange, QEMU

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



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2020-09-18 18:43 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-16 19:30 [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Eduardo Habkost
2020-09-16 19:30 ` [PATCH 1/3] qom: Correct object_class_dynamic_cast_assert() documentation Eduardo Habkost
2020-09-16 19:31 ` [PATCH 2/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Eduardo Habkost
2020-09-16 19:31 ` [PATCH 3/3] [automated] Use DECLARE_*CHECKER* macros Eduardo Habkost
2020-09-16 21:31 ` [PATCH 0/3] qom: Replace INTERFACE_CHECK with OBJECT_CHECK Marc-André Lureau
2020-09-16 22:13   ` Eduardo Habkost
2020-09-17  7:19   ` Philippe Mathieu-Daudé
2020-09-17  7:25     ` Marc-André Lureau
2020-09-18 18:23       ` Eduardo Habkost
2020-09-17  7:05 ` Markus Armbruster

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.