diff options
author | Blue Swirl | 2011-02-05 15:34:32 +0100 |
---|---|---|
committer | Blue Swirl | 2011-02-12 09:27:58 +0100 |
commit | 7cc050b1659545d0c87108c17f0bf78561efcf9a (patch) | |
tree | 19ad3d4af3aec212dc1cd8590d2f8cc54fa7bf23 /hw/pci.c | |
parent | qdev: add creation function that may fail (diff) | |
download | qemu-7cc050b1659545d0c87108c17f0bf78561efcf9a.tar.gz qemu-7cc050b1659545d0c87108c17f0bf78561efcf9a.tar.xz qemu-7cc050b1659545d0c87108c17f0bf78561efcf9a.zip |
pci: add creation functions that may fail
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
Diffstat (limited to 'hw/pci.c')
-rw-r--r-- | hw/pci.c | 20 |
1 files changed, 20 insertions, 0 deletions
@@ -1708,6 +1708,21 @@ PCIDevice *pci_create_multifunction(PCIBus *bus, int devfn, bool multifunction, return DO_UPCAST(PCIDevice, qdev, dev); } +PCIDevice *pci_try_create_multifunction(PCIBus *bus, int devfn, + bool multifunction, + const char *name) +{ + DeviceState *dev; + + dev = qdev_try_create(&bus->qbus, name); + if (!dev) { + return NULL; + } + qdev_prop_set_uint32(dev, "addr", devfn); + qdev_prop_set_bit(dev, "multifunction", multifunction); + return DO_UPCAST(PCIDevice, qdev, dev); +} + PCIDevice *pci_create_simple_multifunction(PCIBus *bus, int devfn, bool multifunction, const char *name) @@ -1727,6 +1742,11 @@ PCIDevice *pci_create_simple(PCIBus *bus, int devfn, const char *name) return pci_create_simple_multifunction(bus, devfn, false, name); } +PCIDevice *pci_try_create(PCIBus *bus, int devfn, const char *name) +{ + return pci_try_create_multifunction(bus, devfn, false, name); +} + static int pci_find_space(PCIDevice *pdev, uint8_t size) { int config_size = pci_config_size(pdev); |