Add exit notifiers
Like atexit() but with state Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
3af12c86d9
commit
3b6304f706
5
sysemu.h
5
sysemu.h
@ -8,6 +8,7 @@
|
|||||||
#include "qemu-timer.h"
|
#include "qemu-timer.h"
|
||||||
#include "qdict.h"
|
#include "qdict.h"
|
||||||
#include "qerror.h"
|
#include "qerror.h"
|
||||||
|
#include "notify.h"
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
@ -73,6 +74,10 @@ int qemu_savevm_state_complete(Monitor *mon, QEMUFile *f);
|
|||||||
void qemu_savevm_state_cancel(Monitor *mon, QEMUFile *f);
|
void qemu_savevm_state_cancel(Monitor *mon, QEMUFile *f);
|
||||||
int qemu_loadvm_state(QEMUFile *f);
|
int qemu_loadvm_state(QEMUFile *f);
|
||||||
|
|
||||||
|
void exit_notifier_add(Notifier *notifier);
|
||||||
|
void exit_notifier_remove(Notifier *notifier);
|
||||||
|
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
/* Polling handling */
|
/* Polling handling */
|
||||||
|
|
||||||
|
27
vl.c
27
vl.c
@ -150,6 +150,7 @@ int main(int argc, char **argv)
|
|||||||
#include "qemu-option.h"
|
#include "qemu-option.h"
|
||||||
#include "qemu-config.h"
|
#include "qemu-config.h"
|
||||||
#include "qemu-objects.h"
|
#include "qemu-objects.h"
|
||||||
|
#include "notify.h"
|
||||||
|
|
||||||
#include "disas.h"
|
#include "disas.h"
|
||||||
|
|
||||||
@ -553,6 +554,32 @@ static int socket_init(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*********************/
|
||||||
|
/* Exit notifiers */
|
||||||
|
/*********************/
|
||||||
|
|
||||||
|
static NotifierList exit_notifiers = NOTIFIER_LIST_INITIALIZER(exit_notifiers);
|
||||||
|
|
||||||
|
void exit_notifier_add(Notifier *notifier)
|
||||||
|
{
|
||||||
|
notifier_list_add(&exit_notifiers, notifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
void exit_notifier_remove(Notifier *notifier)
|
||||||
|
{
|
||||||
|
notifier_list_remove(&exit_notifiers, notifier);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void exit_notifier_notify(void)
|
||||||
|
{
|
||||||
|
notifier_list_notify(&exit_notifiers);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void exit_notifier_init(void)
|
||||||
|
{
|
||||||
|
atexit(exit_notifier_notify);
|
||||||
|
}
|
||||||
|
|
||||||
/***********************************************************/
|
/***********************************************************/
|
||||||
/* Bluetooth support */
|
/* Bluetooth support */
|
||||||
static int nb_hcis;
|
static int nb_hcis;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user