Comments
Patch
@@ -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);
@@ -107,6 +107,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;
@@ -124,6 +125,7 @@ struct DeviceInfo {
/* Private to qdev / bus. */
qdev_initfn init;
+ qdev_exitfn exit;
BusInfo *bus_info;
struct DeviceInfo *next;
};
This adds a exit callback for device destruction to DeviceInfo, so we can hook cleanups into qdev device destruction. Followup patches will put that into use. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> --- hw/qdev.c | 2 ++ hw/qdev.h | 2 ++ 2 files changed, 4 insertions(+), 0 deletions(-)