All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: Eduardo Habkost <ehabkost@redhat.com>
Cc: peter.maydell@linaro.org, riku.voipio@iki.fi,
	qemu-devel@nongnu.org, blauwirbel@gmail.com,
	Anthony Liguori <anthony@codemonkey.ws>,
	Igor Mammedov <imammedo@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 19/24] qdev: move reset handler list from vl.c to qdev.c
Date: Thu, 15 Nov 2012 02:54:57 +0100	[thread overview]
Message-ID: <50A44B71.50804@suse.de> (raw)
In-Reply-To: <1352473012-20500-20-git-send-email-ehabkost@redhat.com>

Am 09.11.2012 15:56, schrieb Eduardo Habkost:
> The core qdev code uses the reset handler list from vl.c, so move
> qemu_register_reset(), qemu_unregister_reset() and qemu_devices_reset()
> to qdev.c.
> 
> The function declarations were moved to a new qdev-reset.h file, that is
> included by hw.h to keep compatibility, so we don't need to change all
> files that use qemu_register_reset().
> 
> Signed-off-by: Eduardo Habkost <ehabkost@redhat.com>
> ---
>  hw/hw.h         |  6 +-----
>  hw/qdev-reset.h | 11 +++++++++++
>  hw/qdev.c       | 41 +++++++++++++++++++++++++++++++++++++++++
>  hw/qdev.h       |  1 +
>  sysemu.h        |  1 -
>  vl.c            | 40 ----------------------------------------
>  6 files changed, 54 insertions(+), 46 deletions(-)
>  create mode 100644 hw/qdev-reset.h
> 
> diff --git a/hw/hw.h b/hw/hw.h
> index f530f6f..622a157 100644
> --- a/hw/hw.h
> +++ b/hw/hw.h
> @@ -14,6 +14,7 @@
>  #include "qemu-file.h"
>  #include "vmstate.h"
>  #include "qemu-log.h"
> +#include "qdev-reset.h"
>  
>  #ifdef NEED_CPU_H
>  #if TARGET_LONG_BITS == 64
> @@ -37,11 +38,6 @@
>  #endif
>  #endif
>  
> -typedef void QEMUResetHandler(void *opaque);
> -
> -void qemu_register_reset(QEMUResetHandler *func, void *opaque);
> -void qemu_unregister_reset(QEMUResetHandler *func, void *opaque);
> -
>  /* handler to set the boot_device order for a specific type of QEMUMachine */
>  /* return 0 if success */
>  typedef int QEMUBootSetHandler(void *opaque, const char *boot_devices);
> diff --git a/hw/qdev-reset.h b/hw/qdev-reset.h
> new file mode 100644
> index 0000000..40ae9a5
> --- /dev/null
> +++ b/hw/qdev-reset.h
> @@ -0,0 +1,11 @@
> +/* Device reset handler function registration, used by qdev */
> +#ifndef QDEV_RESET_H
> +#define QDEV_RESET_H
> +
> +typedef void QEMUResetHandler(void *opaque);
> +
> +void qemu_register_reset(QEMUResetHandler *func, void *opaque);
> +void qemu_unregister_reset(QEMUResetHandler *func, void *opaque);
> +void qemu_devices_reset(void);
> +
> +#endif /* QDEV_RESET_H */
> diff --git a/hw/qdev.c b/hw/qdev.c
> index 2cc6434..c242097 100644
> --- a/hw/qdev.c
> +++ b/hw/qdev.c
> @@ -35,6 +35,47 @@ int qdev_hotplug = 0;
>  static bool qdev_hot_added = false;
>  static bool qdev_hot_removed = false;
>  
> +typedef struct QEMUResetEntry {
> +    QTAILQ_ENTRY(QEMUResetEntry) entry;
> +    QEMUResetHandler *func;
> +    void *opaque;
> +} QEMUResetEntry;
> +
> +static QTAILQ_HEAD(reset_handlers, QEMUResetEntry) reset_handlers =
> +    QTAILQ_HEAD_INITIALIZER(reset_handlers);
> +
> +void qemu_register_reset(QEMUResetHandler *func, void *opaque)
> +{
> +    QEMUResetEntry *re = g_malloc0(sizeof(QEMUResetEntry));
> +
> +    re->func = func;
> +    re->opaque = opaque;
> +    QTAILQ_INSERT_TAIL(&reset_handlers, re, entry);
> +}
> +
> +void qemu_unregister_reset(QEMUResetHandler *func, void *opaque)
> +{
> +    QEMUResetEntry *re;
> +
> +    QTAILQ_FOREACH(re, &reset_handlers, entry) {
> +        if (re->func == func && re->opaque == opaque) {
> +            QTAILQ_REMOVE(&reset_handlers, re, entry);
> +            g_free(re);
> +            return;
> +        }
> +    }
> +}

My tired mind does not like this move and the naming qdev-reset.h.
The reset handling infrastructure is not limited to DeviceState (qdev),
it takes an opaque and is limited to softmmu whereas qdev prefers its
own DeviceClass::reset hook.

Andreas

> +
> +void qemu_devices_reset(void)
> +{
> +    QEMUResetEntry *re, *nre;
> +
> +    /* reset all devices */
> +    QTAILQ_FOREACH_SAFE(re, &reset_handlers, entry, nre) {
> +        re->func(re->opaque);
> +    }
> +}
> +
>  const VMStateDescription *qdev_get_vmsd(DeviceState *dev)
>  {
>      DeviceClass *dc = DEVICE_GET_CLASS(dev);
> diff --git a/hw/qdev.h b/hw/qdev.h
> index 365b8d6..2487b3b 100644
> --- a/hw/qdev.h
> +++ b/hw/qdev.h
> @@ -5,5 +5,6 @@
>  #include "qdev-core.h"
>  #include "qdev-properties.h"
>  #include "qdev-monitor.h"
> +#include "qdev-reset.h"
>  
>  #endif
> diff --git a/sysemu.h b/sysemu.h
> index ab1ef8b..51f19cc 100644
> --- a/sysemu.h
> +++ b/sysemu.h
> @@ -57,7 +57,6 @@ void qemu_system_vmstop_request(RunState reason);
>  int qemu_shutdown_requested_get(void);
>  int qemu_reset_requested_get(void);
>  void qemu_system_killed(int signal, pid_t pid);
> -void qemu_devices_reset(void);
>  void qemu_system_reset(bool report);
>  
>  void qemu_add_exit_notifier(Notifier *notify);
> diff --git a/vl.c b/vl.c
> index 4f03a72..c7448a2 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -1456,14 +1456,6 @@ void vm_start(void)
>  
>  /* reset/shutdown handler */
>  
> -typedef struct QEMUResetEntry {
> -    QTAILQ_ENTRY(QEMUResetEntry) entry;
> -    QEMUResetHandler *func;
> -    void *opaque;
> -} QEMUResetEntry;
> -
> -static QTAILQ_HEAD(reset_handlers, QEMUResetEntry) reset_handlers =
> -    QTAILQ_HEAD_INITIALIZER(reset_handlers);
>  static int reset_requested;
>  static int shutdown_requested, shutdown_signal = -1;
>  static pid_t shutdown_pid;
> @@ -1560,38 +1552,6 @@ static bool qemu_vmstop_requested(RunState *r)
>      return false;
>  }
>  
> -void qemu_register_reset(QEMUResetHandler *func, void *opaque)
> -{
> -    QEMUResetEntry *re = g_malloc0(sizeof(QEMUResetEntry));
> -
> -    re->func = func;
> -    re->opaque = opaque;
> -    QTAILQ_INSERT_TAIL(&reset_handlers, re, entry);
> -}
> -
> -void qemu_unregister_reset(QEMUResetHandler *func, void *opaque)
> -{
> -    QEMUResetEntry *re;
> -
> -    QTAILQ_FOREACH(re, &reset_handlers, entry) {
> -        if (re->func == func && re->opaque == opaque) {
> -            QTAILQ_REMOVE(&reset_handlers, re, entry);
> -            g_free(re);
> -            return;
> -        }
> -    }
> -}
> -
> -void qemu_devices_reset(void)
> -{
> -    QEMUResetEntry *re, *nre;
> -
> -    /* reset all devices */
> -    QTAILQ_FOREACH_SAFE(re, &reset_handlers, entry, nre) {
> -        re->func(re->opaque);
> -    }
> -}
> -
>  void qemu_system_reset(bool report)
>  {
>      if (current_machine && current_machine->reset) {
> 


-- 
SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg, Germany
GF: Jeff Hawn, Jennifer Guild, Felix Imendörffer; HRB 16746 AG Nürnberg

  reply	other threads:[~2012-11-15  1:55 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-09 14:56 [Qemu-devel] [PATCH 00/24] CPU DeviceState v7 Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 01/24] user: move *-user/qemu-types.h to main directory Eduardo Habkost
2012-11-12 21:38   ` Andreas Färber
2012-11-17 16:02     ` Blue Swirl
2012-11-09 14:56 ` [Qemu-devel] [PATCH 02/24] user: rename qemu-types.h to qemu-user-types.h Eduardo Habkost
2012-11-12 21:44   ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 03/24] qemu-common.h: comment about usage rules Eduardo Habkost
2012-11-12 21:57   ` Andreas Färber
2012-11-12 22:04     ` Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 04/24] move qemu_irq typedef out of cpu-common.h Eduardo Habkost
2012-11-14  0:03   ` Andreas Färber
2012-11-14 12:30     ` Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 05/24] qdev: split up header so it can be used in cpu.h Eduardo Habkost
2012-11-14 13:51   ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 06/24] move I/O-related definitions from qemu-common.h to a new header (qemu-stdio.h) Eduardo Habkost
2012-11-13 15:30   ` Igor Mammedov
2012-11-13 15:52     ` Eduardo Habkost
2012-11-13 16:43       ` Igor Mammedov
2012-11-13 16:50         ` Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 07/24] qemu-fsdev-dummy.c: include module.h Eduardo Habkost
2012-11-14 14:03   ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 08/24] vnc-palette.h: include <stdbool.h> Eduardo Habkost
2012-11-14 14:35   ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 09/24] ui/vnc-pallete.c: include headers it needs Eduardo Habkost
2012-11-09 16:46   ` Peter Maydell
2012-11-14 14:37   ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 10/24] qemu-config.h: " Eduardo Habkost
2012-11-14 14:43   ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 11/24] qapi/qmp-registry.c: " Eduardo Habkost
2012-11-14 15:47   ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 12/24] qga/channel-posix.c: " Eduardo Habkost
2012-11-14 16:14   ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 13/24] create qemu-types.h for struct typedefs Eduardo Habkost
2012-11-14 21:52   ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 14/24] sysemu.h: include qemu-types.h instead of qemu-common.h Eduardo Habkost
2012-11-14 21:56   ` Andreas Färber
2012-11-14 22:19     ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 15/24] qlist.h: do not include qemu-common.h Eduardo Habkost
2012-11-14 22:42   ` Andreas Färber
2012-11-15  1:19     ` [Qemu-devel] [PATCH v2] qga/channel-posix.c: include headers it needs Igor Mammedov
2012-11-15 18:34       ` Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 16/24] qapi-types.h: don't include qemu-common.h Eduardo Habkost
2012-11-14 22:13   ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 17/24] qdev-properties.c: add copyright/license information Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 18/24] qdev: qdev_create(): use error_report() instead of hw_error() Eduardo Habkost
2012-12-04 16:16   ` Andreas Färber
2012-11-09 14:56 ` [Qemu-devel] [PATCH 19/24] qdev: move reset handler list from vl.c to qdev.c Eduardo Habkost
2012-11-15  1:54   ` Andreas Färber [this message]
2012-11-15 18:42     ` Eduardo Habkost
2012-11-15 18:45       ` Peter Maydell
2012-11-30 16:56       ` Igor Mammedov
2012-11-30 21:38         ` Eduardo Habkost
2012-12-01 11:26           ` Peter Maydell
2012-12-02  5:44             ` Andreas Färber
2012-12-02 13:37               ` Peter Maydell
2012-11-09 14:56 ` [Qemu-devel] [PATCH 20/24] qdev: add weak aliases for vmstate handling on qdev.c Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 21/24] qdev: add weak alias to sysbus_get_default() " Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 22/24] qdev-properties.c: separate core from the code used only by qemu-system-* Eduardo Habkost
2012-11-14 17:02   ` [Qemu-devel] [PATCH v5 " Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 23/24] include qdev code into *-user, too Eduardo Habkost
2012-11-09 14:56 ` [Qemu-devel] [PATCH 24/24] qom: make CPU a child of DeviceState Eduardo Habkost
  -- strict thread matches above, loose matches on Subject: below --
2012-11-09 13:08 [Qemu-devel] [PATCH 00/24] CPU DeviceState v6 Eduardo Habkost
2012-11-09 13:08 ` [Qemu-devel] [PATCH 19/24] qdev: move reset handler list from vl.c to qdev.c Eduardo Habkost
2012-10-24  3:01 [Qemu-devel] [PATCH v5 00/24] CPU DeviceState, 5th try Eduardo Habkost
2012-10-24  3:02 ` [Qemu-devel] [PATCH 19/24] qdev: move reset handler list from vl.c to qdev.c Eduardo Habkost

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=50A44B71.50804@suse.de \
    --to=afaerber@suse.de \
    --cc=anthony@codemonkey.ws \
    --cc=blauwirbel@gmail.com \
    --cc=ehabkost@redhat.com \
    --cc=imammedo@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=riku.voipio@iki.fi \
    /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.