提交 46481d39 编写于 作者: J Jan Kiszka 提交者: Marcelo Tosatti

Flatten the main loop

First of all, vm_can_run is a misnomer, it actually means "no request
pending". Moreover, there is no need to check all pending requests
twice, the first time via the inner loop check and then again when
actually processing the requests. We can simply remove the inner loop
and do the checks directly.
Signed-off-by: NJan Kiszka <jan.kiszka@siemens.com>
Signed-off-by: NMarcelo Tosatti <mtosatti@redhat.com>
上级 8e1b90ec
......@@ -1389,14 +1389,16 @@ void main_loop_wait(int nonblocking)
}
static int vm_can_run(void)
#ifndef CONFIG_IOTHREAD
static int vm_request_pending(void)
{
return !(powerdown_requested ||
reset_requested ||
shutdown_requested ||
debug_requested ||
vmstop_requested);
return powerdown_requested ||
reset_requested ||
shutdown_requested ||
debug_requested ||
vmstop_requested;
}
#endif
qemu_irq qemu_system_powerdown;
......@@ -1411,21 +1413,19 @@ static void main_loop(void)
qemu_main_loop_start();
for (;;) {
do {
#ifndef CONFIG_IOTHREAD
nonblocking = cpu_exec_all();
if (!vm_can_run()) {
nonblocking = true;
}
nonblocking = cpu_exec_all();
if (vm_request_pending()) {
nonblocking = true;
}
#endif
#ifdef CONFIG_PROFILER
ti = profile_getclock();
ti = profile_getclock();
#endif
main_loop_wait(nonblocking);
main_loop_wait(nonblocking);
#ifdef CONFIG_PROFILER
dev_time += profile_getclock() - ti;
dev_time += profile_getclock() - ti;
#endif
} while (vm_can_run());
if ((r = qemu_debug_requested())) {
vm_stop(r);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册