mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
Rework vm_state_change notifiers (Jan Kiszka)
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6402 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
5c047c0d3f
commit
9781e0401a
4 changed files with 12 additions and 37 deletions
29
vl.c
29
vl.c
|
@ -3451,37 +3451,21 @@ void qemu_del_vm_change_state_handler(VMChangeStateEntry *e)
|
|||
qemu_free (e);
|
||||
}
|
||||
|
||||
static void vm_state_notify(int running)
|
||||
static void vm_state_notify(int running, int reason)
|
||||
{
|
||||
VMChangeStateEntry *e;
|
||||
|
||||
for (e = vm_change_state_head.lh_first; e; e = e->entries.le_next) {
|
||||
e->cb(e->opaque, running);
|
||||
e->cb(e->opaque, running, reason);
|
||||
}
|
||||
}
|
||||
|
||||
/* XXX: support several handlers */
|
||||
static VMStopHandler *vm_stop_cb;
|
||||
static void *vm_stop_opaque;
|
||||
|
||||
int qemu_add_vm_stop_handler(VMStopHandler *cb, void *opaque)
|
||||
{
|
||||
vm_stop_cb = cb;
|
||||
vm_stop_opaque = opaque;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void qemu_del_vm_stop_handler(VMStopHandler *cb, void *opaque)
|
||||
{
|
||||
vm_stop_cb = NULL;
|
||||
}
|
||||
|
||||
void vm_start(void)
|
||||
{
|
||||
if (!vm_running) {
|
||||
cpu_enable_ticks();
|
||||
vm_running = 1;
|
||||
vm_state_notify(1);
|
||||
vm_state_notify(1, 0);
|
||||
qemu_rearm_alarm_timer(alarm_timer);
|
||||
}
|
||||
}
|
||||
|
@ -3491,12 +3475,7 @@ void vm_stop(int reason)
|
|||
if (vm_running) {
|
||||
cpu_disable_ticks();
|
||||
vm_running = 0;
|
||||
if (reason != 0) {
|
||||
if (vm_stop_cb) {
|
||||
vm_stop_cb(vm_stop_opaque, reason);
|
||||
}
|
||||
}
|
||||
vm_state_notify(0);
|
||||
vm_state_notify(0, reason);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue