qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [7247] qemu: handle stop request in main loop (Marcelo Tosatti)
@ 2009-04-24 18:04 Anthony Liguori
  0 siblings, 0 replies; only message in thread
From: Anthony Liguori @ 2009-04-24 18:04 UTC (permalink / raw)
  To: qemu-devel

Revision: 7247
          http://svn.sv.gnu.org/viewvc/?view=rev&root=qemu&revision=7247
Author:   aliguori
Date:     2009-04-24 18:04:02 +0000 (Fri, 24 Apr 2009)
Log Message:
-----------
qemu: handle stop request in main loop (Marcelo Tosatti)

Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Signed-off-by: Anthony Liguori <aliguori@us.ibm.com>

Modified Paths:
--------------
    trunk/vl.c

Modified: trunk/vl.c
===================================================================
--- trunk/vl.c	2009-04-24 18:03:57 UTC (rev 7246)
+++ trunk/vl.c	2009-04-24 18:04:02 UTC (rev 7247)
@@ -3547,15 +3547,6 @@
     }
 }
 
-void vm_stop(int reason)
-{
-    if (vm_running) {
-        cpu_disable_ticks();
-        vm_running = 0;
-        vm_state_notify(0, reason);
-    }
-}
-
 /* reset/shutdown handler */
 
 typedef struct QEMUResetEntry {
@@ -3569,6 +3560,7 @@
 static int shutdown_requested;
 static int powerdown_requested;
 static int debug_requested;
+static int vmstop_requested;
 
 int qemu_shutdown_requested(void)
 {
@@ -3598,6 +3590,22 @@
     return r;
 }
 
+static int qemu_vmstop_requested(void)
+{
+    int r = vmstop_requested;
+    vmstop_requested = 0;
+    return r;
+}
+
+static void do_vm_stop(int reason)
+{
+    if (vm_running) {
+        cpu_disable_ticks();
+        vm_running = 0;
+        vm_state_notify(0, reason);
+    }
+}
+
 void qemu_register_reset(QEMUResetHandler *func, void *opaque)
 {
     QEMUResetEntry **pre, *re;
@@ -3761,6 +3769,11 @@
 #define qemu_mutex_lock_iothread() do { } while (0)
 #define qemu_mutex_unlock_iothread() do { } while (0)
 
+void vm_stop(int reason)
+{
+    do_vm_stop(reason);
+}
+
 #ifdef _WIN32
 static void host_main_loop_wait(int *timeout)
 {
@@ -4058,8 +4071,9 @@
 
 static void main_loop(void)
 {
+    int r;
+
     for (;;) {
-
         do {
 #ifdef CONFIG_PROFILER
             int64_t ti;
@@ -4087,6 +4101,8 @@
             qemu_system_reset();
         if (qemu_powerdown_requested())
             qemu_system_powerdown();
+        if ((r = qemu_vmstop_requested()))
+            vm_stop(r);
     }
 }
 

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2009-04-24 18:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-04-24 18:04 [Qemu-devel] [7247] qemu: handle stop request in main loop (Marcelo Tosatti) Anthony Liguori

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).