qdev: rework device properties.
authorGerd Hoffmann <kraxel@redhat.com>
Wed, 15 Jul 2009 11:43:31 +0000 (13:43 +0200)
committerAnthony Liguori <aliguori@us.ibm.com>
Thu, 16 Jul 2009 22:28:51 +0000 (17:28 -0500)
commitee6847d19be16c789b8bd4e553b7cd6701ba1245
tree41845b3b1e8740ce97daf0582e124c6b6e0a6873
parentf114784f69ec3b9af342148025de14dbd1b429a5
qdev: rework device properties.

This patch is a major overhaul of the device properties.  The properties
are saved directly in the device state struct now, the linked list of
property values is gone.

Advantages:
  * We don't have to maintain the list with the property values.
  * The value in the property list and the value actually used by
    the device can't go out of sync any more (used to happen for
    the pci.devfn == -1 case) because there is only one place where
    the value is stored.
  * A record describing the property is required now, you can't set
    random properties any more.

There are bus-specific and device-specific properties.  The former
should be used for properties common to all bus drivers.  Typical
use case is bus addressing, i.e. pci.devfn and i2c.address.

Properties have a PropertyInfo struct attached with name, size and
function pointers to parse and print properties.  A few common property
types have PropertyInfos defined in qdev-properties.c.  Drivers are free
to implement their own very special property parsers if needed.

Properties can have default values.  If unset they are zero-filled.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
47 files changed:
Makefile
Makefile.hw
hw/arm_sysctl.c
hw/armv7m.c
hw/axis_dev88.c
hw/cs4231.c
hw/eccmemctl.c
hw/escc.c
hw/esp.c
hw/etraxfs.c
hw/etraxfs_pic.c
hw/fdc.c
hw/i2c.c
hw/i2c.h
hw/integratorcp.c
hw/iommu.c
hw/m48t59.c
hw/mips_malta.c
hw/musicpal.c
hw/pc.c
hw/pci.c
hw/pcnet.c
hw/qdev-addr.c [new file with mode: 0644]
hw/qdev-addr.h [new file with mode: 0644]
hw/qdev-properties.c [new file with mode: 0644]
hw/qdev.c
hw/qdev.h
hw/slavio_intctl.c
hw/slavio_misc.c
hw/slavio_timer.c
hw/smbus_eeprom.c
hw/smc91c111.c
hw/sparc32_dma.c
hw/stellaris.c
hw/sun4m.c
hw/syborg.c
hw/syborg_fb.c
hw/syborg_interrupt.c
hw/syborg_keyboard.c
hw/syborg_pointer.c
hw/syborg_serial.c
hw/syborg_timer.c
hw/tcx.c
hw/xilinx.h
hw/xilinx_ethlite.c
hw/xilinx_intc.c
hw/xilinx_timer.c