aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2009-09-01 09:56:14 +0200
committerAnthony Liguori <aliguori@us.ibm.com>2009-09-09 14:57:20 -0500
commit391a079edbecf047ec2c9e35b18ea4e2f3b6f52d (patch)
tree94ff3f404639a2325ca66b3b8044b678be80b6da
parentf82de8f08a7d5add367067e4b7911c9fc9892bb0 (diff)
qdev: integrate vmstate
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
-rw-r--r--hw/qdev.c6
-rw-r--r--hw/qdev.h3
2 files changed, 9 insertions, 0 deletions
diff --git a/hw/qdev.c b/hw/qdev.c
index 675248fc12..6451b8a6d7 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -221,12 +221,18 @@ int qdev_init(DeviceState *dev)
return rc;
if (dev->info->reset)
qemu_register_reset(dev->info->reset, dev);
+ if (dev->info->vmsd)
+ vmstate_register(-1, dev->info->vmsd, dev);
return 0;
}
/* Unlink device from bus and free the structure. */
void qdev_free(DeviceState *dev)
{
+#if 0 /* FIXME: need sane vmstate_unregister function */
+ if (dev->info->vmsd)
+ vmstate_unregister(dev->info->vmsd, dev);
+#endif
if (dev->info->reset)
qemu_unregister_reset(dev->info->reset, dev);
LIST_REMOVE(dev, sibling);
diff --git a/hw/qdev.h b/hw/qdev.h
index b146aa1406..6d0d7f4f21 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -111,6 +111,9 @@ struct DeviceInfo {
/* callbacks */
QEMUResetHandler *reset;
+ /* device state */
+ const VMStateDescription *vmsd;
+
/* Private to qdev / bus. */
qdev_initfn init;
BusInfo *bus_info;