Patchwork [01/22] QMP: Introduce RESUME event

login
register
mail settings
Submitter Luiz Capitulino
Date April 20, 2010, 9:09 p.m.
Message ID <1271797792-24571-2-git-send-email-lcapitulino@redhat.com>
Download mbox | patch
Permalink /patch/50574/
State New
Headers show

Comments

Luiz Capitulino - April 20, 2010, 9:09 p.m.
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(-)

Patch

diff --git a/QMP/qmp-events.txt b/QMP/qmp-events.txt
index c084a47..01ec85f 100644
--- a/QMP/qmp-events.txt
+++ b/QMP/qmp-events.txt
@@ -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
 ----------
 
diff --git a/monitor.c b/monitor.c
index afea639..975e77c 100644
--- a/monitor.c
+++ b/monitor.c
@@ -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;
diff --git a/monitor.h b/monitor.h
index 5bdeed1..ea15469 100644
--- a/monitor.h
+++ b/monitor.h
@@ -21,6 +21,7 @@  typedef enum MonitorEvent {
     QEVENT_RESET,
     QEVENT_POWERDOWN,
     QEVENT_STOP,
+    QEVENT_RESUME,
     QEVENT_VNC_CONNECTED,
     QEVENT_VNC_INITIALIZED,
     QEVENT_VNC_DISCONNECTED,
diff --git a/vl.c b/vl.c
index b997cb9..3ba1dc6 100644
--- a/vl.c
+++ b/vl.c
@@ -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);
     }
 }