[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 1/4] qdev: integrate reset
From: |
Gerd Hoffmann |
Subject: |
[Qemu-devel] [PATCH 1/4] qdev: integrate reset |
Date: |
Tue, 1 Sep 2009 09:56:12 +0200 |
Signed-off-by: Gerd Hoffmann <address@hidden>
---
hw/qdev.c | 11 ++++++++++-
hw/qdev.h | 3 +++
2 files changed, 13 insertions(+), 1 deletions(-)
diff --git a/hw/qdev.c b/hw/qdev.c
index ff2f096..e045968 100644
--- a/hw/qdev.c
+++ b/hw/qdev.c
@@ -211,12 +211,21 @@ DeviceState *qdev_device_add(QemuOpts *opts)
calling this function. */
int qdev_init(DeviceState *dev)
{
- return dev->info->init(dev, dev->info);
+ int rc;
+
+ rc = dev->info->init(dev, dev->info);
+ if (rc < 0)
+ return rc;
+ if (dev->info->reset)
+ qemu_register_reset(dev->info->reset, dev);
+ return 0;
}
/* Unlink device from bus and free the structure. */
void qdev_free(DeviceState *dev)
{
+ if (dev->info->reset)
+ qemu_unregister_reset(dev->info->reset, dev);
LIST_REMOVE(dev, sibling);
qemu_free(dev);
}
diff --git a/hw/qdev.h b/hw/qdev.h
index af735d7..fde29ea 100644
--- a/hw/qdev.h
+++ b/hw/qdev.h
@@ -110,6 +110,9 @@ struct DeviceInfo {
Property *props;
int no_user;
+ /* callbacks */
+ QEMUResetHandler *reset;
+
/* Private to qdev / bus. */
qdev_initfn init;
BusInfo *bus_info;
--
1.6.2.5