QMP: Introduce basic asynchronous events
Debug, shutdown, reset, powerdown and stop are all basic events, as they are very simple they can be added in the same commit. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
This commit is contained in:
parent
0d1ea871b0
commit
b1a15e7eaa
15
monitor.c
15
monitor.c
|
@ -342,6 +342,21 @@ void monitor_protocol_event(MonitorEvent event, QObject *data)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
switch (event) {
|
switch (event) {
|
||||||
|
case EVENT_DEBUG:
|
||||||
|
event_name = "DEBUG";
|
||||||
|
break;
|
||||||
|
case EVENT_SHUTDOWN:
|
||||||
|
event_name = "SHUTDOWN";
|
||||||
|
break;
|
||||||
|
case EVENT_RESET:
|
||||||
|
event_name = "RESET";
|
||||||
|
break;
|
||||||
|
case EVENT_POWERDOWN:
|
||||||
|
event_name = "POWERDOWN";
|
||||||
|
break;
|
||||||
|
case EVENT_STOP:
|
||||||
|
event_name = "STOP";
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
abort();
|
abort();
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -15,6 +15,11 @@ extern Monitor *cur_mon;
|
||||||
|
|
||||||
/* QMP events */
|
/* QMP events */
|
||||||
typedef enum MonitorEvent {
|
typedef enum MonitorEvent {
|
||||||
|
EVENT_DEBUG,
|
||||||
|
EVENT_SHUTDOWN,
|
||||||
|
EVENT_RESET,
|
||||||
|
EVENT_POWERDOWN,
|
||||||
|
EVENT_STOP,
|
||||||
EVENT_MAX,
|
EVENT_MAX,
|
||||||
} MonitorEvent;
|
} MonitorEvent;
|
||||||
|
|
||||||
|
|
11
vl.c
11
vl.c
|
@ -4060,9 +4060,12 @@ static void main_loop(void)
|
||||||
#endif
|
#endif
|
||||||
} while (vm_can_run());
|
} while (vm_can_run());
|
||||||
|
|
||||||
if (qemu_debug_requested())
|
if (qemu_debug_requested()) {
|
||||||
|
monitor_protocol_event(EVENT_DEBUG, NULL);
|
||||||
vm_stop(EXCP_DEBUG);
|
vm_stop(EXCP_DEBUG);
|
||||||
|
}
|
||||||
if (qemu_shutdown_requested()) {
|
if (qemu_shutdown_requested()) {
|
||||||
|
monitor_protocol_event(EVENT_SHUTDOWN, NULL);
|
||||||
if (no_shutdown) {
|
if (no_shutdown) {
|
||||||
vm_stop(0);
|
vm_stop(0);
|
||||||
no_shutdown = 0;
|
no_shutdown = 0;
|
||||||
|
@ -4070,15 +4073,19 @@ static void main_loop(void)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (qemu_reset_requested()) {
|
if (qemu_reset_requested()) {
|
||||||
|
monitor_protocol_event(EVENT_RESET, NULL);
|
||||||
pause_all_vcpus();
|
pause_all_vcpus();
|
||||||
qemu_system_reset();
|
qemu_system_reset();
|
||||||
resume_all_vcpus();
|
resume_all_vcpus();
|
||||||
}
|
}
|
||||||
if (qemu_powerdown_requested()) {
|
if (qemu_powerdown_requested()) {
|
||||||
|
monitor_protocol_event(EVENT_POWERDOWN, NULL);
|
||||||
qemu_irq_raise(qemu_system_powerdown);
|
qemu_irq_raise(qemu_system_powerdown);
|
||||||
}
|
}
|
||||||
if ((r = qemu_vmstop_requested()))
|
if ((r = qemu_vmstop_requested())) {
|
||||||
|
monitor_protocol_event(EVENT_STOP, NULL);
|
||||||
vm_stop(r);
|
vm_stop(r);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
pause_all_vcpus();
|
pause_all_vcpus();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue