All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Philippe Mathieu-Daudé" <f4bug@amsat.org>
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	[thread overview]
Message-ID: <1517858941-5538-4-git-send-email-pbonzini@redhat.com> (raw)
In-Reply-To: <1517858941-5538-1-git-send-email-pbonzini@redhat.com>

From: Philippe Mathieu-Daudé <f4bug@amsat.org>

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é <f4bug@amsat.org>
Message-Id: <20180114020412.26160-3-f4bug@amsat.org>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
 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

  parent reply	other threads:[~2018-02-05 19:29 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-02-05 19:28 [Qemu-devel] [PULL 00/47] Misc patches for 2018-02-05 Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 01/47] memory: update comments and fix some typos Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 02/47] qdev: rename typedef qdev_resetfn() -> DeviceReset() Paolo Bonzini
2018-02-05 19:28 ` Paolo Bonzini [this message]
2018-02-05 19:28 ` [Qemu-devel] [PULL 04/47] qdev: use device_class_set_parent_realize/unrealize/reset() Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 05/47] kvm: Add kvm_set_user_memory tracepoint Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 06/47] qemu: improve hugepage allocation failure message Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 07/47] memory: set ioeventfd_update_pending after address_space_update_ioeventfds Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 08/47] scsi-generic: Simplify error handling code Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 09/47] chardev: fix incorrect unref of source Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 10/47] readline: don't free completions in readline_free() Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 11/47] scripts/qemu-gdb/timers.py: define encoding in header comment Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 12/47] memory-internal.h: Remove obsolete claim that header is obsolete Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 13/47] i2c: Add a CONFIG_I2C master switch to the configuration files Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 14/47] Add missing hvdos public domain attribution: Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 15/47] hvf: ept_emulation_fault() needs NetApp BSD attribution Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 16/47] Drop remaining bits of ia64 host support Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 17/47] sockets: fix parsing of ipv4/ipv6 opts in parse_socket_addr Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 18/47] exynos4210: workaround UBSAN compilation error Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 19/47] build-sys: add --enable-sanitizers Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 20/47] ucontext: annotate coroutine stack for ASAN Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 21/47] vhost: add traces for memory listeners Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 22/47] arm: postpone device listener unregister Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 23/47] vfio: listener unregister before unset container Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 24/47] memory: do explicit cleanup when remove listeners Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 25/47] chardev/char-socket: add POLLHUP handler Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 26/47] ivshmem: Don't update non-existent MSI routes Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 27/47] ivshmem: Always remove irqfd notifiers Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 28/47] ivshmem: Improve MSI irqfd error handling Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 29/47] ivshmem: Disable irqfd on device reset Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 30/47] cpus: hax: register/unregister thread with RCU, exit loop on unplug Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 31/47] cpus: kvm: unregister thread with RCU Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 32/47] cpus: dummy: unregister thread with RCU, exit loop on unplug Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 33/47] cpus: tcg: unregister thread with RCU, fix exiting of " Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 34/47] cpus: hvf: unregister thread with RCU Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 35/47] cpus: join thread when removing a vCPU Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 36/47] memfd: add error argument, instead of perror() Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 37/47] memfd: add hugetlb support Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 38/47] memfd: add hugetlbsize argument Paolo Bonzini
2018-04-27 12:42   ` Peter Maydell
2018-02-05 19:28 ` [Qemu-devel] [PULL 39/47] Add memfd based hostmem Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 40/47] tests: keep compiling failing vhost-user tests Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 41/47] vhost-user-test: make read-guest-mem setup its own qemu Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 42/47] tests: use memfd in vhost-user-test Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 43/47] tests/test-filter-redirector: move close() Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 44/47] Add the Windows Hypervisor Platform accelerator Paolo Bonzini
2018-02-05 19:28 ` [Qemu-devel] [PULL 45/47] Add the WHPX vcpu API Paolo Bonzini
2018-02-05 19:29 ` [Qemu-devel] [PULL 46/47] Introduce the WHPX impl Paolo Bonzini
2018-02-05 19:29 ` [Qemu-devel] [PULL 47/47] Add the WHPX acceleration enlightenments Paolo Bonzini
2018-02-06 19:18 ` [Qemu-devel] [PULL 00/47] Misc patches for 2018-02-05 Peter Maydell
2018-02-06 20:37   ` Paolo Bonzini
2018-02-07 11:55     ` Peter Maydell
2018-02-07 12:05       ` Paolo Bonzini
2018-02-07 12:49         ` Marc-André Lureau
2018-02-07 12:53           ` Peter Maydell

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1517858941-5538-4-git-send-email-pbonzini@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=f4bug@amsat.org \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.