diff options
-rw-r--r-- | hw/qdev.c | 2 | ||||
-rw-r--r-- | hw/qdev.h | 2 |
2 files changed, 4 insertions, 0 deletions
@@ -245,6 +245,8 @@ void qdev_free(DeviceState *dev) #endif if (dev->info->reset) qemu_unregister_reset(dev->info->reset, dev); + if (dev->info->exit) + dev->info->exit(dev); } QLIST_REMOVE(dev, sibling); qemu_free(dev); @@ -108,6 +108,7 @@ BusState *qdev_get_child_bus(DeviceState *dev, const char *name); /*** Device API. ***/ typedef int (*qdev_initfn)(DeviceState *dev, DeviceInfo *info); +typedef int (*qdev_exitfn)(DeviceState *dev); struct DeviceInfo { const char *name; @@ -125,6 +126,7 @@ struct DeviceInfo { /* Private to qdev / bus. */ qdev_initfn init; + qdev_exitfn exit; BusInfo *bus_info; struct DeviceInfo *next; }; |