Hi On Mon, Sep 24, 2018 at 1:30 PM Igor Mammedov <imamm...@redhat.com> wrote: > > On Fri, 21 Sep 2018 15:13:30 +0400 > Marc-André Lureau <marcandre.lur...@redhat.com> wrote: > > > Hi, > > > > This is a readability suggestion. See the first patch for the doc > > change, and the second patch for an example of usage and readability > > improvement. > Looks like a nice improvement, > but could you conversion tree wide so we end up with a consistent > way to cast across the tree. > Probably it would result in negative diffstat and demonstrate > usefulness of the simplification in numbers.
It doesn't result in negative diffstat, since often a one-liner is replaced by a 2-liner macro ;) However, the resulting code is more pleasant to read imho. I attached the whole diff here, the branch with the 49 patches split-series is here: https://github.com/elmarco/qemu/commits/object Let me know what you think > > > thanks > > > > Marc-André Lureau (2): > > object: recommend a few type check macros > > nvdimm: use IS_NVDIMM macro > > > > include/hw/mem/nvdimm.h | 1 + > > include/qom/object.h | 25 ++++++++++++++++--------- > > hw/acpi/ich9.c | 2 +- > > hw/acpi/nvdimm.c | 2 +- > > hw/acpi/piix4.c | 2 +- > > hw/i386/pc.c | 8 +++----- > > hw/mem/pc-dimm.c | 2 +- > > 7 files changed, 24 insertions(+), 18 deletions(-) > > > > -- Marc-André Lureau
diff --git a/hw/net/fsl_etsec/etsec.h b/hw/net/fsl_etsec/etsec.h index 877988572e..93d484eeae 100644 --- a/hw/net/fsl_etsec/etsec.h +++ b/hw/net/fsl_etsec/etsec.h @@ -151,7 +151,9 @@ typedef struct eTSEC { #define TYPE_ETSEC_COMMON "eTSEC" #define ETSEC_COMMON(obj) \ - OBJECT_CHECK(eTSEC, (obj), TYPE_ETSEC_COMMON) + OBJECT_CHECK(eTSEC, (obj), TYPE_ETSEC_COMMON) +#define IS_ETSEC_COMMON(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_ETSEC_COMMON) #define eTSEC_TRANSMIT 1 #define eTSEC_RECEIVE 2 diff --git a/hw/s390x/s390-pci-bus.h b/hw/s390x/s390-pci-bus.h index 1f7f9b5814..d66974b301 100644 --- a/hw/s390x/s390-pci-bus.h +++ b/hw/s390x/s390-pci-bus.h @@ -46,6 +46,9 @@ #define S390_PCI_IOMMU(obj) \ OBJECT_CHECK(S390PCIIOMMU, (obj), TYPE_S390_PCI_IOMMU) +#define IS_S390_PCI_DEVICE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_S390_PCI_DEVICE) + #define HP_EVENT_TO_CONFIGURED 0x0301 #define HP_EVENT_RESERVED_TO_STANDBY 0x0302 #define HP_EVENT_DECONFIGURE_REQUEST 0x0303 diff --git a/include/chardev/char.h b/include/chardev/char.h index 6f0576e214..c9e8e23ead 100644 --- a/include/chardev/char.h +++ b/include/chardev/char.h @@ -214,6 +214,8 @@ int qemu_chr_wait_connected(Chardev *chr, Error **errp); OBJECT_CLASS_CHECK(ChardevClass, (klass), TYPE_CHARDEV) #define CHARDEV_GET_CLASS(obj) \ OBJECT_GET_CLASS(ChardevClass, (obj), TYPE_CHARDEV) +#define IS_CHARDEV_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_CHARDEV) #define TYPE_CHARDEV_NULL "chardev-null" #define TYPE_CHARDEV_MUX "chardev-mux" diff --git a/include/crypto/tlscredsanon.h b/include/crypto/tlscredsanon.h index 4d6b7e4d29..9836851cff 100644 --- a/include/crypto/tlscredsanon.h +++ b/include/crypto/tlscredsanon.h @@ -26,6 +26,8 @@ #define TYPE_QCRYPTO_TLS_CREDS_ANON "tls-creds-anon" #define QCRYPTO_TLS_CREDS_ANON(obj) \ OBJECT_CHECK(QCryptoTLSCredsAnon, (obj), TYPE_QCRYPTO_TLS_CREDS_ANON) +#define IS_QCRYPTO_TLS_CREDS_ANON(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_QCRYPTO_TLS_CREDS_ANON) typedef struct QCryptoTLSCredsAnon QCryptoTLSCredsAnon; diff --git a/include/crypto/tlscredspsk.h b/include/crypto/tlscredspsk.h index 306d36c67d..ba201a097f 100644 --- a/include/crypto/tlscredspsk.h +++ b/include/crypto/tlscredspsk.h @@ -26,6 +26,8 @@ #define TYPE_QCRYPTO_TLS_CREDS_PSK "tls-creds-psk" #define QCRYPTO_TLS_CREDS_PSK(obj) \ OBJECT_CHECK(QCryptoTLSCredsPSK, (obj), TYPE_QCRYPTO_TLS_CREDS_PSK) +#define IS_QCRYPTO_TLS_CREDS_PSK(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_QCRYPTO_TLS_CREDS_PSK) typedef struct QCryptoTLSCredsPSK QCryptoTLSCredsPSK; typedef struct QCryptoTLSCredsPSKClass QCryptoTLSCredsPSKClass; diff --git a/include/crypto/tlscredsx509.h b/include/crypto/tlscredsx509.h index 66ad6a7486..67d8a35001 100644 --- a/include/crypto/tlscredsx509.h +++ b/include/crypto/tlscredsx509.h @@ -26,6 +26,8 @@ #define TYPE_QCRYPTO_TLS_CREDS_X509 "tls-creds-x509" #define QCRYPTO_TLS_CREDS_X509(obj) \ OBJECT_CHECK(QCryptoTLSCredsX509, (obj), TYPE_QCRYPTO_TLS_CREDS_X509) +#define IS_QCRYPTO_TLS_CREDS_X509(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_QCRYPTO_TLS_CREDS_X509) typedef struct QCryptoTLSCredsX509 QCryptoTLSCredsX509; typedef struct QCryptoTLSCredsX509Class QCryptoTLSCredsX509Class; diff --git a/include/hw/arm/linux-boot-if.h b/include/hw/arm/linux-boot-if.h index aba4479a14..33f3fde82c 100644 --- a/include/hw/arm/linux-boot-if.h +++ b/include/hw/arm/linux-boot-if.h @@ -15,6 +15,8 @@ OBJECT_GET_CLASS(ARMLinuxBootIfClass, (obj), TYPE_ARM_LINUX_BOOT_IF) #define ARM_LINUX_BOOT_IF(obj) \ INTERFACE_CHECK(ARMLinuxBootIf, (obj), TYPE_ARM_LINUX_BOOT_IF) +#define IS_ARM_LINUX_BOOT_IF(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_ARM_LINUX_BOOT_IF) typedef struct ARMLinuxBootIf { /*< private >*/ diff --git a/include/hw/boards.h b/include/hw/boards.h index f82f28468b..9e5b4452bd 100644 --- a/include/hw/boards.h +++ b/include/hw/boards.h @@ -56,6 +56,8 @@ void memory_region_allocate_system_memory(MemoryRegion *mr, Object *owner, OBJECT_GET_CLASS(MachineClass, (obj), TYPE_MACHINE) #define MACHINE_CLASS(klass) \ OBJECT_CLASS_CHECK(MachineClass, (klass), TYPE_MACHINE) +#define IS_MACHINE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_MACHINE) MachineClass *find_default_machine(void); extern MachineState *current_machine; diff --git a/include/hw/char/serial.h b/include/hw/char/serial.h index 0acfbbc382..720e6359c3 100644 --- a/include/hw/char/serial.h +++ b/include/hw/char/serial.h @@ -99,6 +99,8 @@ SerialState *serial_mm_init(MemoryRegion *address_space, #define MAX_ISA_SERIAL_PORTS 4 #define TYPE_ISA_SERIAL "isa-serial" +#define IS_ISA_SERIAL(obj) object_dynamic_cast(OBJECT(obj), TYPE_ISA_SERIAL) + void serial_hds_isa_init(ISABus *bus, int from, int to); #endif diff --git a/include/hw/i386/pc.h b/include/hw/i386/pc.h index 6894f37df1..84ba1e2659 100644 --- a/include/hw/i386/pc.h +++ b/include/hw/i386/pc.h @@ -143,6 +143,8 @@ struct PCMachineClass { OBJECT_GET_CLASS(PCMachineClass, (obj), TYPE_PC_MACHINE) #define PC_MACHINE_CLASS(klass) \ OBJECT_CLASS_CHECK(PCMachineClass, (klass), TYPE_PC_MACHINE) +#define IS_PC_MACHINE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_PC_MACHINE) /* i8259.c */ diff --git a/include/hw/intc/intc.h b/include/hw/intc/intc.h index 27d9828943..d0812b07a3 100644 --- a/include/hw/intc/intc.h +++ b/include/hw/intc/intc.h @@ -14,6 +14,8 @@ #define INTERRUPT_STATS_PROVIDER(obj) \ INTERFACE_CHECK(InterruptStatsProvider, (obj), \ TYPE_INTERRUPT_STATS_PROVIDER) +#define IS_INTERRUPT_STATS_PROVIDER(obj) \ + object_dynamic_cast((obj), TYPE_INTERRUPT_STATS_PROVIDER) typedef struct InterruptStatsProvider { Object parent; diff --git a/include/hw/ipmi/ipmi.h b/include/hw/ipmi/ipmi.h index 0affe5a4d8..af4e42657d 100644 --- a/include/hw/ipmi/ipmi.h +++ b/include/hw/ipmi/ipmi.h @@ -113,6 +113,8 @@ uint32_t ipmi_next_uuid(void); OBJECT_CLASS_CHECK(IPMIInterfaceClass, (class), TYPE_IPMI_INTERFACE) #define IPMI_INTERFACE_GET_CLASS(class) \ OBJECT_GET_CLASS(IPMIInterfaceClass, (class), TYPE_IPMI_INTERFACE) +#define IS_IPMI_INTERFACE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_IPMI_INTERFACE) typedef struct IPMIInterface { Object parent; @@ -168,6 +170,9 @@ typedef struct IPMIInterfaceClass { void (*get_fwinfo)(struct IPMIInterface *s, IPMIFwInfo *info); } IPMIInterfaceClass; +#define TYPE_ISA_IPMI_BT "isa-ipmi-bt" +#define IS_ISA_IPMI_BT(obj) object_dynamic_cast(OBJECT(obj), TYPE_ISA_IPMI_BT) + /* * Define a BMC simulator (or perhaps a connection to a real BMC) */ diff --git a/include/hw/mem/memory-device.h b/include/hw/mem/memory-device.h index 2853b084b5..5821992d2f 100644 --- a/include/hw/mem/memory-device.h +++ b/include/hw/mem/memory-device.h @@ -19,11 +19,13 @@ #define TYPE_MEMORY_DEVICE "memory-device" #define MEMORY_DEVICE_CLASS(klass) \ - OBJECT_CLASS_CHECK(MemoryDeviceClass, (klass), TYPE_MEMORY_DEVICE) + OBJECT_CLASS_CHECK(MemoryDeviceClass, (klass), TYPE_MEMORY_DEVICE) #define MEMORY_DEVICE_GET_CLASS(obj) \ OBJECT_GET_CLASS(MemoryDeviceClass, (obj), TYPE_MEMORY_DEVICE) #define MEMORY_DEVICE(obj) \ - INTERFACE_CHECK(MemoryDeviceState, (obj), TYPE_MEMORY_DEVICE) + INTERFACE_CHECK(MemoryDeviceState, (obj), TYPE_MEMORY_DEVICE) +#define IS_MEMORY_DEVICE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_MEMORY_DEVICE) typedef struct MemoryDeviceState { Object parent_obj; diff --git a/include/hw/mem/nvdimm.h b/include/hw/mem/nvdimm.h index c5c9b3c7f8..e56be1d492 100644 --- a/include/hw/mem/nvdimm.h +++ b/include/hw/mem/nvdimm.h @@ -47,6 +47,7 @@ #define NVDIMM_CLASS(oc) OBJECT_CLASS_CHECK(NVDIMMClass, (oc), TYPE_NVDIMM) #define NVDIMM_GET_CLASS(obj) OBJECT_GET_CLASS(NVDIMMClass, (obj), \ TYPE_NVDIMM) +#define IS_NVDIMM(obj) object_dynamic_cast(OBJECT(obj), TYPE_NVDIMM) #define NVDIMM_LABEL_SIZE_PROP "label-size" #define NVDIMM_UNARMED_PROP "unarmed" diff --git a/include/hw/mem/pc-dimm.h b/include/hw/mem/pc-dimm.h index b382eb4303..5f3ec060b4 100644 --- a/include/hw/mem/pc-dimm.h +++ b/include/hw/mem/pc-dimm.h @@ -28,6 +28,7 @@ OBJECT_CLASS_CHECK(PCDIMMDeviceClass, (oc), TYPE_PC_DIMM) #define PC_DIMM_GET_CLASS(obj) \ OBJECT_GET_CLASS(PCDIMMDeviceClass, (obj), TYPE_PC_DIMM) +#define IS_PC_DIMM(obj) object_dynamic_cast(OBJECT(obj), TYPE_PC_DIMM) #define PC_DIMM_ADDR_PROP "addr" #define PC_DIMM_SLOT_PROP "slot" diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index e6514bba23..c09c47b3c6 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -198,6 +198,8 @@ enum { OBJECT_CLASS_CHECK(PCIDeviceClass, (klass), TYPE_PCI_DEVICE) #define PCI_DEVICE_GET_CLASS(obj) \ OBJECT_GET_CLASS(PCIDeviceClass, (obj), TYPE_PCI_DEVICE) +#define IS_PCI_DEVICE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_PCI_DEVICE) /* Implemented by devices that can be plugged on PCI Express buses */ #define INTERFACE_PCIE_DEVICE "pci-express-device" @@ -393,6 +395,7 @@ typedef PCIINTxRoute (*pci_route_irq_fn)(void *opaque, int pin); #define PCI_BUS_CLASS(klass) OBJECT_CLASS_CHECK(PCIBusClass, (klass), TYPE_PCI_BUS) #define PCI_BUS_GET_CLASS(obj) OBJECT_GET_CLASS(PCIBusClass, (obj), TYPE_PCI_BUS) #define TYPE_PCIE_BUS "PCIE" +#define IS_PCIE_BUS(obj) object_dynamic_cast(OBJECT(obj), TYPE_PCIE_BUS) bool pci_bus_is_express(PCIBus *bus); bool pci_bus_is_root(PCIBus *bus); @@ -429,6 +432,9 @@ PCIDevice *pci_nic_init_nofail(NICInfo *nd, PCIBus *rootbus, const char *default_model, const char *default_devaddr); +#define TYPE_PCI_VGA "pci-vga" +#define IS_PCI_VGA(obj) object_dynamic_cast(OBJECT(obj), TYPE_PCI_VGA) + PCIDevice *pci_vga_init(PCIBus *bus); static inline PCIBus *pci_get_bus(const PCIDevice *dev) diff --git a/include/hw/pci/pci_bridge.h b/include/hw/pci/pci_bridge.h index cdff7edfd1..5a56814fe9 100644 --- a/include/hw/pci/pci_bridge.h +++ b/include/hw/pci/pci_bridge.h @@ -51,6 +51,7 @@ struct PCIBridgeWindows { #define TYPE_PCI_BRIDGE "base-pci-bridge" #define PCI_BRIDGE(obj) OBJECT_CHECK(PCIBridge, (obj), TYPE_PCI_BRIDGE) +#define IS_PCI_BRIDGE(obj) object_dynamic_cast(OBJECT(obj), TYPE_PCI_BRIDGE) struct PCIBridge { /*< private >*/ diff --git a/include/hw/ppc/pnv_xscom.h b/include/hw/ppc/pnv_xscom.h index 255b26a5aa..1747d42ea8 100644 --- a/include/hw/ppc/pnv_xscom.h +++ b/include/hw/ppc/pnv_xscom.h @@ -27,12 +27,14 @@ typedef struct PnvXScomInterface { #define TYPE_PNV_XSCOM_INTERFACE "pnv-xscom-interface" #define PNV_XSCOM_INTERFACE(obj) \ - OBJECT_CHECK(PnvXScomInterface, (obj), TYPE_PNV_XSCOM_INTERFACE) + OBJECT_CHECK(PnvXScomInterface, (obj), TYPE_PNV_XSCOM_INTERFACE) #define PNV_XSCOM_INTERFACE_CLASS(klass) \ OBJECT_CLASS_CHECK(PnvXScomInterfaceClass, (klass), \ TYPE_PNV_XSCOM_INTERFACE) #define PNV_XSCOM_INTERFACE_GET_CLASS(obj) \ - OBJECT_GET_CLASS(PnvXScomInterfaceClass, (obj), TYPE_PNV_XSCOM_INTERFACE) + OBJECT_GET_CLASS(PnvXScomInterfaceClass, (obj), TYPE_PNV_XSCOM_INTERFACE) +#define IS_PNV_XSCOM_INTERFACE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_PNV_XSCOM_INTERFACE) typedef struct PnvXScomInterfaceClass { InterfaceClass parent; diff --git a/include/hw/ppc/spapr.h b/include/hw/ppc/spapr.h index ad4d7cfd97..85110f9234 100644 --- a/include/hw/ppc/spapr.h +++ b/include/hw/ppc/spapr.h @@ -44,6 +44,8 @@ typedef struct sPAPRMachineClass sPAPRMachineClass; OBJECT_GET_CLASS(sPAPRMachineClass, obj, TYPE_SPAPR_MACHINE) #define SPAPR_MACHINE_CLASS(klass) \ OBJECT_CLASS_CHECK(sPAPRMachineClass, klass, TYPE_SPAPR_MACHINE) +#define IS_SPAPR_MACHINE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_SPAPR_MACHINE) typedef enum { SPAPR_RESIZE_HPT_DEFAULT = 0, diff --git a/include/hw/ppc/spapr_cpu_core.h b/include/hw/ppc/spapr_cpu_core.h index 9e2821e4b3..7083137763 100644 --- a/include/hw/ppc/spapr_cpu_core.h +++ b/include/hw/ppc/spapr_cpu_core.h @@ -20,7 +20,9 @@ #define SPAPR_CPU_CORE_CLASS(klass) \ OBJECT_CLASS_CHECK(sPAPRCPUCoreClass, (klass), TYPE_SPAPR_CPU_CORE) #define SPAPR_CPU_CORE_GET_CLASS(obj) \ - OBJECT_GET_CLASS(sPAPRCPUCoreClass, (obj), TYPE_SPAPR_CPU_CORE) + OBJECT_GET_CLASS(sPAPRCPUCoreClass, (obj), TYPE_SPAPR_CPU_CORE) +#define IS_SPAPR_CPU_CORE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_SPAPR_CPU_CORE) #define SPAPR_CPU_CORE_TYPE_NAME(model) model "-" TYPE_SPAPR_CPU_CORE diff --git a/include/hw/ppc/spapr_drc.h b/include/hw/ppc/spapr_drc.h index f6ff32e7e2..8ddce93294 100644 --- a/include/hw/ppc/spapr_drc.h +++ b/include/hw/ppc/spapr_drc.h @@ -36,6 +36,8 @@ TYPE_SPAPR_DRC_PHYSICAL) #define SPAPR_DRC_PHYSICAL(obj) OBJECT_CHECK(sPAPRDRCPhysical, (obj), \ TYPE_SPAPR_DRC_PHYSICAL) +#define IS_SPAPR_DRC_PHYSICAL(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_SPAPR_DRC_PHYSICAL) #define TYPE_SPAPR_DRC_LOGICAL "spapr-drc-logical" #define SPAPR_DRC_LOGICAL_GET_CLASS(obj) \ @@ -45,6 +47,8 @@ TYPE_SPAPR_DRC_LOGICAL) #define SPAPR_DRC_LOGICAL(obj) OBJECT_CHECK(sPAPRDRConnector, (obj), \ TYPE_SPAPR_DRC_LOGICAL) +#define IS_SPAPR_DRC_LOGICAL(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_SPAPR_DRC_LOGICAL) #define TYPE_SPAPR_DRC_CPU "spapr-drc-cpu" #define SPAPR_DRC_CPU_GET_CLASS(obj) \ diff --git a/include/hw/ppc/xics.h b/include/hw/ppc/xics.h index 9958443d19..c16e17bc1e 100644 --- a/include/hw/ppc/xics.h +++ b/include/hw/ppc/xics.h @@ -105,6 +105,7 @@ struct PnvICPState { #define TYPE_ICS_KVM "icskvm" #define ICS_KVM(obj) OBJECT_CHECK(ICSState, (obj), TYPE_ICS_KVM) +#define IS_ICS_KVM(obj) object_dynamic_cast(OBJECT(obj), TYPE_ICS_KVM) #define ICS_BASE_CLASS(klass) \ OBJECT_CLASS_CHECK(ICSStateClass, (klass), TYPE_ICS_BASE) diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h index a24d0dd566..e3cb0617db 100644 --- a/include/hw/qdev-core.h +++ b/include/hw/qdev-core.h @@ -15,6 +15,9 @@ enum { #define DEVICE(obj) OBJECT_CHECK(DeviceState, (obj), TYPE_DEVICE) #define DEVICE_CLASS(klass) OBJECT_CLASS_CHECK(DeviceClass, (klass), TYPE_DEVICE) #define DEVICE_GET_CLASS(obj) OBJECT_GET_CLASS(DeviceClass, (obj), TYPE_DEVICE) +#define IS_DEVICE(obj) object_dynamic_cast(OBJECT(obj), TYPE_DEVICE) +#define IS_DEVICE_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_DEVICE) typedef enum DeviceCategory { DEVICE_CATEGORY_BRIDGE, diff --git a/include/hw/sysbus.h b/include/hw/sysbus.h index 0b59a3b8d6..7dfcb7c5bf 100644 --- a/include/hw/sysbus.h +++ b/include/hw/sysbus.h @@ -21,6 +21,8 @@ typedef struct SysBusDevice SysBusDevice; OBJECT_CLASS_CHECK(SysBusDeviceClass, (klass), TYPE_SYS_BUS_DEVICE) #define SYS_BUS_DEVICE_GET_CLASS(obj) \ OBJECT_GET_CLASS(SysBusDeviceClass, (obj), TYPE_SYS_BUS_DEVICE) +#define IS_SYS_BUS_DEVICE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_SYS_BUS_DEVICE) /** * SysBusDeviceClass: diff --git a/include/hw/timer/mc146818rtc.h b/include/hw/timer/mc146818rtc.h index fe6ed63f71..dcb7054691 100644 --- a/include/hw/timer/mc146818rtc.h +++ b/include/hw/timer/mc146818rtc.h @@ -5,6 +5,7 @@ #include "hw/timer/mc146818rtc_regs.h" #define TYPE_MC146818_RTC "mc146818rtc" +#define IS_MC146818_RTC(obj) object_dynamic_cast(OBJECT(obj), TYPE_MC146818_RTC) ISADevice *mc146818_rtc_init(ISABus *bus, int base_year, qemu_irq intercept_irq); diff --git a/include/hw/vfio/vfio-common.h b/include/hw/vfio/vfio-common.h index 821def0565..96f49e8497 100644 --- a/include/hw/vfio/vfio-common.h +++ b/include/hw/vfio/vfio-common.h @@ -157,6 +157,9 @@ typedef struct VFIODisplay { } dmabuf; } VFIODisplay; +#define TYPE_VFIO_PCI "vfio-pci" +#define IS_VFIO_PCI(obj) object_dynamic_cast(OBJECT(obj), TYPE_VFIO_PCI) + void vfio_put_base_device(VFIODevice *vbasedev); void vfio_disable_irqindex(VFIODevice *vbasedev, int index); void vfio_unmask_single_irqindex(VFIODevice *vbasedev, int index); diff --git a/include/hw/vfio/vfio.h b/include/hw/vfio/vfio.h index 86248f5436..78803ab52b 100644 --- a/include/hw/vfio/vfio.h +++ b/include/hw/vfio/vfio.h @@ -1,6 +1,8 @@ #ifndef HW_VFIO_H #define HW_VFIO_H +#include "hw/vfio/vfio-common.h" + bool vfio_eeh_as_ok(AddressSpace *as); int vfio_eeh_as_op(AddressSpace *as, uint32_t op); diff --git a/include/io/channel-tls.h b/include/io/channel-tls.h index 87fcaf9146..f67867a932 100644 --- a/include/io/channel-tls.h +++ b/include/io/channel-tls.h @@ -28,6 +28,8 @@ #define TYPE_QIO_CHANNEL_TLS "qio-channel-tls" #define QIO_CHANNEL_TLS(obj) \ OBJECT_CHECK(QIOChannelTLS, (obj), TYPE_QIO_CHANNEL_TLS) +#define IS_QIO_CHANNEL_TLS(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_QIO_CHANNEL_TLS) typedef struct QIOChannelTLS QIOChannelTLS; diff --git a/include/qom/cpu.h b/include/qom/cpu.h index dc130cd307..6fd9dc00bf 100644 --- a/include/qom/cpu.h +++ b/include/qom/cpu.h @@ -62,6 +62,7 @@ typedef uint64_t vaddr; #define CPU_CLASS(class) OBJECT_CLASS_CHECK(CPUClass, (class), TYPE_CPU) #define CPU_GET_CLASS(obj) OBJECT_GET_CLASS(CPUClass, (obj), TYPE_CPU) +#define IS_CPU(obj) object_dynamic_cast(OBJECT(obj), TYPE_CPU) typedef enum MMUAccessType { MMU_DATA_LOAD = 0, diff --git a/include/qom/object.h b/include/qom/object.h index c16e0bc91e..5c0e63f913 100644 --- a/include/qom/object.h +++ b/include/qom/object.h @@ -512,6 +512,9 @@ struct TypeInfo #define OBJECT_CLASS(class) \ ((ObjectClass *)(class)) +#define IS_OBJECT_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_OBJECT) + /** * OBJECT_CHECK: * @type: The C type to use for the return value. diff --git a/include/qom/object_interfaces.h b/include/qom/object_interfaces.h index 4d513fb329..8ac4919f35 100644 --- a/include/qom/object_interfaces.h +++ b/include/qom/object_interfaces.h @@ -7,15 +7,15 @@ #define TYPE_USER_CREATABLE "user-creatable" #define USER_CREATABLE_CLASS(klass) \ - OBJECT_CLASS_CHECK(UserCreatableClass, (klass), \ - TYPE_USER_CREATABLE) + OBJECT_CLASS_CHECK(UserCreatableClass, (klass), TYPE_USER_CREATABLE) #define USER_CREATABLE_GET_CLASS(obj) \ - OBJECT_GET_CLASS(UserCreatableClass, (obj), \ - TYPE_USER_CREATABLE) + OBJECT_GET_CLASS(UserCreatableClass, (obj), TYPE_USER_CREATABLE) #define USER_CREATABLE(obj) \ - INTERFACE_CHECK(UserCreatable, (obj), \ - TYPE_USER_CREATABLE) - + INTERFACE_CHECK(UserCreatable, (obj), TYPE_USER_CREATABLE) +#define IS_USER_CREATABLE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_USER_CREATABLE) +#define IS_USER_CREATABLE_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_USER_CREATABLE) typedef struct UserCreatable { /* <private> */ diff --git a/include/sysemu/hostmem.h b/include/sysemu/hostmem.h index 6e6bd2c1cb..56900fd94d 100644 --- a/include/sysemu/hostmem.h +++ b/include/sysemu/hostmem.h @@ -26,6 +26,12 @@ OBJECT_GET_CLASS(HostMemoryBackendClass, (obj), TYPE_MEMORY_BACKEND) #define MEMORY_BACKEND_CLASS(klass) \ OBJECT_CLASS_CHECK(HostMemoryBackendClass, (klass), TYPE_MEMORY_BACKEND) +#define IS_MEMORY_BACKEND(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_MEMORY_BACKEND) + +#define TYPE_MEMORY_BACKEND_RAM "memory-backend-ram" +#define IS_MEMORY_BACKEND_RAM(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_MEMORY_BACKEND_RAM) typedef struct HostMemoryBackend HostMemoryBackend; typedef struct HostMemoryBackendClass HostMemoryBackendClass; diff --git a/include/sysemu/tpm_backend.h b/include/sysemu/tpm_backend.h index 14488820f6..dce31d1243 100644 --- a/include/sysemu/tpm_backend.h +++ b/include/sysemu/tpm_backend.h @@ -26,6 +26,8 @@ OBJECT_GET_CLASS(TPMBackendClass, (obj), TYPE_TPM_BACKEND) #define TPM_BACKEND_CLASS(klass) \ OBJECT_CLASS_CHECK(TPMBackendClass, (klass), TYPE_TPM_BACKEND) +#define IS_TPM_BACKEND_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_TPM_BACKEND) typedef struct TPMBackendClass TPMBackendClass; typedef struct TPMBackend TPMBackend; diff --git a/target/alpha/cpu-qom.h b/target/alpha/cpu-qom.h index bae4945344..e0da42660b 100644 --- a/target/alpha/cpu-qom.h +++ b/target/alpha/cpu-qom.h @@ -30,6 +30,8 @@ OBJECT_CHECK(AlphaCPU, (obj), TYPE_ALPHA_CPU) #define ALPHA_CPU_GET_CLASS(obj) \ OBJECT_GET_CLASS(AlphaCPUClass, (obj), TYPE_ALPHA_CPU) +#define IS_ALPHA_CPU_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_ALPHA_CPU) /** * AlphaCPUClass: diff --git a/target/arm/cpu-qom.h b/target/arm/cpu-qom.h index d135ff8e06..41fb03f6ab 100644 --- a/target/arm/cpu-qom.h +++ b/target/arm/cpu-qom.h @@ -32,6 +32,8 @@ struct arm_boot_info; OBJECT_CHECK(ARMCPU, (obj), TYPE_ARM_CPU) #define ARM_CPU_GET_CLASS(obj) \ OBJECT_GET_CLASS(ARMCPUClass, (obj), TYPE_ARM_CPU) +#define IS_ARM_CPU_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_ARM_CPU) #define TYPE_ARM_MAX_CPU "max-" TYPE_ARM_CPU @@ -57,7 +59,9 @@ typedef struct ARMCPU ARMCPU; #define AARCH64_CPU_CLASS(klass) \ OBJECT_CLASS_CHECK(AArch64CPUClass, (klass), TYPE_AARCH64_CPU) #define AARCH64_CPU_GET_CLASS(obj) \ - OBJECT_GET_CLASS(AArch64CPUClass, (obj), TYPE_AArch64_CPU) + OBJECT_GET_CLASS(AArch64CPUClass, (obj), TYPE_AARCH64_CPU) +#define IS_AARCH64_CPU(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_AARCH64_CPU) typedef struct AArch64CPUClass { /*< private >*/ diff --git a/target/cris/cpu-qom.h b/target/cris/cpu-qom.h index 7556e9f97e..8c0d024d61 100644 --- a/target/cris/cpu-qom.h +++ b/target/cris/cpu-qom.h @@ -30,6 +30,8 @@ OBJECT_CHECK(CRISCPU, (obj), TYPE_CRIS_CPU) #define CRIS_CPU_GET_CLASS(obj) \ OBJECT_GET_CLASS(CRISCPUClass, (obj), TYPE_CRIS_CPU) +#define IS_CRIS_CPU_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_CRIS_CPU) /** * CRISCPUClass: diff --git a/target/lm32/cpu-qom.h b/target/lm32/cpu-qom.h index b423d2564b..d67eab1967 100644 --- a/target/lm32/cpu-qom.h +++ b/target/lm32/cpu-qom.h @@ -30,6 +30,8 @@ OBJECT_CHECK(LM32CPU, (obj), TYPE_LM32_CPU) #define LM32_CPU_GET_CLASS(obj) \ OBJECT_GET_CLASS(LM32CPUClass, (obj), TYPE_LM32_CPU) +#define IS_LM32_CPU_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_LM32_CPU) /** * LM32CPUClass: diff --git a/target/m68k/cpu-qom.h b/target/m68k/cpu-qom.h index 9885bba317..b09d1b98d6 100644 --- a/target/m68k/cpu-qom.h +++ b/target/m68k/cpu-qom.h @@ -30,6 +30,8 @@ OBJECT_CHECK(M68kCPU, (obj), TYPE_M68K_CPU) #define M68K_CPU_GET_CLASS(obj) \ OBJECT_GET_CLASS(M68kCPUClass, (obj), TYPE_M68K_CPU) +#define IS_M68K_CPU_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_M68K_CPU) /** * M68kCPUClass: diff --git a/target/moxie/cpu.h b/target/moxie/cpu.h index d40f1e6c45..e1772655aa 100644 --- a/target/moxie/cpu.h +++ b/target/moxie/cpu.h @@ -72,6 +72,8 @@ typedef struct CPUMoxieState { OBJECT_CHECK(MoxieCPU, (obj), TYPE_MOXIE_CPU) #define MOXIE_CPU_GET_CLASS(obj) \ OBJECT_GET_CLASS(MoxieCPUClass, (obj), TYPE_MOXIE_CPU) +#define IS_MOXIE_CPU_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_MOXIE_CPU) /** * MoxieCPUClass: diff --git a/target/openrisc/cpu.h b/target/openrisc/cpu.h index f1b31bc24a..e533088fc1 100644 --- a/target/openrisc/cpu.h +++ b/target/openrisc/cpu.h @@ -39,6 +39,8 @@ struct OpenRISCCPU; OBJECT_CHECK(OpenRISCCPU, (obj), TYPE_OPENRISC_CPU) #define OPENRISC_CPU_GET_CLASS(obj) \ OBJECT_GET_CLASS(OpenRISCCPUClass, (obj), TYPE_OPENRISC_CPU) +#define IS_OPENRISC_CPU_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_OPENRISC_CPU) /** * OpenRISCCPUClass: diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index d4f36295f0..efef337d80 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -181,6 +181,8 @@ struct CPURISCVState { OBJECT_CHECK(RISCVCPU, (obj), TYPE_RISCV_CPU) #define RISCV_CPU_GET_CLASS(obj) \ OBJECT_GET_CLASS(RISCVCPUClass, (obj), TYPE_RISCV_CPU) +#define IS_RISCV_CPU_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_RISCV_CPU) /** * RISCVCPUClass: diff --git a/target/tricore/cpu-qom.h b/target/tricore/cpu-qom.h index 6a69756126..01f20f2601 100644 --- a/target/tricore/cpu-qom.h +++ b/target/tricore/cpu-qom.h @@ -29,6 +29,8 @@ OBJECT_CHECK(TriCoreCPU, (obj), TYPE_TRICORE_CPU) #define TRICORE_CPU_GET_CLASS(obj) \ OBJECT_GET_CLASS(TriCoreCPUClass, (obj), TYPE_TRICORE_CPU) +#define IS_TRICORE_CPU_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_TRICORE_CPU) typedef struct TriCoreCPUClass { /*< private >*/ diff --git a/target/unicore32/cpu-qom.h b/target/unicore32/cpu-qom.h index bc68e78045..5c0ea564c4 100644 --- a/target/unicore32/cpu-qom.h +++ b/target/unicore32/cpu-qom.h @@ -21,6 +21,8 @@ OBJECT_CHECK(UniCore32CPU, (obj), TYPE_UNICORE32_CPU) #define UNICORE32_CPU_GET_CLASS(obj) \ OBJECT_GET_CLASS(UniCore32CPUClass, (obj), TYPE_UNICORE32_CPU) +#define IS_UNICORE32_CPU_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_UNICORE32_CPU) /** * UniCore32CPUClass: diff --git a/target/xtensa/cpu-qom.h b/target/xtensa/cpu-qom.h index 403bd95721..08aed31954 100644 --- a/target/xtensa/cpu-qom.h +++ b/target/xtensa/cpu-qom.h @@ -39,6 +39,8 @@ OBJECT_CHECK(XtensaCPU, (obj), TYPE_XTENSA_CPU) #define XTENSA_CPU_GET_CLASS(obj) \ OBJECT_GET_CLASS(XtensaCPUClass, (obj), TYPE_XTENSA_CPU) +#define IS_XTENSA_CPU_CLASS(klass) \ + object_class_dynamic_cast(OBJECT_CLASS(klass), TYPE_XTENSA_CPU) typedef struct XtensaConfig XtensaConfig; diff --git a/backends/hostmem-ram.c b/backends/hostmem-ram.c index 7ddd08d370..d0866954dc 100644 --- a/backends/hostmem-ram.c +++ b/backends/hostmem-ram.c @@ -14,9 +14,6 @@ #include "qapi/error.h" #include "qom/object_interfaces.h" -#define TYPE_MEMORY_BACKEND_RAM "memory-backend-ram" - - static void ram_backend_memory_alloc(HostMemoryBackend *backend, Error **errp) { diff --git a/chardev/char.c b/chardev/char.c index 76d866e6fe..68bfd29454 100644 --- a/chardev/char.c +++ b/chardev/char.c @@ -496,7 +496,7 @@ static const ChardevClass *char_get_class(const char *driver, Error **errp) oc = object_class_by_name(typename); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_CHARDEV)) { + if (!IS_CHARDEV_CLASS(oc)) { error_setg(errp, "'%s' is not a valid char driver name", driver); return NULL; } diff --git a/crypto/tlssession.c b/crypto/tlssession.c index 66a6fbe19c..b2170fae09 100644 --- a/crypto/tlssession.c +++ b/crypto/tlssession.c @@ -138,8 +138,7 @@ qcrypto_tls_session_new(QCryptoTLSCreds *creds, goto error; } - if (object_dynamic_cast(OBJECT(creds), - TYPE_QCRYPTO_TLS_CREDS_ANON)) { + if (IS_QCRYPTO_TLS_CREDS_ANON(creds)) { QCryptoTLSCredsAnon *acreds = QCRYPTO_TLS_CREDS_ANON(creds); char *prio; @@ -174,8 +173,7 @@ qcrypto_tls_session_new(QCryptoTLSCreds *creds, gnutls_strerror(ret)); goto error; } - } else if (object_dynamic_cast(OBJECT(creds), - TYPE_QCRYPTO_TLS_CREDS_PSK)) { + } else if (IS_QCRYPTO_TLS_CREDS_PSK(creds)) { QCryptoTLSCredsPSK *pcreds = QCRYPTO_TLS_CREDS_PSK(creds); char *prio; @@ -210,8 +208,7 @@ qcrypto_tls_session_new(QCryptoTLSCreds *creds, gnutls_strerror(ret)); goto error; } - } else if (object_dynamic_cast(OBJECT(creds), - TYPE_QCRYPTO_TLS_CREDS_X509)) { + } else if (IS_QCRYPTO_TLS_CREDS_X509(creds)) { QCryptoTLSCredsX509 *tcreds = QCRYPTO_TLS_CREDS_X509(creds); const char *prio = creds->priority; if (!prio) { @@ -397,16 +394,13 @@ int qcrypto_tls_session_check_credentials(QCryptoTLSSession *session, Error **errp) { - if (object_dynamic_cast(OBJECT(session->creds), - TYPE_QCRYPTO_TLS_CREDS_ANON)) { + if (IS_QCRYPTO_TLS_CREDS_ANON(session->creds)) { trace_qcrypto_tls_session_check_creds(session, "nop"); return 0; - } else if (object_dynamic_cast(OBJECT(session->creds), - TYPE_QCRYPTO_TLS_CREDS_PSK)) { + } else if (IS_QCRYPTO_TLS_CREDS_PSK(session->creds)) { trace_qcrypto_tls_session_check_creds(session, "nop"); return 0; - } else if (object_dynamic_cast(OBJECT(session->creds), - TYPE_QCRYPTO_TLS_CREDS_X509)) { + } else if (IS_QCRYPTO_TLS_CREDS_X509(session->creds)) { if (session->creds->verifyPeer) { int ret = qcrypto_tls_session_check_certificate(session, errp); diff --git a/exec.c b/exec.c index 6826c8337d..c4427bb925 100644 --- a/exec.c +++ b/exec.c @@ -1673,7 +1673,7 @@ static int find_max_supported_pagesize(Object *obj, void *opaque) { long *hpsize_min = opaque; - if (object_dynamic_cast(obj, TYPE_MEMORY_BACKEND)) { + if (IS_MEMORY_BACKEND(obj)) { long hpsize = host_memory_backend_pagesize(MEMORY_BACKEND(obj)); if (hpsize < *hpsize_min) { diff --git a/hmp.c b/hmp.c index 61ef120423..089f2aabe1 100644 --- a/hmp.c +++ b/hmp.c @@ -906,7 +906,7 @@ static int hmp_info_irq_foreach(Object *obj, void *opaque) InterruptStatsProviderClass *k; Monitor *mon = opaque; - if (object_dynamic_cast(obj, TYPE_INTERRUPT_STATS_PROVIDER)) { + if (IS_INTERRUPT_STATS_PROVIDER(obj)) { intc = INTERRUPT_STATS_PROVIDER(obj); k = INTERRUPT_STATS_PROVIDER_GET_CLASS(obj); uint64_t *irq_counts; @@ -944,7 +944,7 @@ static int hmp_info_pic_foreach(Object *obj, void *opaque) InterruptStatsProviderClass *k; Monitor *mon = opaque; - if (object_dynamic_cast(obj, TYPE_INTERRUPT_STATS_PROVIDER)) { + if (IS_INTERRUPT_STATS_PROVIDER(obj)) { intc = INTERRUPT_STATS_PROVIDER(obj); k = INTERRUPT_STATS_PROVIDER_GET_CLASS(obj); if (k->print_info) { diff --git a/hw/acpi/ich9.c b/hw/acpi/ich9.c index c5d8646abc..c09c63e5f0 100644 --- a/hw/acpi/ich9.c +++ b/hw/acpi/ich9.c @@ -488,15 +488,14 @@ void ich9_pm_device_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, { ICH9LPCState *lpc = ICH9_LPC_DEVICE(hotplug_dev); - if (lpc->pm.acpi_memory_hotplug.is_enabled && - object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { - if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) { + if (lpc->pm.acpi_memory_hotplug.is_enabled && IS_PC_DIMM(dev)) { + if (IS_NVDIMM(dev)) { nvdimm_acpi_plug_cb(hotplug_dev, dev); } else { acpi_memory_plug_cb(hotplug_dev, &lpc->pm.acpi_memory_hotplug, dev, errp); } - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { + } else if (IS_CPU(dev)) { if (lpc->pm.cpu_hotplug_legacy) { legacy_acpi_cpu_plug_cb(hotplug_dev, &lpc->pm.gpe_cpu, dev, errp); } else { @@ -513,13 +512,11 @@ void ich9_pm_device_unplug_request_cb(HotplugHandler *hotplug_dev, { ICH9LPCState *lpc = ICH9_LPC_DEVICE(hotplug_dev); - if (lpc->pm.acpi_memory_hotplug.is_enabled && - object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (lpc->pm.acpi_memory_hotplug.is_enabled && IS_PC_DIMM(dev)) { acpi_memory_unplug_request_cb(hotplug_dev, &lpc->pm.acpi_memory_hotplug, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU) && - !lpc->pm.cpu_hotplug_legacy) { + } else if (IS_CPU(dev) && !lpc->pm.cpu_hotplug_legacy) { acpi_cpu_unplug_request_cb(hotplug_dev, &lpc->pm.cpuhp_state, dev, errp); } else { @@ -533,11 +530,9 @@ void ich9_pm_device_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, { ICH9LPCState *lpc = ICH9_LPC_DEVICE(hotplug_dev); - if (lpc->pm.acpi_memory_hotplug.is_enabled && - object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (lpc->pm.acpi_memory_hotplug.is_enabled && IS_PC_DIMM(dev)) { acpi_memory_unplug_cb(&lpc->pm.acpi_memory_hotplug, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU) && - !lpc->pm.cpu_hotplug_legacy) { + } else if (IS_CPU(dev) && !lpc->pm.cpu_hotplug_legacy) { acpi_cpu_unplug_cb(&lpc->pm.cpuhp_state, dev, errp); } else { error_setg(errp, "acpi: device unplug for not supported device" diff --git a/hw/acpi/ipmi.c b/hw/acpi/ipmi.c index 651e2e94ea..06c2aee1b0 100644 --- a/hw/acpi/ipmi.c +++ b/hw/acpi/ipmi.c @@ -90,15 +90,13 @@ void build_acpi_ipmi_devices(Aml *scope, BusState *bus) IPMIInterface *ii; IPMIInterfaceClass *iic; IPMIFwInfo info; - Object *obj = object_dynamic_cast(OBJECT(kid->child), - TYPE_IPMI_INTERFACE); - if (!obj) { + if (!IS_IPMI_INTERFACE(kid->child)) { continue; } - ii = IPMI_INTERFACE(obj); - iic = IPMI_INTERFACE_GET_CLASS(obj); + ii = IPMI_INTERFACE(kid->child); + iic = IPMI_INTERFACE_GET_CLASS(ii); memset(&info, 0, sizeof(info)); iic->get_fwinfo(ii, &info); aml_append(scope, aml_ipmi_device(&info)); diff --git a/hw/acpi/nvdimm.c b/hw/acpi/nvdimm.c index 27eeb6609f..03ba0402af 100644 --- a/hw/acpi/nvdimm.c +++ b/hw/acpi/nvdimm.c @@ -37,7 +37,7 @@ static int nvdimm_device_list(Object *obj, void *opaque) { GSList **list = opaque; - if (object_dynamic_cast(obj, TYPE_NVDIMM)) { + if (IS_NVDIMM(obj)) { *list = g_slist_append(*list, DEVICE(obj)); } diff --git a/hw/acpi/piix4.c b/hw/acpi/piix4.c index e330f24c71..72593e4d2f 100644 --- a/hw/acpi/piix4.c +++ b/hw/acpi/piix4.c @@ -375,17 +375,16 @@ static void piix4_device_plug_cb(HotplugHandler *hotplug_dev, { PIIX4PMState *s = PIIX4_PM(hotplug_dev); - if (s->acpi_memory_hotplug.is_enabled && - object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { - if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) { + if (s->acpi_memory_hotplug.is_enabled && IS_PC_DIMM(dev)) { + if (IS_NVDIMM(dev)) { nvdimm_acpi_plug_cb(hotplug_dev, dev); } else { acpi_memory_plug_cb(hotplug_dev, &s->acpi_memory_hotplug, dev, errp); } - } else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) { + } else if (IS_PCI_DEVICE(dev)) { acpi_pcihp_device_plug_cb(hotplug_dev, &s->acpi_pci_hotplug, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { + } else if (IS_CPU(dev)) { if (s->cpu_hotplug_legacy) { legacy_acpi_cpu_plug_cb(hotplug_dev, &s->gpe_cpu, dev, errp); } else { @@ -402,15 +401,13 @@ static void piix4_device_unplug_request_cb(HotplugHandler *hotplug_dev, { PIIX4PMState *s = PIIX4_PM(hotplug_dev); - if (s->acpi_memory_hotplug.is_enabled && - object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (s->acpi_memory_hotplug.is_enabled && IS_PC_DIMM(dev)) { acpi_memory_unplug_request_cb(hotplug_dev, &s->acpi_memory_hotplug, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) { + } else if (IS_PCI_DEVICE(dev)) { acpi_pcihp_device_unplug_cb(hotplug_dev, &s->acpi_pci_hotplug, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU) && - !s->cpu_hotplug_legacy) { + } else if (IS_CPU(dev) && !s->cpu_hotplug_legacy) { acpi_cpu_unplug_request_cb(hotplug_dev, &s->cpuhp_state, dev, errp); } else { error_setg(errp, "acpi: device unplug request for not supported device" @@ -423,11 +420,9 @@ static void piix4_device_unplug_cb(HotplugHandler *hotplug_dev, { PIIX4PMState *s = PIIX4_PM(hotplug_dev); - if (s->acpi_memory_hotplug.is_enabled && - object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (s->acpi_memory_hotplug.is_enabled && IS_PC_DIMM(dev)) { acpi_memory_unplug_cb(&s->acpi_memory_hotplug, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU) && - !s->cpu_hotplug_legacy) { + } else if (IS_CPU(dev) && !s->cpu_hotplug_legacy) { acpi_cpu_unplug_cb(&s->cpuhp_state, dev, errp); } else { error_setg(errp, "acpi: device unplug for not supported device" diff --git a/hw/arm/boot.c b/hw/arm/boot.c index 20c71d7d96..2d55b28589 100644 --- a/hw/arm/boot.c +++ b/hw/arm/boot.c @@ -817,7 +817,7 @@ static void load_image_to_fw_cfg(FWCfgState *fw_cfg, uint16_t size_key, static int do_arm_linux_init(Object *obj, void *opaque) { - if (object_dynamic_cast(obj, TYPE_ARM_LINUX_BOOT_IF)) { + if (IS_ARM_LINUX_BOOT_IF(obj)) { ARMLinuxBootIf *albif = ARM_LINUX_BOOT_IF(obj); ARMLinuxBootIfClass *albifc = ARM_LINUX_BOOT_IF_GET_CLASS(obj); struct arm_boot_info *info = opaque; diff --git a/hw/arm/virt.c b/hw/arm/virt.c index 0b57f87abc..507eccfd56 100644 --- a/hw/arm/virt.c +++ b/hw/arm/virt.c @@ -1727,7 +1727,7 @@ static void virt_machine_device_plug_cb(HotplugHandler *hotplug_dev, VirtMachineState *vms = VIRT_MACHINE(hotplug_dev); if (vms->platform_bus_dev) { - if (object_dynamic_cast(OBJECT(dev), TYPE_SYS_BUS_DEVICE)) { + if (IS_SYS_BUS_DEVICE(dev)) { platform_bus_link_device(PLATFORM_BUS_DEVICE(vms->platform_bus_dev), SYS_BUS_DEVICE(dev)); } @@ -1737,7 +1737,7 @@ static void virt_machine_device_plug_cb(HotplugHandler *hotplug_dev, static HotplugHandler *virt_machine_get_hotplug_handler(MachineState *machine, DeviceState *dev) { - if (object_dynamic_cast(OBJECT(dev), TYPE_SYS_BUS_DEVICE)) { + if (IS_SYS_BUS_DEVICE(dev)) { return HOTPLUG_HANDLER(machine); } diff --git a/hw/char/spapr_vty.c b/hw/char/spapr_vty.c index 6748334ded..2cc6e6c800 100644 --- a/hw/char/spapr_vty.c +++ b/hw/char/spapr_vty.c @@ -19,7 +19,9 @@ typedef struct VIOsPAPRVTYDevice { #define TYPE_VIO_SPAPR_VTY_DEVICE "spapr-vty" #define VIO_SPAPR_VTY_DEVICE(obj) \ - OBJECT_CHECK(VIOsPAPRVTYDevice, (obj), TYPE_VIO_SPAPR_VTY_DEVICE) + OBJECT_CHECK(VIOsPAPRVTYDevice, (obj), TYPE_VIO_SPAPR_VTY_DEVICE) +#define IS_VIO_SPAPR_VTY_DEVICE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_VIO_SPAPR_VTY_DEVICE) static int vty_can_receive(void *opaque) { @@ -225,7 +227,7 @@ VIOsPAPRDevice *spapr_vty_get_default(VIOsPAPRBus *bus) DeviceState *iter = kid->child; /* Only look at VTY devices */ - if (!object_dynamic_cast(OBJECT(iter), TYPE_VIO_SPAPR_VTY_DEVICE)) { + if (!IS_VIO_SPAPR_VTY_DEVICE(iter)) { continue; } @@ -260,7 +262,7 @@ VIOsPAPRDevice *vty_lookup(sPAPRMachineState *spapr, target_ulong reg) return spapr_vty_get_default(spapr->vio_bus); } - if (!object_dynamic_cast(OBJECT(sdev), TYPE_VIO_SPAPR_VTY_DEVICE)) { + if (!IS_VIO_SPAPR_VTY_DEVICE(sdev)) { return NULL; } diff --git a/hw/core/qdev-properties.c b/hw/core/qdev-properties.c index 35072dec1e..4b74a2752a 100644 --- a/hw/core/qdev-properties.c +++ b/hw/core/qdev-properties.c @@ -1226,8 +1226,7 @@ int qdev_prop_check_globals(void) continue; } oc = object_class_by_name(prop->driver); - oc = object_class_dynamic_cast(oc, TYPE_DEVICE); - if (!oc) { + if (!IS_DEVICE_CLASS(oc)) { warn_report("global %s.%s has invalid class name", prop->driver, prop->property); ret = 1; diff --git a/hw/core/qdev.c b/hw/core/qdev.c index 046d8f1f76..41edce3dc3 100644 --- a/hw/core/qdev.c +++ b/hw/core/qdev.c @@ -149,7 +149,7 @@ DeviceState *qdev_try_create(BusState *bus, const char *type) * being put onto a bus should be created with object_new(TYPE_FOO), * not qdev_create(NULL, TYPE_FOO). */ - g_assert(object_dynamic_cast(OBJECT(dev), TYPE_SYS_BUS_DEVICE)); + g_assert(IS_SYS_BUS_DEVICE(dev)); bus = sysbus_get_default(); } @@ -218,15 +218,13 @@ void qdev_set_legacy_instance_id(DeviceState *dev, int alias_id, HotplugHandler *qdev_get_machine_hotplug_handler(DeviceState *dev) { - MachineState *machine; - MachineClass *mc; Object *m_obj = qdev_get_machine(); - if (object_dynamic_cast(m_obj, TYPE_MACHINE)) { - machine = MACHINE(m_obj); - mc = MACHINE_GET_CLASS(machine); + if (IS_MACHINE(m_obj)) { + MachineClass *mc = MACHINE_GET_CLASS(m_obj); + if (mc->get_hotplug_handler) { - return mc->get_hotplug_handler(machine, dev); + return mc->get_hotplug_handler(MACHINE(m_obj), dev); } } diff --git a/hw/core/sysbus.c b/hw/core/sysbus.c index 7ac36ad3e7..87b7b0f203 100644 --- a/hw/core/sysbus.c +++ b/hw/core/sysbus.c @@ -35,18 +35,13 @@ typedef struct SysBusFind { static int find_sysbus_device(Object *obj, void *opaque) { SysBusFind *find = opaque; - Object *dev; - SysBusDevice *sbdev; - dev = object_dynamic_cast(obj, TYPE_SYS_BUS_DEVICE); - sbdev = (SysBusDevice *)dev; - - if (!sbdev) { + if (!IS_SYS_BUS_DEVICE(obj)) { /* Container, traverse it for children */ return object_child_foreach(obj, find_sysbus_device, opaque); } - find->func(sbdev, find->opaque); + find->func(SYS_BUS_DEVICE(obj), find->opaque); return 0; } diff --git a/hw/display/vga-pci.c b/hw/display/vga-pci.c index e9e62eac70..e576473943 100644 --- a/hw/display/vga-pci.c +++ b/hw/display/vga-pci.c @@ -44,7 +44,6 @@ typedef struct PCIVGAState { MemoryRegion mrs[3]; } PCIVGAState; -#define TYPE_PCI_VGA "pci-vga" #define PCI_VGA(obj) OBJECT_CHECK(PCIVGAState, (obj), TYPE_PCI_VGA) static const VMStateDescription vmstate_vga_pci = { diff --git a/hw/i386/pc.c b/hw/i386/pc.c index 03148450c8..ce9799bfc8 100644 --- a/hw/i386/pc.c +++ b/hw/i386/pc.c @@ -1680,7 +1680,6 @@ static void pc_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, { const PCMachineState *pcms = PC_MACHINE(hotplug_dev); const PCMachineClass *pcmc = PC_MACHINE_GET_CLASS(pcms); - const bool is_nvdimm = object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM); const uint64_t legacy_align = TARGET_PAGE_SIZE; /* @@ -1694,7 +1693,7 @@ static void pc_memory_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, return; } - if (is_nvdimm && !pcms->acpi_nvdimm_state.is_enabled) { + if (IS_NVDIMM(dev) && !pcms->acpi_nvdimm_state.is_enabled) { error_setg(errp, "nvdimm is not enabled: missing 'nvdimm' in '-M'"); return; } @@ -1709,14 +1708,13 @@ static void pc_memory_plug(HotplugHandler *hotplug_dev, HotplugHandlerClass *hhc; Error *local_err = NULL; PCMachineState *pcms = PC_MACHINE(hotplug_dev); - bool is_nvdimm = object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM); pc_dimm_plug(dev, MACHINE(pcms), &local_err); if (local_err) { goto out; } - if (is_nvdimm) { + if (IS_NVDIMM(dev)) { nvdimm_plug(&pcms->acpi_nvdimm_state); } @@ -1744,7 +1742,7 @@ static void pc_memory_unplug_request(HotplugHandler *hotplug_dev, goto out; } - if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) { + if (IS_NVDIMM(dev)) { error_setg(&local_err, "nvdimm device hot unplug is not supported yet."); goto out; @@ -2009,9 +2007,9 @@ static void pc_cpu_pre_plug(HotplugHandler *hotplug_dev, static void pc_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (IS_PC_DIMM(dev)) { pc_memory_pre_plug(hotplug_dev, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { + } else if (IS_CPU(dev)) { pc_cpu_pre_plug(hotplug_dev, dev, errp); } } @@ -2019,9 +2017,9 @@ static void pc_machine_device_pre_plug_cb(HotplugHandler *hotplug_dev, static void pc_machine_device_plug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (IS_PC_DIMM(dev)) { pc_memory_plug(hotplug_dev, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { + } else if (IS_CPU(dev)) { pc_cpu_plug(hotplug_dev, dev, errp); } } @@ -2029,9 +2027,9 @@ static void pc_machine_device_plug_cb(HotplugHandler *hotplug_dev, static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (IS_PC_DIMM(dev)) { pc_memory_unplug_request(hotplug_dev, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { + } else if (IS_CPU(dev)) { pc_cpu_unplug_request_cb(hotplug_dev, dev, errp); } else { error_setg(errp, "acpi: device unplug request for not supported device" @@ -2042,9 +2040,9 @@ static void pc_machine_device_unplug_request_cb(HotplugHandler *hotplug_dev, static void pc_machine_device_unplug_cb(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (IS_PC_DIMM(dev)) { pc_memory_unplug(hotplug_dev, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { + } else if (IS_CPU(dev)) { pc_cpu_unplug_cb(hotplug_dev, dev, errp); } else { error_setg(errp, "acpi: device unplug for not supported device" @@ -2055,8 +2053,7 @@ static void pc_machine_device_unplug_cb(HotplugHandler *hotplug_dev, static HotplugHandler *pc_get_hotpug_handler(MachineState *machine, DeviceState *dev) { - if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) || - object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { + if (IS_PC_DIMM(dev) || IS_CPU(dev)) { return HOTPLUG_HANDLER(machine); } diff --git a/hw/i386/xen/xen-hvm.c b/hw/i386/xen/xen-hvm.c index 935a3676c8..02c77a3947 100644 --- a/hw/i386/xen/xen-hvm.c +++ b/hw/i386/xen/xen-hvm.c @@ -574,7 +574,7 @@ static void xen_device_realize(DeviceListener *listener, { XenIOState *state = container_of(listener, XenIOState, device_listener); - if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) { + if (IS_PCI_DEVICE(dev)) { PCIDevice *pci_dev = PCI_DEVICE(dev); XenPciDevice *xendev = g_new(XenPciDevice, 1); @@ -592,7 +592,7 @@ static void xen_device_unrealize(DeviceListener *listener, { XenIOState *state = container_of(listener, XenIOState, device_listener); - if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) { + if (IS_PCI_DEVICE(dev)) { PCIDevice *pci_dev = PCI_DEVICE(dev); XenPciDevice *xendev, *next; diff --git a/hw/ipmi/isa_ipmi_bt.c b/hw/ipmi/isa_ipmi_bt.c index 8bbb1fa785..d4709fa7b5 100644 --- a/hw/ipmi/isa_ipmi_bt.c +++ b/hw/ipmi/isa_ipmi_bt.c @@ -380,10 +380,7 @@ static void ipmi_bt_init(IPMIInterface *ii, Error **errp) memory_region_init_io(&ib->io, NULL, &ipmi_bt_io_ops, ii, "ipmi-bt", 3); } - -#define TYPE_ISA_IPMI_BT "isa-ipmi-bt" -#define ISA_IPMI_BT(obj) OBJECT_CHECK(ISAIPMIBTDevice, (obj), \ - TYPE_ISA_IPMI_BT) +#define ISA_IPMI_BT(obj) OBJECT_CHECK(ISAIPMIBTDevice, (obj), TYPE_ISA_IPMI_BT) typedef struct ISAIPMIBTDevice { ISADevice dev; diff --git a/hw/mem/memory-device.c b/hw/mem/memory-device.c index 6de4f70bb4..58451da4dc 100644 --- a/hw/mem/memory-device.c +++ b/hw/mem/memory-device.c @@ -39,7 +39,7 @@ static int memory_device_build_list(Object *obj, void *opaque) { GSList **list = opaque; - if (object_dynamic_cast(obj, TYPE_MEMORY_DEVICE)) { + if (IS_MEMORY_DEVICE(obj)) { DeviceState *dev = DEVICE(obj); if (dev->realized) { /* only realized memory devices matter */ *list = g_slist_insert_sorted(*list, dev, memory_device_addr_sort); @@ -54,7 +54,7 @@ static int memory_device_used_region_size(Object *obj, void *opaque) { uint64_t *size = opaque; - if (object_dynamic_cast(obj, TYPE_MEMORY_DEVICE)) { + if (IS_MEMORY_DEVICE(obj)) { const DeviceState *dev = DEVICE(obj); const MemoryDeviceState *md = MEMORY_DEVICE(obj); const MemoryDeviceClass *mdc = MEMORY_DEVICE_GET_CLASS(obj); @@ -226,7 +226,7 @@ static int memory_device_plugged_size(Object *obj, void *opaque) { uint64_t *size = opaque; - if (object_dynamic_cast(obj, TYPE_MEMORY_DEVICE)) { + if (IS_MEMORY_DEVICE(obj)) { const DeviceState *dev = DEVICE(obj); const MemoryDeviceState *md = MEMORY_DEVICE(obj); const MemoryDeviceClass *mdc = MEMORY_DEVICE_GET_CLASS(obj); diff --git a/hw/mem/pc-dimm.c b/hw/mem/pc-dimm.c index fb6bcaedc4..35524f7535 100644 --- a/hw/mem/pc-dimm.c +++ b/hw/mem/pc-dimm.c @@ -101,7 +101,7 @@ static int pc_dimm_slot2bitmap(Object *obj, void *opaque) { unsigned long *bitmap = opaque; - if (object_dynamic_cast(obj, TYPE_PC_DIMM)) { + if (IS_PC_DIMM(obj)) { DeviceState *dev = DEVICE(obj); if (dev->realized) { /* count only realized DIMMs */ PCDIMMDevice *d = PC_DIMM(obj); @@ -272,7 +272,7 @@ static void pc_dimm_md_fill_device_info(const MemoryDeviceState *md, NULL); di->memdev = object_get_canonical_path(OBJECT(dimm->hostmem)); - if (object_dynamic_cast(OBJECT(dev), TYPE_NVDIMM)) { + if (IS_NVDIMM(dev)) { info->u.nvdimm.data = di; info->type = MEMORY_DEVICE_INFO_KIND_NVDIMM; } else { diff --git a/hw/pci/pci.c b/hw/pci/pci.c index 51d0dec466..8163032098 100644 --- a/hw/pci/pci.c +++ b/hw/pci/pci.c @@ -381,7 +381,7 @@ static void pci_root_bus_init(PCIBus *bus, DeviceState *parent, bool pci_bus_is_express(PCIBus *bus) { - return object_dynamic_cast(OBJECT(bus), TYPE_PCIE_BUS); + return IS_PCIE_BUS(bus); } bool pci_bus_is_root(PCIBus *bus) @@ -2484,7 +2484,7 @@ static int pci_qdev_find_recursive(PCIBus *bus, } /* roughly check if given qdev is pci device */ - if (object_dynamic_cast(OBJECT(qdev), TYPE_PCI_DEVICE)) { + if (IS_PCI_DEVICE(qdev)) { *pdev = PCI_DEVICE(qdev); return 0; } diff --git a/hw/ppc/e500.c b/hw/ppc/e500.c index e6747fce28..e7033e87b3 100644 --- a/hw/ppc/e500.c +++ b/hw/ppc/e500.c @@ -211,7 +211,7 @@ static void sysbus_device_create_devtree(SysBusDevice *sbdev, void *opaque) PlatformDevtreeData *data = opaque; bool matched = false; - if (object_dynamic_cast(OBJECT(sbdev), TYPE_ETSEC_COMMON)) { + if (IS_ETSEC_COMMON(sbdev)) { create_devtree_etsec(sbdev, data); matched = true; } diff --git a/hw/ppc/e500plat.c b/hw/ppc/e500plat.c index 963d429cc8..0101b9cf67 100644 --- a/hw/ppc/e500plat.c +++ b/hw/ppc/e500plat.c @@ -49,10 +49,8 @@ static void e500plat_machine_device_plug_cb(HotplugHandler *hotplug_dev, { PPCE500MachineState *pms = PPCE500_MACHINE(hotplug_dev); - if (pms->pbus_dev) { - if (object_dynamic_cast(OBJECT(dev), TYPE_SYS_BUS_DEVICE)) { - platform_bus_link_device(pms->pbus_dev, SYS_BUS_DEVICE(dev)); - } + if (pms->pbus_dev && IS_SYS_BUS_DEVICE(dev)) { + platform_bus_link_device(pms->pbus_dev, SYS_BUS_DEVICE(dev)); } } @@ -60,7 +58,7 @@ static HotplugHandler *e500plat_machine_get_hotpug_handler(MachineState *machine, DeviceState *dev) { - if (object_dynamic_cast(OBJECT(dev), TYPE_SYS_BUS_DEVICE)) { + if (IS_SYS_BUS_DEVICE(dev)) { return HOTPLUG_HANDLER(machine); } diff --git a/hw/ppc/pnv.c b/hw/ppc/pnv.c index 346f5e7aed..70a6cc27a0 100644 --- a/hw/ppc/pnv.c +++ b/hw/ppc/pnv.c @@ -382,11 +382,11 @@ static int pnv_dt_isa_device(DeviceState *dev, void *opaque) ForeachPopulateArgs *args = opaque; ISADevice *d = ISA_DEVICE(dev); - if (object_dynamic_cast(OBJECT(dev), TYPE_MC146818_RTC)) { + if (IS_MC146818_RTC(dev)) { pnv_dt_rtc(d, args->fdt, args->offset); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_ISA_SERIAL)) { + } else if (IS_ISA_SERIAL(dev)) { pnv_dt_serial(d, args->fdt, args->offset); - } else if (object_dynamic_cast(OBJECT(dev), "isa-ipmi-bt")) { + } else if (IS_ISA_IPMI_BT(dev)) { pnv_dt_ipmi_bt(d, args->fdt, args->offset); } else { error_report("unknown isa device %s@i%x", qdev_fw_name(dev), diff --git a/hw/ppc/pnv_xscom.c b/hw/ppc/pnv_xscom.c index 46fae41f32..83d6cb921d 100644 --- a/hw/ppc/pnv_xscom.c +++ b/hw/ppc/pnv_xscom.c @@ -207,7 +207,7 @@ typedef struct ForeachPopulateArgs { static int xscom_dt_child(Object *child, void *opaque) { - if (object_dynamic_cast(child, TYPE_PNV_XSCOM_INTERFACE)) { + if (IS_PNV_XSCOM_INTERFACE(child)) { ForeachPopulateArgs *args = opaque; PnvXScomInterface *xd = PNV_XSCOM_INTERFACE(child); PnvXScomInterfaceClass *xc = PNV_XSCOM_INTERFACE_GET_CLASS(xd); diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 2afb7f437e..5e7fc2a274 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -603,7 +603,7 @@ static int prep_set_cmos_checksum(DeviceState *dev, void *opaque) uint16_t checksum = *(uint16_t *)opaque; ISADevice *rtc; - if (object_dynamic_cast(OBJECT(dev), "mc146818rtc")) { + if (IS_MC146818_RTC(dev)) { rtc = ISA_DEVICE(dev); rtc_set_memory(rtc, 0x2e, checksum & 0xff); rtc_set_memory(rtc, 0x3e, checksum & 0xff); diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c index 98868d893a..027d9007ee 100644 --- a/hw/ppc/spapr.c +++ b/hw/ppc/spapr.c @@ -1708,7 +1708,7 @@ static int spapr_post_load(void *opaque, int version_id) return err; } - if (!object_dynamic_cast(OBJECT(spapr->ics), TYPE_ICS_KVM)) { + if (!IS_ICS_KVM(spapr->ics)) { CPUState *cs; CPU_FOREACH(cs) { PowerPCCPU *cpu = POWERPC_CPU(cs); @@ -3576,9 +3576,9 @@ out: static void spapr_machine_device_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (IS_PC_DIMM(dev)) { spapr_memory_plug(hotplug_dev, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_SPAPR_CPU_CORE)) { + } else if (IS_SPAPR_CPU_CORE(dev)) { spapr_core_plug(hotplug_dev, dev, errp); } } @@ -3586,9 +3586,9 @@ static void spapr_machine_device_plug(HotplugHandler *hotplug_dev, static void spapr_machine_device_unplug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (IS_PC_DIMM(dev)) { spapr_memory_unplug(hotplug_dev, dev); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_SPAPR_CPU_CORE)) { + } else if (IS_SPAPR_CPU_CORE(dev)) { spapr_core_unplug(hotplug_dev, dev); } } @@ -3599,7 +3599,7 @@ static void spapr_machine_device_unplug_request(HotplugHandler *hotplug_dev, sPAPRMachineState *sms = SPAPR_MACHINE(OBJECT(hotplug_dev)); MachineClass *mc = MACHINE_GET_CLASS(sms); - if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (IS_PC_DIMM(dev)) { if (spapr_ovec_test(sms->ov5_cas, OV5_HP_EVT)) { spapr_memory_unplug_request(hotplug_dev, dev, errp); } else { @@ -3611,7 +3611,7 @@ static void spapr_machine_device_unplug_request(HotplugHandler *hotplug_dev, */ error_setg(errp, "Memory hot unplug not supported for this guest"); } - } else if (object_dynamic_cast(OBJECT(dev), TYPE_SPAPR_CPU_CORE)) { + } else if (IS_SPAPR_CPU_CORE(dev)) { if (!mc->has_hotpluggable_cpus) { error_setg(errp, "CPU hot unplug not supported on this machine"); return; @@ -3623,9 +3623,9 @@ static void spapr_machine_device_unplug_request(HotplugHandler *hotplug_dev, static void spapr_machine_device_pre_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM)) { + if (IS_PC_DIMM(dev)) { spapr_memory_pre_plug(hotplug_dev, dev, errp); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_SPAPR_CPU_CORE)) { + } else if (IS_SPAPR_CPU_CORE(dev)) { spapr_core_pre_plug(hotplug_dev, dev, errp); } } @@ -3633,8 +3633,7 @@ static void spapr_machine_device_pre_plug(HotplugHandler *hotplug_dev, static HotplugHandler *spapr_get_hotplug_handler(MachineState *machine, DeviceState *dev) { - if (object_dynamic_cast(OBJECT(dev), TYPE_PC_DIMM) || - object_dynamic_cast(OBJECT(dev), TYPE_SPAPR_CPU_CORE)) { + if (IS_PC_DIMM(dev) || IS_SPAPR_CPU_CORE(dev)) { return HOTPLUG_HANDLER(machine); } return NULL; diff --git a/hw/ppc/spapr_drc.c b/hw/ppc/spapr_drc.c index 2edb7d1e9c..6fba6f557b 100644 --- a/hw/ppc/spapr_drc.c +++ b/hw/ppc/spapr_drc.c @@ -927,7 +927,7 @@ static uint32_t rtas_set_allocation_state(uint32_t idx, uint32_t state) { sPAPRDRConnector *drc = spapr_drc_by_index(idx); - if (!drc || !object_dynamic_cast(OBJECT(drc), TYPE_SPAPR_DRC_LOGICAL)) { + if (!IS_SPAPR_DRC_LOGICAL(drc)) { return RTAS_OUT_NO_SUCH_INDICATOR; } @@ -949,7 +949,7 @@ static uint32_t rtas_set_dr_indicator(uint32_t idx, uint32_t state) { sPAPRDRConnector *drc = spapr_drc_by_index(idx); - if (!drc || !object_dynamic_cast(OBJECT(drc), TYPE_SPAPR_DRC_PHYSICAL)) { + if (!IS_SPAPR_DRC_PHYSICAL(drc)) { return RTAS_OUT_NO_SUCH_INDICATOR; } if ((state != SPAPR_DR_INDICATOR_INACTIVE) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index c2271e6ed4..d9e58b7d29 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -45,6 +45,7 @@ #include "hw/pci/pci_bus.h" #include "hw/pci/pci_ids.h" #include "hw/ppc/spapr_drc.h" +#include "hw/vfio/vfio-common.h" #include "sysemu/device_tree.h" #include "sysemu/kvm.h" #include "sysemu/hostmem.h" @@ -822,7 +823,7 @@ static char *spapr_phb_get_loc_code(sPAPRPHBState *sphb, PCIDevice *pdev) const char *devtype = "qemu"; uint32_t busnr = pci_bus_num(PCI_BUS(qdev_get_parent_bus(DEVICE(pdev)))); - if (object_dynamic_cast(OBJECT(pdev), "vfio-pci")) { + if (IS_VFIO_PCI(pdev)) { buf = spapr_phb_vfio_get_loc_code(sphb, pdev); if (buf) { return buf; @@ -2253,8 +2254,8 @@ static int spapr_switch_one_vga(DeviceState *dev, void *opaque) { bool be = *(bool *)opaque; - if (object_dynamic_cast(OBJECT(dev), "VGA") - || object_dynamic_cast(OBJECT(dev), "secondary-vga")) { + if (IS_PCI_VGA(dev) && + object_property_find(OBJECT(dev), "big-endian-framebuffer", NULL)) { object_property_set_bool(OBJECT(dev), be, "big-endian-framebuffer", &error_abort); } diff --git a/hw/ppc/spapr_pci_vfio.c b/hw/ppc/spapr_pci_vfio.c index 71491dbd28..6bd33e1788 100644 --- a/hw/ppc/spapr_pci_vfio.c +++ b/hw/ppc/spapr_pci_vfio.c @@ -71,7 +71,7 @@ int spapr_phb_vfio_eeh_set_option(sPAPRPHBState *sphb, phb = PCI_HOST_BRIDGE(sphb); pdev = pci_find_device(phb->bus, (addr >> 16) & 0xFF, (addr >> 8) & 0xFF); - if (!pdev || !object_dynamic_cast(OBJECT(pdev), "vfio-pci")) { + if (!IS_VFIO_PCI(pdev)) { return RTAS_OUT_PARAM_ERROR; } @@ -114,7 +114,7 @@ static void spapr_phb_vfio_eeh_clear_dev_msix(PCIBus *bus, void *opaque) { /* Check if the device is VFIO PCI device */ - if (!object_dynamic_cast(OBJECT(pdev), "vfio-pci")) { + if (!IS_VFIO_PCI(pdev)) { return; } diff --git a/hw/rdma/vmw/pvrdma_main.c b/hw/rdma/vmw/pvrdma_main.c index ca5fa8d981..7438b729df 100644 --- a/hw/rdma/vmw/pvrdma_main.c +++ b/hw/rdma/vmw/pvrdma_main.c @@ -34,6 +34,7 @@ #include "standard-headers/rdma/vmw_pvrdma-abi.h" #include "standard-headers/drivers/infiniband/hw/vmw_pvrdma/pvrdma_dev_api.h" #include "pvrdma_qp_ops.h" +#include "sysemu/hostmem.h" static Property pvrdma_dev_properties[] = { DEFINE_PROP_STRING("backend-dev", PVRDMADev, backend_device_name), @@ -563,7 +564,7 @@ static int pvrdma_check_ram_shared(Object *obj, void *opaque) { bool *shared = opaque; - if (object_dynamic_cast(obj, "memory-backend-ram")) { + if (IS_MEMORY_BACKEND_RAM(obj)) { *shared = object_property_get_bool(obj, "share", NULL); } diff --git a/hw/s390x/s390-pci-bus.c b/hw/s390x/s390-pci-bus.c index e3e0ebb7f6..6d667c4c03 100644 --- a/hw/s390x/s390-pci-bus.c +++ b/hw/s390x/s390-pci-bus.c @@ -21,6 +21,7 @@ #include "hw/pci/pci_bus.h" #include "hw/pci/pci_bridge.h" #include "hw/pci/msi.h" +#include "hw/vfio/vfio-common.h" #include "qemu/error-report.h" #ifndef DEBUG_S390PCI_BUS @@ -811,7 +812,7 @@ static void s390_pcihost_hot_plug(HotplugHandler *hotplug_dev, S390PCIBusDevice *pbdev = NULL; S390pciState *s = s390_get_phb(); - if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_BRIDGE)) { + if (IS_PCI_BRIDGE(dev)) { BusState *bus; PCIBridge *pb = PCI_BRIDGE(dev); PCIDevice *pdev = PCI_DEVICE(dev); @@ -837,7 +838,7 @@ static void s390_pcihost_hot_plug(HotplugHandler *hotplug_dev, s->bus_no, 1); } while (pci_get_bus(pdev) && pci_dev_bus_num(pdev)); } - } else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) { + } else if (IS_PCI_DEVICE(dev)) { pdev = PCI_DEVICE(dev); if (pdev->cap_present & QEMU_PCI_CAP_MULTIFUNCTION) { @@ -863,7 +864,7 @@ static void s390_pcihost_hot_plug(HotplugHandler *hotplug_dev, } } - if (object_dynamic_cast(OBJECT(dev), "vfio-pci")) { + if (IS_VFIO_PCI(dev)) { pbdev->fh |= FH_SHM_VFIO; } else { pbdev->fh |= FH_SHM_EMUL; @@ -884,7 +885,7 @@ static void s390_pcihost_hot_plug(HotplugHandler *hotplug_dev, s390_pci_generate_plug_event(HP_EVENT_RESERVED_TO_STANDBY, pbdev->fh, pbdev->fid); } - } else if (object_dynamic_cast(OBJECT(dev), TYPE_S390_PCI_DEVICE)) { + } else if (IS_S390_PCI_DEVICE(dev)) { pbdev = S390_PCI_DEVICE(dev); if (!s390_pci_alloc_idx(s, pbdev)) { @@ -923,10 +924,10 @@ static void s390_pcihost_hot_unplug(HotplugHandler *hotplug_dev, S390PCIBusDevice *pbdev = NULL; S390pciState *s = s390_get_phb(); - if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_BRIDGE)) { + if (IS_PCI_BRIDGE(dev)) { error_setg(errp, "PCI bridge hot unplug currently not supported"); return; - } else if (object_dynamic_cast(OBJECT(dev), TYPE_PCI_DEVICE)) { + } else if (IS_PCI_DEVICE(dev)) { pci_dev = PCI_DEVICE(dev); QTAILQ_FOREACH(pbdev, &s->zpci_devs, link) { @@ -935,7 +936,7 @@ static void s390_pcihost_hot_unplug(HotplugHandler *hotplug_dev, } } assert(pbdev != NULL); - } else if (object_dynamic_cast(OBJECT(dev), TYPE_S390_PCI_DEVICE)) { + } else if (IS_S390_PCI_DEVICE(dev)) { pbdev = S390_PCI_DEVICE(dev); pci_dev = pbdev->pdev; } diff --git a/hw/s390x/s390-virtio-ccw.c b/hw/s390x/s390-virtio-ccw.c index f0f7fdcadd..f0c6652449 100644 --- a/hw/s390x/s390-virtio-ccw.c +++ b/hw/s390x/s390-virtio-ccw.c @@ -372,7 +372,7 @@ static void s390_machine_reset(void) static void s390_machine_device_plug(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { + if (IS_CPU(dev)) { s390_cpu_plug(hotplug_dev, dev, errp); } } @@ -380,7 +380,7 @@ static void s390_machine_device_plug(HotplugHandler *hotplug_dev, static void s390_machine_device_unplug_request(HotplugHandler *hotplug_dev, DeviceState *dev, Error **errp) { - if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { + if (IS_CPU(dev)) { error_setg(errp, "CPU hot unplug not supported on this machine"); return; } @@ -422,7 +422,7 @@ static const CPUArchIdList *s390_possible_cpu_arch_ids(MachineState *ms) static HotplugHandler *s390_get_hotplug_handler(MachineState *machine, DeviceState *dev) { - if (object_dynamic_cast(OBJECT(dev), TYPE_CPU)) { + if (IS_CPU(dev)) { return HOTPLUG_HANDLER(machine); } return NULL; diff --git a/hw/vfio/pci-quirks.c b/hw/vfio/pci-quirks.c index 481fd08df7..3dc6e983a9 100644 --- a/hw/vfio/pci-quirks.c +++ b/hw/vfio/pci-quirks.c @@ -1391,8 +1391,12 @@ static void vfio_pci_igd_lpc_bridge_class_init(ObjectClass *klass, void *data) k->class_id = PCI_CLASS_BRIDGE_ISA; } +#define TYPE_VFIO_PCI_IGD_LPC_BRIDGE "vfio-pci-igd-lpc-bridge" +#define IS_VFIO_PCI_IGD_LPC_BRIDGE(obj) \ + object_dynamic_cast(OBJECT(obj), TYPE_VFIO_PCI_IGD_LPC_BRIDGE) + static TypeInfo vfio_pci_igd_lpc_bridge_info = { - .name = "vfio-pci-igd-lpc-bridge", + .name = TYPE_VFIO_PCI_IGD_LPC_BRIDGE, .parent = TYPE_PCI_DEVICE, .class_init = vfio_pci_igd_lpc_bridge_class_init, .interfaces = (InterfaceInfo[]) { @@ -1418,7 +1422,7 @@ static int vfio_pci_igd_lpc_init(VFIOPCIDevice *vdev, 0, PCI_DEVFN(0x1f, 0)); if (!lpc_bridge) { lpc_bridge = pci_create_simple(pci_device_root_bus(&vdev->pdev), - PCI_DEVFN(0x1f, 0), "vfio-pci-igd-lpc-bridge"); + PCI_DEVFN(0x1f, 0), TYPE_VFIO_PCI_IGD_LPC_BRIDGE); } ret = vfio_pci_igd_copy(vdev, lpc_bridge, info, igd_lpc_bridge_infos, @@ -1588,8 +1592,7 @@ static void vfio_probe_igd_bar4_quirk(VFIOPCIDevice *vdev, int nr) */ lpc_bridge = pci_find_device(pci_device_root_bus(&vdev->pdev), 0, PCI_DEVFN(0x1f, 0)); - if (lpc_bridge && !object_dynamic_cast(OBJECT(lpc_bridge), - "vfio-pci-igd-lpc-bridge")) { + if (lpc_bridge && !IS_VFIO_PCI_IGD_LPC_BRIDGE(lpc_bridge)) { error_report("IGD device %s cannot support legacy mode due to existing " "devices at address 1f.0", vdev->vbasedev.name); return; diff --git a/hw/vfio/pci.c b/hw/vfio/pci.c index 866f0deeb7..bd2c6241eb 100644 --- a/hw/vfio/pci.c +++ b/hw/vfio/pci.c @@ -3245,7 +3245,7 @@ static void vfio_pci_dev_class_init(ObjectClass *klass, void *data) } static const TypeInfo vfio_pci_dev_info = { - .name = "vfio-pci", + .name = TYPE_VFIO_PCI, .parent = TYPE_PCI_DEVICE, .instance_size = sizeof(VFIOPCIDevice), .class_init = vfio_pci_dev_class_init, diff --git a/hw/virtio/virtio-balloon.c b/hw/virtio/virtio-balloon.c index 1728e4f83a..51cc1b82e8 100644 --- a/hw/virtio/virtio-balloon.c +++ b/hw/virtio/virtio-balloon.c @@ -324,7 +324,7 @@ static int build_dimm_list(Object *obj, void *opaque) { GSList **list = opaque; - if (object_dynamic_cast(obj, TYPE_PC_DIMM)) { + if (IS_PC_DIMM(obj)) { DeviceState *dev = DEVICE(obj); if (dev->realized) { /* only realized DIMMs matter */ *list = g_slist_prepend(*list, dev); diff --git a/migration/channel.c b/migration/channel.c index 33e0e9b82f..90ba75d404 100644 --- a/migration/channel.c +++ b/migration/channel.c @@ -36,8 +36,7 @@ void migration_channel_process_incoming(QIOChannel *ioc) if (s->parameters.tls_creds && *s->parameters.tls_creds && - !object_dynamic_cast(OBJECT(ioc), - TYPE_QIO_CHANNEL_TLS)) { + !IS_QIO_CHANNEL_TLS(ioc)) { Error *local_err = NULL; migration_tls_channel_process_incoming(s, ioc, &local_err); if (local_err) { @@ -68,8 +67,7 @@ void migration_channel_connect(MigrationState *s, if (!error) { if (s->parameters.tls_creds && *s->parameters.tls_creds && - !object_dynamic_cast(OBJECT(ioc), - TYPE_QIO_CHANNEL_TLS)) { + !IS_QIO_CHANNEL_TLS(ioc)) { migration_tls_channel_connect(s, ioc, hostname, &error); if (!error) { diff --git a/numa.c b/numa.c index 81542d4ebb..78a9afc0e9 100644 --- a/numa.c +++ b/numa.c @@ -593,7 +593,7 @@ static int query_memdev(Object *obj, void *opaque) MemdevList **list = opaque; MemdevList *m = NULL; - if (object_dynamic_cast(obj, TYPE_MEMORY_BACKEND)) { + if (IS_MEMORY_BACKEND(obj)) { m = g_malloc0(sizeof(*m)); m->value = g_malloc0(sizeof(*m->value)); diff --git a/qdev-monitor.c b/qdev-monitor.c index 61e0300991..9e0561f55c 100644 --- a/qdev-monitor.c +++ b/qdev-monitor.c @@ -219,7 +219,7 @@ static DeviceClass *qdev_get_device_class(const char **driver, Error **errp) } } - if (!object_class_dynamic_cast(oc, TYPE_DEVICE)) { + if (!IS_DEVICE_CLASS(oc)) { if (*driver != original_name) { error_setg(errp, "'%s' (alias '%s') is not a valid device model" " name", original_name, *driver); @@ -834,7 +834,7 @@ static DeviceState *find_device_state(const char *id, Error **errp) return NULL; } - if (!object_dynamic_cast(obj, TYPE_DEVICE)) { + if (!IS_DEVICE(obj)) { error_setg(errp, "%s is not a hotpluggable device", id); return NULL; } diff --git a/qmp.c b/qmp.c index e7c0a2fd60..75e9333c2a 100644 --- a/qmp.c +++ b/qmp.c @@ -566,8 +566,7 @@ ObjectPropertyInfoList *qmp_qom_list_properties(const char *typename, return NULL; } - klass = object_class_dynamic_cast(klass, TYPE_OBJECT); - if (klass == NULL) { + if (!IS_OBJECT_CLASS(klass)) { error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "typename", TYPE_OBJECT); return NULL; } diff --git a/qom/cpu.c b/qom/cpu.c index 92599f3541..509e80bb84 100644 --- a/qom/cpu.c +++ b/qom/cpu.c @@ -333,7 +333,7 @@ static void cpu_common_realizefn(DeviceState *dev, Error **errp) * if this is one of the user-only emulators; in that case there's * no need to check the ignore_memory_transaction_failures board flag. */ - if (object_dynamic_cast(machine, TYPE_MACHINE)) { + if (IS_MACHINE(machine)) { ObjectClass *oc = object_get_class(machine); MachineClass *mc = MACHINE_CLASS(oc); diff --git a/qom/object.c b/qom/object.c index 75d1d48944..0703e8e4ff 100644 --- a/qom/object.c +++ b/qom/object.c @@ -424,7 +424,7 @@ void object_initialize_childv(Object *parentobj, const char *propname, goto out; } - if (object_dynamic_cast(obj, TYPE_USER_CREATABLE)) { + if (IS_USER_CREATABLE(obj)) { user_creatable_complete(obj, &local_err); if (local_err) { object_unparent(obj); @@ -605,7 +605,7 @@ Object *object_new_with_propv(const char *typename, goto error; } - if (object_dynamic_cast(obj, TYPE_USER_CREATABLE)) { + if (IS_USER_CREATABLE(obj)) { user_creatable_complete(obj, &local_err); if (local_err) { object_unparent(obj); diff --git a/qom/object_interfaces.c b/qom/object_interfaces.c index 72b97a8bed..6d152edf66 100644 --- a/qom/object_interfaces.c +++ b/qom/object_interfaces.c @@ -52,7 +52,7 @@ Object *user_creatable_add_type(const char *type, const char *id, return NULL; } - if (!object_class_dynamic_cast(klass, TYPE_USER_CREATABLE)) { + if (!IS_USER_CREATABLE_CLASS(klass)) { error_setg(errp, "object type '%s' isn't supported by object-add", type); return NULL; diff --git a/target/alpha/cpu.c b/target/alpha/cpu.c index b08078e7fc..fd42df4d89 100644 --- a/target/alpha/cpu.c +++ b/target/alpha/cpu.c @@ -116,8 +116,7 @@ static ObjectClass *alpha_cpu_class_by_name(const char *cpu_model) int i; oc = object_class_by_name(cpu_model); - if (oc != NULL && object_class_dynamic_cast(oc, TYPE_ALPHA_CPU) != NULL && - !object_class_is_abstract(oc)) { + if (IS_ALPHA_CPU_CLASS(oc) && !object_class_is_abstract(oc)) { return oc; } diff --git a/target/arm/cpu.c b/target/arm/cpu.c index b5e61cc177..9895666917 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -1065,8 +1065,7 @@ static ObjectClass *arm_cpu_class_by_name(const char *cpu_model) oc = object_class_by_name(typename); g_strfreev(cpuname); g_free(typename); - if (!oc || !object_class_dynamic_cast(oc, TYPE_ARM_CPU) || - object_class_is_abstract(oc)) { + if (!IS_ARM_CPU_CLASS(oc) || object_class_is_abstract(oc)) { return NULL; } return oc; diff --git a/target/arm/kvm64.c b/target/arm/kvm64.c index e0b8246283..7ab0b71c9d 100644 --- a/target/arm/kvm64.c +++ b/target/arm/kvm64.c @@ -500,8 +500,7 @@ int kvm_arch_init_vcpu(CPUState *cs) ARMCPU *cpu = ARM_CPU(cs); CPUARMState *env = &cpu->env; - if (cpu->kvm_target == QEMU_KVM_ARM_TARGET_NONE || - !object_dynamic_cast(OBJECT(cpu), TYPE_AARCH64_CPU)) { + if (cpu->kvm_target == QEMU_KVM_ARM_TARGET_NONE || !IS_AARCH64_CPU(cpu)) { fprintf(stderr, "KVM is not supported for this guest CPU type\n"); return -EINVAL; } diff --git a/target/cris/cpu.c b/target/cris/cpu.c index a23aba2688..be1d43e614 100644 --- a/target/cris/cpu.c +++ b/target/cris/cpu.c @@ -77,8 +77,7 @@ static ObjectClass *cris_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(CRIS_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && (!object_class_dynamic_cast(oc, TYPE_CRIS_CPU) || - object_class_is_abstract(oc))) { + if (!IS_CRIS_CPU_CLASS(oc) || object_class_is_abstract(oc)) { oc = NULL; } return oc; diff --git a/target/i386/kvm.c b/target/i386/kvm.c index 0b2a07d3a4..2fd5215bb1 100644 --- a/target/i386/kvm.c +++ b/target/i386/kvm.c @@ -1440,7 +1440,7 @@ int kvm_arch_init(MachineState *ms, KVMState *s) } if (kvm_check_extension(s, KVM_CAP_X86_SMM) && - object_dynamic_cast(OBJECT(ms), TYPE_PC_MACHINE) && + IS_PC_MACHINE(ms) && pc_machine_is_smm_enabled(PC_MACHINE(ms))) { smram_machine_done.notify = register_smram_listener; qemu_add_machine_init_done_notifier(&smram_machine_done); diff --git a/target/lm32/cpu.c b/target/lm32/cpu.c index b7499cb627..6b11b29389 100644 --- a/target/lm32/cpu.c +++ b/target/lm32/cpu.c @@ -209,8 +209,7 @@ static ObjectClass *lm32_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(LM32_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && (!object_class_dynamic_cast(oc, TYPE_LM32_CPU) || - object_class_is_abstract(oc))) { + if (!IS_LM32_CPU_CLASS(oc) || object_class_is_abstract(oc)) { oc = NULL; } return oc; diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index 582e3a73b3..9a1c99f295 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -89,8 +89,7 @@ static ObjectClass *m68k_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(M68K_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && (object_class_dynamic_cast(oc, TYPE_M68K_CPU) == NULL || - object_class_is_abstract(oc))) { + if (!IS_M68K_CPU_CLASS(oc) || object_class_is_abstract(oc)) { return NULL; } return oc; diff --git a/target/moxie/cpu.c b/target/moxie/cpu.c index 8d67eb6727..8b1c960cbf 100644 --- a/target/moxie/cpu.c +++ b/target/moxie/cpu.c @@ -88,8 +88,7 @@ static ObjectClass *moxie_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(MOXIE_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && (!object_class_dynamic_cast(oc, TYPE_MOXIE_CPU) || - object_class_is_abstract(oc))) { + if (!IS_MOXIE_CPU_CLASS(oc) || object_class_is_abstract(oc)) { return NULL; } return oc; diff --git a/target/openrisc/cpu.c b/target/openrisc/cpu.c index fb7cb5c507..c9b78a9d30 100644 --- a/target/openrisc/cpu.c +++ b/target/openrisc/cpu.c @@ -107,8 +107,7 @@ static ObjectClass *openrisc_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(OPENRISC_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && (!object_class_dynamic_cast(oc, TYPE_OPENRISC_CPU) || - object_class_is_abstract(oc))) { + if (!IS_OPENRISC_CPU_CLASS(oc) || object_class_is_abstract(oc)) { return NULL; } return oc; diff --git a/target/ppc/kvm.c b/target/ppc/kvm.c index 30aeafa7de..7dda66877b 100644 --- a/target/ppc/kvm.c +++ b/target/ppc/kvm.c @@ -2458,7 +2458,7 @@ static int kvm_ppc_register_host_cpu_type(MachineState *ms) } type_info.parent = object_class_get_name(OBJECT_CLASS(pvr_pcc)); type_register(&type_info); - if (object_dynamic_cast(OBJECT(ms), TYPE_SPAPR_MACHINE)) { + if (IS_SPAPR_MACHINE(ms)) { /* override TCG default cpu type with 'host' cpu model */ mc->default_cpu_type = TYPE_HOST_POWERPC_CPU; } diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index d630e8fd6c..f46c234ede 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -184,8 +184,7 @@ static ObjectClass *riscv_cpu_class_by_name(const char *cpu_model) oc = object_class_by_name(typename); g_strfreev(cpuname); g_free(typename); - if (!oc || !object_class_dynamic_cast(oc, TYPE_RISCV_CPU) || - object_class_is_abstract(oc)) { + if (!IS_RISCV_CPU_CLASS(oc) || object_class_is_abstract(oc)) { return NULL; } return oc; diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c index 2edaef1aef..bd621269fb 100644 --- a/target/tricore/cpu.c +++ b/target/tricore/cpu.c @@ -119,8 +119,7 @@ static ObjectClass *tricore_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(TRICORE_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (!oc || !object_class_dynamic_cast(oc, TYPE_TRICORE_CPU) || - object_class_is_abstract(oc)) { + if (!IS_TRICORE_CPU_CLASS(oc) || object_class_is_abstract(oc)) { return NULL; } return oc; diff --git a/target/unicore32/cpu.c b/target/unicore32/cpu.c index 68f978d80b..a45f99411d 100644 --- a/target/unicore32/cpu.c +++ b/target/unicore32/cpu.c @@ -48,8 +48,7 @@ static ObjectClass *uc32_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(UNICORE32_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc != NULL && (!object_class_dynamic_cast(oc, TYPE_UNICORE32_CPU) || - object_class_is_abstract(oc))) { + if (!IS_UNICORE32_CPU_CLASS(oc) || object_class_is_abstract(oc)) { oc = NULL; } return oc; diff --git a/target/xtensa/cpu.c b/target/xtensa/cpu.c index a54dbe4260..42d2ce470a 100644 --- a/target/xtensa/cpu.c +++ b/target/xtensa/cpu.c @@ -98,8 +98,7 @@ static ObjectClass *xtensa_cpu_class_by_name(const char *cpu_model) typename = g_strdup_printf(XTENSA_CPU_TYPE_NAME("%s"), cpu_model); oc = object_class_by_name(typename); g_free(typename); - if (oc == NULL || !object_class_dynamic_cast(oc, TYPE_XTENSA_CPU) || - object_class_is_abstract(oc)) { + if (!IS_XTENSA_CPU_CLASS(oc) || object_class_is_abstract(oc)) { return NULL; } return oc; diff --git a/tpm.c b/tpm.c index 93031723ad..f6ef167820 100644 --- a/tpm.c +++ b/tpm.c @@ -34,7 +34,7 @@ tpm_be_find_by_type(enum TpmType type) oc = object_class_by_name(typename); g_free(typename); - if (!object_class_dynamic_cast(oc, TYPE_TPM_BACKEND)) { + if (!IS_TPM_BACKEND_CLASS(oc)) { return NULL; } diff --git a/ui/vnc.c b/ui/vnc.c index 916a16d312..0f5c276f8d 100644 --- a/ui/vnc.c +++ b/ui/vnc.c @@ -3464,10 +3464,8 @@ vnc_display_setup_auth(int *auth, } *subauth = VNC_AUTH_INVALID; } else { - bool is_x509 = object_dynamic_cast(OBJECT(tlscreds), - TYPE_QCRYPTO_TLS_CREDS_X509) != NULL; - bool is_anon = object_dynamic_cast(OBJECT(tlscreds), - TYPE_QCRYPTO_TLS_CREDS_ANON) != NULL; + bool is_x509 = IS_QCRYPTO_TLS_CREDS_X509(tlscreds); + bool is_anon = IS_QCRYPTO_TLS_CREDS_ANON(tlscreds); if (!is_x509 && !is_anon) { error_setg(errp,