[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [patch 13/14] qemu: handle stop request in main loop
From: |
mtosatti |
Subject: |
[Qemu-devel] [patch 13/14] qemu: handle stop request in main loop |
Date: |
Wed, 22 Apr 2009 16:15:17 -0300 |
User-agent: |
quilt/0.46-1 |
Signed-off-by: Marcelo Tosatti <address@hidden>
Index: qemu-iothread-4/vl.c
===================================================================
--- qemu-iothread-4.orig/vl.c
+++ qemu-iothread-4/vl.c
@@ -3483,15 +3483,6 @@ void vm_start(void)
}
}
-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 {
@@ -3505,6 +3496,7 @@ static int reset_requested;
static int shutdown_requested;
static int powerdown_requested;
static int debug_requested;
+static int vmstop_requested;
int qemu_shutdown_requested(void)
{
@@ -3534,6 +3526,22 @@ static int qemu_debug_requested(void)
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;
@@ -3697,6 +3705,11 @@ static void qemu_init_main_loop(void)
#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)
{
@@ -3994,8 +4007,9 @@ static int vm_can_run(void)
static void main_loop(void)
{
- for (;;) {
+ int r;
+ for (;;) {
do {
#ifdef CONFIG_PROFILER
int64_t ti;
@@ -4023,6 +4037,8 @@ static void main_loop(void)
qemu_system_reset();
if (qemu_powerdown_requested())
qemu_system_powerdown();
+ if ((r = qemu_vmstop_requested()))
+ vm_stop(r);
}
}
--
- [Qemu-devel] Re: [patch 11/11] qemu: basic kvm iothread support, Anthony Liguori, 2009/04/17
- [Qemu-devel] [patch 00/14] qemu: introduce iothread (v4), mtosatti, 2009/04/22
- [Qemu-devel] [patch 11/14] qemu: use debug_requested global instead of cpu_exec return, mtosatti, 2009/04/22
- [Qemu-devel] [patch 05/14] qemu: factor out special event notification, mtosatti, 2009/04/22
- [Qemu-devel] [patch 08/14] qemu: introduce qemu_cpu_kick, mtosatti, 2009/04/22
- [Qemu-devel] [patch 07/14] qemu: introduce qemu_init_vcpu, mtosatti, 2009/04/22
- [Qemu-devel] [patch 14/14] qemu: introduce iothread, mtosatti, 2009/04/22
- [Qemu-devel] [patch 13/14] qemu: handle stop request in main loop,
mtosatti <=
- [Qemu-devel] [patch 04/14] qemu: explictly rearm alarm timer on main_loop_wait, mtosatti, 2009/04/22
- [Qemu-devel] [patch 12/14] qemu: refactor tcg cpu execution loop, mtosatti, 2009/04/22
- [Qemu-devel] [patch 09/14] qemu: introduce qemu_init_main_loop, mtosatti, 2009/04/22
- [Qemu-devel] [patch 06/14] qemu: refactor main_loop, mtosatti, 2009/04/22
- [Qemu-devel] [patch 10/14] qemu: introduce lock/unlock_iothread, mtosatti, 2009/04/22
- [Qemu-devel] [patch 01/14] qemu: create helper for event notification, mtosatti, 2009/04/22
- [Qemu-devel] [patch 03/14] qemu: per-arch cpu_has_work, mtosatti, 2009/04/22
- [Qemu-devel] [patch 02/14] qemu: mutex/thread/cond wrappers and configure tweaks, mtosatti, 2009/04/22