提交 6e29f5da 编写于 作者: A aliguori

qemu: handle stop request in main loop (Marcelo Tosatti)

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


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@7247 c046a42c-6fe2-441c-8c8c-71466251a162
上级 e6e35b1e
......@@ -3547,15 +3547,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 {
......@@ -3569,6 +3560,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)
{
......@@ -3598,6 +3590,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;
......@@ -3761,6 +3769,11 @@ void qemu_cpu_kick(void *env)
#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 int vm_can_run(void)
static void main_loop(void)
{
for (;;) {
int r;
for (;;) {
do {
#ifdef CONFIG_PROFILER
int64_t ti;
......@@ -4087,6 +4101,8 @@ static void main_loop(void)
qemu_system_reset();
if (qemu_powerdown_requested())
qemu_system_powerdown();
if ((r = qemu_vmstop_requested()))
vm_stop(r);
}
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册