@@ -38,6 +38,18 @@ Example:
{ "event": "RESET",
"timestamp": { "seconds": 1267041653, "microseconds": 9518 } }
+RESUME
+------
+
+Emitted when the Virtual Machine resumes execution.
+
+Data: None.
+
+Example:
+
+{ "event": "RESUME",
+ "timestamp": { "seconds": 1271770767, "microseconds": 582542 } }
+
RTC_CHANGE
----------
@@ -423,6 +423,9 @@ void monitor_protocol_event(MonitorEvent event, QObject *data)
case QEVENT_STOP:
event_name = "STOP";
break;
+ case QEVENT_RESUME:
+ event_name = "RESUME";
+ break;
case QEVENT_VNC_CONNECTED:
event_name = "VNC_CONNECTED";
break;
@@ -21,6 +21,7 @@ typedef enum MonitorEvent {
QEVENT_RESET,
QEVENT_POWERDOWN,
QEVENT_STOP,
+ QEVENT_RESUME,
QEVENT_VNC_CONNECTED,
QEVENT_VNC_INITIALIZED,
QEVENT_VNC_DISCONNECTED,
@@ -1692,6 +1692,7 @@ void vm_start(void)
vm_running = 1;
vm_state_notify(1, 0);
resume_all_vcpus();
+ monitor_protocol_event(QEVENT_RESUME, NULL);
}
}
It's emitted when the Virtual Machine resumes execution. This is needed because next patches will convert savevm/loadvm to QMP and they call vm_stop() (which causes QMP to emit the STOP event) and vm_start() (which doesn't emit any event). Clients will get confused with a STOP event without a matching RESUME event. Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com> --- QMP/qmp-events.txt | 12 ++++++++++++ monitor.c | 3 +++ monitor.h | 1 + vl.c | 1 + 4 files changed, 17 insertions(+), 0 deletions(-)