All of lore.kernel.org
 help / color / mirror / Atom feed
From: Anthony Liguori <anthony@codemonkey.ws>
To: Gerd Hoffmann <kraxel@redhat.com>
Cc: qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] Add exit notifiers.
Date: Mon, 14 Jun 2010 15:57:05 -0500	[thread overview]
Message-ID: <4C1697A1.30506@codemonkey.ws> (raw)
In-Reply-To: <1275653287-30862-1-git-send-email-kraxel@redhat.com>

On 06/04/2010 07:08 AM, Gerd Hoffmann wrote:
> Hook up any cleanup work which needs to be done here.  Advantages over
> using atexit(3):
>
>    (1) You get passed in a pointer to the notifier.  If you embed that
>        into your state struct you can use container_of() to get get your
>        state info.
>    (2) You can unregister, say when un-plugging a device.
>
> [ v2: move code out of #ifndef _WIN32 ]
>    

Applied.  Thanks.

Regards,

Anthony Liguori
> ---
>   sysemu.h     |    4 ++++
>   vl.c         |   19 +++++++++++++++++++
>   3 files changed, 24 insertions(+), 1 deletions(-)
>
> diff --git a/sysemu.h b/sysemu.h
> index fd9dd9d..140b7ff 100644
> --- a/sysemu.h
> +++ b/sysemu.h
> @@ -6,6 +6,7 @@
>   #include "qemu-option.h"
>   #include "qemu-queue.h"
>   #include "qemu-timer.h"
> +#include "notify.h"
>
>   #ifdef _WIN32
>   #include<windows.h>
> @@ -51,6 +52,9 @@ int qemu_powerdown_requested(void);
>   extern qemu_irq qemu_system_powerdown;
>   void qemu_system_reset(void);
>
> +void qemu_add_exit_notifier(Notifier *notify);
> +void qemu_remove_exit_notifier(Notifier *notify);
> +
>   void do_savevm(Monitor *mon, const QDict *qdict);
>   int load_vmstate(const char *name);
>   void do_delvm(Monitor *mon, const QDict *qdict);
> diff --git a/vl.c b/vl.c
> index ac1a998..52c6b22 100644
> --- a/vl.c
> +++ b/vl.c
> @@ -243,6 +243,9 @@ uint8_t qemu_uuid[16];
>   static QEMUBootSetHandler *boot_set_handler;
>   static void *boot_set_opaque;
>
> +static NotifierList exit_notifiers =
> +    NOTIFIER_LIST_INITIALIZER(exit_notifiers);
> +
>   int kvm_allowed = 0;
>   uint32_t xen_domid;
>   enum xen_mode xen_mode = XEN_EMULATE;
> @@ -2117,6 +2120,21 @@ static int balloon_parse(const char *arg)
>       return -1;
>   }
>
> +void qemu_add_exit_notifier(Notifier *notify)
> +{
> +    notifier_list_add(&exit_notifiers, notify);
> +}
> +
> +void qemu_remove_exit_notifier(Notifier *notify)
> +{
> +    notifier_list_remove(&exit_notifiers, notify);
> +}
> +
> +static void qemu_run_exit_notifiers(void)
> +{
> +    notifier_list_notify(&exit_notifiers);
> +}
> +
>   #ifdef _WIN32
>   static BOOL WINAPI qemu_ctrl_handler(DWORD type)
>   {
> @@ -2583,6 +2601,7 @@ int main(int argc, char **argv, char **envp)
>       int show_vnc_port = 0;
>       int defconfig = 1;
>
> +    atexit(qemu_run_exit_notifiers);
>       error_set_progname(argv[0]);
>
>       init_clocks();
>    

  reply	other threads:[~2010-06-14 20:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-06-04 12:08 [Qemu-devel] [PATCH] Add exit notifiers Gerd Hoffmann
2010-06-14 20:57 ` Anthony Liguori [this message]
  -- strict thread matches above, loose matches on Subject: below --
2010-06-04  9:35 Gerd Hoffmann
2010-06-04 10:14 ` Stefan Hajnoczi
2010-06-04 12:10   ` Gerd Hoffmann

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=4C1697A1.30506@codemonkey.ws \
    --to=anthony@codemonkey.ws \
    --cc=kraxel@redhat.com \
    --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.