From d29275f10382844e000ddaafaddc6780555e8d83 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Fri, 25 Sep 2009 21:42:35 +0200 Subject: [PATCH] Add exit callback to DeviceInfo. 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 Signed-off-by: Anthony Liguori --- hw/qdev.c | 2 ++ hw/qdev.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/hw/qdev.c b/hw/qdev.c index 7b204f9517..064389dcd0 100644 --- a/hw/qdev.c +++ b/hw/qdev.c @@ -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); diff --git a/hw/qdev.h b/hw/qdev.h index cd58fa8cf4..6c2c4013d2 100644 --- a/hw/qdev.h +++ b/hw/qdev.h @@ -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; };