[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH 2/3] Add exit notifiers.
From: Gerd Hoffmann <kraxel@xxxxxxxxxx> 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 ] Signed-off-by: Anthony Liguori <aliguori@xxxxxxxxxx> (cherry picked from commit fd42deeb4cb42f90084046e3ebdb4383953195e3) Signed-off-by: Maximilian Heyne <mheyne@xxxxxxxxx> --- sysemu.h | 5 +++++ vl.c | 20 ++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/sysemu.h b/sysemu.h index 968258a84..759d0e9d5 100644 --- a/sysemu.h +++ b/sysemu.h @@ -2,6 +2,8 @@ #define SYSEMU_H /* Misc. things related to the system emulator. */ +#include "notify.h" + /* vl.c */ extern const char *bios_name; extern const char *bios_dir; @@ -39,6 +41,9 @@ void qemu_system_powerdown(void); #endif void qemu_system_reset(void); +void qemu_add_exit_notifier(Notifier *notify); +void qemu_remove_exit_notifier(Notifier *notify); + void do_savevm(const char *name); void do_loadvm(const char *name); void do_delvm(const char *name); diff --git a/vl.c b/vl.c index c3c5d630e..2163217ec 100644 --- a/vl.c +++ b/vl.c @@ -282,6 +282,9 @@ uint8_t qemu_uuid[16]; #include "xen-vl-extra.c" +static NotifierList exit_notifiers = + NOTIFIER_LIST_INITIALIZER(exit_notifiers); + /***********************************************************/ /* x86 ISA bus support */ @@ -4843,6 +4846,21 @@ static void vcpu_hex_str_to_bitmap(const char *optarg) } } +void qemu_add_exit_notifier(Notifier *notify) +{ + notifier_list_add(&exit_notifiers, notify); +} + +void qemu_remove_exit_notifier(Notifier *notify) +{ + notifier_list_remove(notify); +} + +static void qemu_run_exit_notifiers(void) +{ + notifier_list_notify(&exit_notifiers); +} + int main(int argc, char **argv, char **envp) { #ifdef CONFIG_GDBSTUB @@ -4887,6 +4905,8 @@ int main(int argc, char **argv, char **envp) const char *chroot_dir = NULL; const char *run_as = NULL; + atexit(qemu_run_exit_notifiers); + qemu_cache_utils_init(envp); logfile = stderr; /* initial value */ -- 2.16.6 Amazon Development Center Germany GmbH Krausenstr. 38 10117 Berlin Geschaeftsfuehrung: Christian Schlaeger, Jonathan Weiss Eingetragen am Amtsgericht Charlottenburg unter HRB 149173 B Sitz: Berlin Ust-ID: DE 289 237 879 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |