suspend: add system_wakeup monitor command
authorGerd Hoffmann <kraxel@redhat.com>
Thu, 23 Feb 2012 12:45:21 +0000 (13:45 +0100)
committerAnthony Liguori <aliguori@us.ibm.com>
Fri, 24 Feb 2012 19:36:03 +0000 (13:36 -0600)
This patch adds the system_wakeup monitor command which will simply
wake up suspended guests.

Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>
hmp-commands.hx
hmp.c
hmp.h
qapi-schema.json
qmp-commands.hx
qmp.c

index 573b8233473c99b35ad8d6460626f467c0311d0c..64b3656d8ee6839beb1261eff4b7df4a903ec86f 100644 (file)
@@ -349,6 +349,20 @@ STEXI
 @item c or cont
 @findex cont
 Resume emulation.
+ETEXI
+
+    {
+        .name       = "system_wakeup",
+        .args_type  = "",
+        .params     = "",
+        .help       = "wakeup guest from suspend",
+        .mhandler.cmd = hmp_system_wakeup,
+    },
+
+STEXI
+@item system_wakeup
+@findex system_wakeup
+Wakeup guest from suspend.
 ETEXI
 
     {
diff --git a/hmp.c b/hmp.c
index 8ff8c9434e10cbfa73c877f90c214b3b5a53c674..3a54455574c0e0401910942bfc5e56c97505b261 100644 (file)
--- a/hmp.c
+++ b/hmp.c
@@ -632,6 +632,11 @@ void hmp_cont(Monitor *mon, const QDict *qdict)
     }
 }
 
+void hmp_system_wakeup(Monitor *mon, const QDict *qdict)
+{
+    qmp_system_wakeup(NULL);
+}
+
 void hmp_inject_nmi(Monitor *mon, const QDict *qdict)
 {
     Error *errp = NULL;
diff --git a/hmp.h b/hmp.h
index 18eecbdcb9c148c8fc31cd6b2497e66df1e8c24c..540946495436897a7c8e8800c375911666f1888a 100644 (file)
--- a/hmp.h
+++ b/hmp.h
@@ -41,6 +41,7 @@ void hmp_cpu(Monitor *mon, const QDict *qdict);
 void hmp_memsave(Monitor *mon, const QDict *qdict);
 void hmp_pmemsave(Monitor *mon, const QDict *qdict);
 void hmp_cont(Monitor *mon, const QDict *qdict);
+void hmp_system_wakeup(Monitor *mon, const QDict *qdict);
 void hmp_inject_nmi(Monitor *mon, const QDict *qdict);
 void hmp_set_link(Monitor *mon, const QDict *qdict);
 void hmp_block_passwd(Monitor *mon, const QDict *qdict);
index d02ee867a502413ff0134daf3338202938e54ccf..d0b6792e3cc565d7cd85321a215d8b10d5720821 100644 (file)
 ##
 { 'command': 'cont' }
 
+##
+# @system_wakeup:
+#
+# Wakeup guest from suspend.  Does nothing in case the guest isn't suspended.
+#
+# Since:  1.1
+#
+# Returns:  nothing.
+##
+{ 'command': 'system_wakeup' }
+
 ##
 # @inject-nmi:
 #
index dee95f1d672993ae8695ba5f7e24cab728692670..705f704021016eb7a6b14bc7ff754203c55240a3 100644 (file)
@@ -209,6 +209,27 @@ Example:
 -> { "execute": "cont" }
 <- { "return": {} }
 
+EQMP
+
+    {
+        .name       = "system_wakeup",
+        .args_type  = "",
+        .mhandler.cmd_new = qmp_marshal_input_system_wakeup,
+    },
+
+SQMP
+system_wakeup
+-------------
+
+Wakeup guest from suspend.
+
+Arguments: None.
+
+Example:
+
+-> { "execute": "system_wakeup" }
+<- { "return": {} }
+
 EQMP
 
     {
diff --git a/qmp.c b/qmp.c
index 1f64844095b6c40f732f88220bcadde1ef8471e7..a182b5197e47a78f4780dbba4a56409a2c4ca48b 100644 (file)
--- a/qmp.c
+++ b/qmp.c
@@ -163,6 +163,11 @@ void qmp_cont(Error **errp)
     vm_start();
 }
 
+void qmp_system_wakeup(Error **errp)
+{
+    qemu_system_wakeup_request(QEMU_WAKEUP_REASON_OTHER);
+}
+
 ObjectPropertyInfoList *qmp_qom_list(const char *path, Error **errp)
 {
     Object *obj;