mbox series

[00/36] Make qdev static property API usable by any QOM type

Message ID 20201029220246.472693-1-ehabkost@redhat.com
Headers show
Series Make qdev static property API usable by any QOM type | expand

Message

Eduardo Habkost Oct. 29, 2020, 10:02 p.m. UTC
This series refactor the qdev property code so the static
property system can be used by any QOM type.  As an example, at
the end of the series some properties in TYPE_MACHINE are
converted to static properties.

Eduardo Habkost (36):
  cs4231: Get rid of empty property array
  cpu: Move cpu_common_props to hw/core/cpu.c
  qdev: Move property code to qdev-properties.[ch]
  qdev: Check dev->realized at set_size()
  sparc: Check dev->realized at sparc_set_nwindows()
  qdev: Don't use dev->id on set_size32() error message
  qdev: Make PropertyInfo.print method get Object* argument
  qdev: Make bit_prop_set() get Object* argument
  qdev: Make qdev_get_prop_ptr() get Object* arg
  qdev: Make qdev_find_global_prop() get Object* argument
  qdev: Make check_prop_still_unset() get Object* argument
  qdev: Make error_set_from_qdev_prop_error() get Object* argument
  qdev: Wrap getters and setters in separate helpers
  qdev: Move dev->realized check to qdev_property_set()
  qdev: Make PropertyInfo.create return ObjectProperty*
  qdev: Make qdev_class_add_property() more flexible
  qdev: Separate generic and device-specific property registration
  qdev: Avoid unnecessary DeviceState* variable at set_prop_arraylen()
  qdev: Move array property creation/registration to separate functions
  qdev: Reuse object_property_add_static() when adding array elements
  qom: Add allow_set callback to ObjectProperty
  qdev: Make qdev_prop_allow_set() a property allow_set callback
  qdev: Make qdev_propinfo_get_uint16() static
  qdev: Rename qdev_propinfo_* to object_propinfo_*
  qdev: Rename qdev_get_prop_ptr() to object_static_prop_ptr()
  qdev: Move softmmu properties to qdev-properties-system.h
  qdev: Reuse DEFINE_PROP in all DEFINE_PROP_* macros
  qdev: Move core static property code to QOM
  qdev: Move qdev_prop_tpm declaration to tpm_prop.h
  qdev: Rename qdev_prop_* to prop_info_*
  qdev: Stop using error_set_from_qdev_prop_error() for UUID property
  qdev: Move base property types to qom/property-types.c
  tests: Use static properties at check-qom-proplist test case
  machine: Use DEFINE_PROP_STRING for string properties
  machine: Use DEFINE_PROP_BOOL for boolean properties
  qom: Include static property API reference in documentation

 docs/devel/qom.rst                     |   6 +
 audio/audio.h                          |   1 +
 hw/core/qdev-prop-internal.h           |  30 -
 hw/tpm/tpm_prop.h                      |   2 +
 include/hw/block/block.h               |   1 +
 include/hw/core/cpu.h                  |   1 -
 include/hw/qdev-core.h                 |  47 +-
 include/hw/qdev-properties-system.h    |  68 +++
 include/hw/qdev-properties.h           | 241 +-------
 include/net/net.h                      |   1 +
 include/qom/object.h                   |  16 +
 include/qom/static-property-internal.h |  41 ++
 include/qom/static-property.h          | 343 +++++++++++
 backends/tpm/tpm_util.c                |  14 +-
 cpu.c                                  |  15 -
 hw/arm/pxa2xx.c                        |   1 +
 hw/arm/strongarm.c                     |   1 +
 hw/audio/cs4231.c                      |   5 -
 hw/block/fdc.c                         |   1 +
 hw/block/m25p80.c                      |   1 +
 hw/block/nand.c                        |   1 +
 hw/block/onenand.c                     |   1 +
 hw/block/pflash_cfi01.c                |   1 +
 hw/block/pflash_cfi02.c                |   1 +
 hw/block/vhost-user-blk.c              |   1 +
 hw/block/xen-block.c                   |  11 +-
 hw/char/avr_usart.c                    |   1 +
 hw/char/bcm2835_aux.c                  |   1 +
 hw/char/cadence_uart.c                 |   1 +
 hw/char/cmsdk-apb-uart.c               |   1 +
 hw/char/debugcon.c                     |   1 +
 hw/char/digic-uart.c                   |   1 +
 hw/char/escc.c                         |   1 +
 hw/char/etraxfs_ser.c                  |   1 +
 hw/char/exynos4210_uart.c              |   1 +
 hw/char/grlib_apbuart.c                |   1 +
 hw/char/ibex_uart.c                    |   1 +
 hw/char/imx_serial.c                   |   1 +
 hw/char/ipoctal232.c                   |   1 +
 hw/char/lm32_juart.c                   |   1 +
 hw/char/lm32_uart.c                    |   1 +
 hw/char/mcf_uart.c                     |   1 +
 hw/char/milkymist-uart.c               |   1 +
 hw/char/nrf51_uart.c                   |   1 +
 hw/char/parallel.c                     |   1 +
 hw/char/pl011.c                        |   1 +
 hw/char/renesas_sci.c                  |   1 +
 hw/char/sclpconsole-lm.c               |   1 +
 hw/char/sclpconsole.c                  |   1 +
 hw/char/serial-pci-multi.c             |   1 +
 hw/char/serial.c                       |   1 +
 hw/char/spapr_vty.c                    |   1 +
 hw/char/stm32f2xx_usart.c              |   1 +
 hw/char/terminal3270.c                 |   1 +
 hw/char/virtio-console.c               |   1 +
 hw/char/xilinx_uartlite.c              |   1 +
 hw/core/cpu.c                          |  15 +
 hw/core/machine.c                      | 241 +-------
 hw/core/qdev-properties-system.c       | 193 ++----
 hw/core/qdev-properties.c              | 801 +++----------------------
 hw/core/qdev.c                         | 120 ----
 hw/i386/kvm/i8254.c                    |   1 +
 hw/ide/qdev.c                          |   1 +
 hw/intc/arm_gicv3_common.c             |   2 +-
 hw/intc/rx_icu.c                       |   4 +-
 hw/ipmi/ipmi_bmc_extern.c              |   1 +
 hw/misc/arm_sysctl.c                   |   4 +-
 hw/misc/ivshmem.c                      |   1 +
 hw/misc/mac_via.c                      |   1 +
 hw/misc/sifive_u_otp.c                 |   1 +
 hw/net/e1000e.c                        |   6 +-
 hw/net/rocker/rocker.c                 |   1 +
 hw/nvram/eeprom_at24c.c                |   1 +
 hw/nvram/spapr_nvram.c                 |   1 +
 hw/pci-bridge/gen_pcie_root_port.c     |   1 +
 hw/pci/pci.c                           |   1 +
 hw/ppc/pnv_pnor.c                      |   1 +
 hw/rdma/vmw/pvrdma_main.c              |   1 +
 hw/rtc/mc146818rtc.c                   |   1 +
 hw/s390x/css.c                         |  13 +-
 hw/s390x/s390-pci-bus.c                |  10 +-
 hw/scsi/scsi-disk.c                    |   1 +
 hw/scsi/scsi-generic.c                 |   1 +
 hw/scsi/vhost-user-scsi.c              |   1 +
 hw/sd/sd.c                             |   1 +
 hw/usb/ccid-card-passthru.c            |   1 +
 hw/usb/dev-serial.c                    |   1 +
 hw/usb/redirect.c                      |   1 +
 hw/vfio/pci-quirks.c                   |  11 +-
 hw/vfio/pci.c                          |   1 +
 hw/virtio/vhost-user-fs.c              |   1 +
 hw/virtio/vhost-user-vsock.c           |   1 +
 hw/virtio/virtio-iommu-pci.c           |   1 +
 hw/xen/xen_pt.c                        |   1 +
 migration/migration.c                  |   1 +
 qom/object.c                           |   4 +
 qom/property-types.c                   | 649 ++++++++++++++++++++
 qom/static-property.c                  | 114 ++++
 softmmu/qdev-monitor.c                 |   1 +
 target/arm/cpu.c                       |   2 +-
 target/sparc/cpu.c                     |   2 +-
 tests/check-qom-proplist.c             |  61 +-
 qom/meson.build                        |   2 +
 103 files changed, 1544 insertions(+), 1620 deletions(-)
 delete mode 100644 hw/core/qdev-prop-internal.h
 create mode 100644 include/hw/qdev-properties-system.h
 create mode 100644 include/qom/static-property-internal.h
 create mode 100644 include/qom/static-property.h
 create mode 100644 qom/property-types.c
 create mode 100644 qom/static-property.c