[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 03/47] qdev: add helpers to be more explicit when usi
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 03/47] qdev: add helpers to be more explicit when using abstract QOM parent functions |
Date: |
Mon, 5 Feb 2018 20:28:17 +0100 |
From: Philippe Mathieu-Daudé <address@hidden>
QOM API learning curve is quite hard, in particular when devices inherit from
abstract parent.
To be more explicit about when a device class change the parent hooks, add few
helpers hoping a device class_init() will be easier to understand.
Signed-off-by: Philippe Mathieu-Daudé <address@hidden>
Message-Id: <address@hidden>
Reviewed-by: Laurent Vivier <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
hw/core/qdev.c | 24 ++++++++++++++++++++++++
include/hw/qdev-core.h | 10 ++++++++++
2 files changed, 34 insertions(+)
diff --git a/hw/core/qdev.c b/hw/core/qdev.c
index 2456035..11f8a27 100644
--- a/hw/core/qdev.c
+++ b/hw/core/qdev.c
@@ -1075,6 +1075,30 @@ static void device_class_init(ObjectClass *class, void
*data)
dc->user_creatable = true;
}
+void device_class_set_parent_reset(DeviceClass *dc,
+ DeviceReset dev_reset,
+ DeviceReset *parent_reset)
+{
+ *parent_reset = dc->reset;
+ dc->reset = dev_reset;
+}
+
+void device_class_set_parent_realize(DeviceClass *dc,
+ DeviceRealize dev_realize,
+ DeviceRealize *parent_realize)
+{
+ *parent_realize = dc->realize;
+ dc->realize = dev_realize;
+}
+
+void device_class_set_parent_unrealize(DeviceClass *dc,
+ DeviceUnrealize dev_unrealize,
+ DeviceUnrealize *parent_unrealize)
+{
+ *parent_unrealize = dc->unrealize;
+ dc->unrealize = dev_unrealize;
+}
+
void device_reset(DeviceState *dev)
{
DeviceClass *klass = DEVICE_GET_CLASS(dev);
diff --git a/include/hw/qdev-core.h b/include/hw/qdev-core.h
index 85fa26d..18c0251 100644
--- a/include/hw/qdev-core.h
+++ b/include/hw/qdev-core.h
@@ -382,6 +382,16 @@ void qdev_machine_init(void);
*/
void device_reset(DeviceState *dev);
+void device_class_set_parent_reset(DeviceClass *dc,
+ DeviceReset dev_reset,
+ DeviceReset *parent_reset);
+void device_class_set_parent_realize(DeviceClass *dc,
+ DeviceRealize dev_realize,
+ DeviceRealize *parent_realize);
+void device_class_set_parent_unrealize(DeviceClass *dc,
+ DeviceUnrealize dev_unrealize,
+ DeviceUnrealize *parent_unrealize);
+
const struct VMStateDescription *qdev_get_vmsd(DeviceState *dev);
const char *qdev_fw_name(DeviceState *dev);
--
1.8.3.1
- [Qemu-devel] [PULL 00/47] Misc patches for 2018-02-05, Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 01/47] memory: update comments and fix some typos, Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 02/47] qdev: rename typedef qdev_resetfn() -> DeviceReset(), Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 03/47] qdev: add helpers to be more explicit when using abstract QOM parent functions,
Paolo Bonzini <=
- [Qemu-devel] [PULL 05/47] kvm: Add kvm_set_user_memory tracepoint, Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 06/47] qemu: improve hugepage allocation failure message, Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 04/47] qdev: use device_class_set_parent_realize/unrealize/reset(), Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 07/47] memory: set ioeventfd_update_pending after address_space_update_ioeventfds, Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 10/47] readline: don't free completions in readline_free(), Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 08/47] scsi-generic: Simplify error handling code, Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 09/47] chardev: fix incorrect unref of source, Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 11/47] scripts/qemu-gdb/timers.py: define encoding in header comment, Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 12/47] memory-internal.h: Remove obsolete claim that header is obsolete, Paolo Bonzini, 2018/02/05
- [Qemu-devel] [PULL 13/47] i2c: Add a CONFIG_I2C master switch to the configuration files, Paolo Bonzini, 2018/02/05