diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2009-09-16 22:25:27 +0200 |
---|---|---|
committer | Anthony Liguori <aliguori@us.ibm.com> | 2009-10-05 09:32:45 -0500 |
commit | cd739fb6e93c32154c898c822c967877894b1ab3 (patch) | |
tree | 8ba2c08b8809bc524d04798fa71532e37342a471 | |
parent | 828566bc3314f91575a8a814f6ff21efc7005b14 (diff) | |
download | qemu-cd739fb6e93c32154c898c822c967877894b1ab3.tar.gz qemu-cd739fb6e93c32154c898c822c967877894b1ab3.tar.bz2 qemu-cd739fb6e93c32154c898c822c967877894b1ab3.zip |
allow qdev busses allocations be inplace
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r-- | hw/qdev.c | 15 | ||||
-rw-r--r-- | hw/qdev.h | 3 |
2 files changed, 15 insertions, 3 deletions
@@ -502,13 +502,12 @@ static BusState *qbus_find(const char *path) } } -BusState *qbus_create(BusInfo *info, DeviceState *parent, const char *name) +void qbus_create_inplace(BusState *bus, BusInfo *info, + DeviceState *parent, const char *name) { - BusState *bus; char *buf; int i,len; - bus = qemu_mallocz(info->size); bus->info = info; bus->parent = parent; @@ -537,6 +536,16 @@ BusState *qbus_create(BusInfo *info, DeviceState *parent, const char *name) QLIST_INSERT_HEAD(&parent->child_bus, bus, sibling); parent->num_child_bus++; } + +} + +BusState *qbus_create(BusInfo *info, DeviceState *parent, const char *name) +{ + BusState *bus; + + bus = qemu_mallocz(info->size); + bus->qdev_allocated = 1; + qbus_create_inplace(bus, info, parent, name); return bus; } @@ -47,6 +47,7 @@ struct BusState { DeviceState *parent; BusInfo *info; const char *name; + int qdev_allocated; QLIST_HEAD(, DeviceState) children; QLIST_ENTRY(BusState) sibling; }; @@ -145,6 +146,8 @@ BusState *qdev_get_parent_bus(DeviceState *dev); /*** BUS API. ***/ +void qbus_create_inplace(BusState *bus, BusInfo *info, + DeviceState *parent, const char *name); BusState *qbus_create(BusInfo *info, DeviceState *parent, const char *name); #define FROM_QBUS(type, dev) DO_UPCAST(type, qbus, dev) |