[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [patch 12/14] qemu: refactor tcg cpu execution loop
From: |
mtosatti |
Subject: |
[Qemu-devel] [patch 12/14] qemu: refactor tcg cpu execution loop |
Date: |
Wed, 22 Apr 2009 16:15:16 -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
@@ -3887,6 +3887,30 @@ static int qemu_cpu_exec(CPUState *env)
return ret;
}
+static void tcg_cpu_exec(void)
+{
+ int ret;
+
+ if (next_cpu == NULL)
+ next_cpu = first_cpu;
+ for (; next_cpu != NULL; next_cpu = next_cpu->next_cpu) {
+ CPUState *env = cur_cpu = next_cpu;
+
+ if (!vm_running)
+ break;
+ if (timer_alarm_pending) {
+ timer_alarm_pending = 0;
+ break;
+ }
+ ret = qemu_cpu_exec(env);
+ if (ret == EXCP_DEBUG) {
+ gdb_set_stop_cpu(env);
+ debug_requested = 1;
+ break;
+ }
+ }
+}
+
static int cpu_has_work(CPUState *env)
{
if (!env->halted)
@@ -3970,31 +3994,13 @@ static int vm_can_run(void)
static void main_loop(void)
{
- int ret = 0;
-#ifdef CONFIG_PROFILER
- int64_t ti;
-#endif
-
for (;;) {
- do {
- if (next_cpu == NULL)
- next_cpu = first_cpu;
- for (; next_cpu != NULL; next_cpu = next_cpu->next_cpu) {
- CPUState *env = cur_cpu = next_cpu;
- if (!vm_running)
- break;
- if (timer_alarm_pending) {
- timer_alarm_pending = 0;
- break;
- }
- ret = qemu_cpu_exec(env);
- if (ret == EXCP_DEBUG) {
- gdb_set_stop_cpu(env);
- debug_requested = 1;
- break;
- }
- }
+ do {
+#ifdef CONFIG_PROFILER
+ int64_t ti;
+#endif
+ tcg_cpu_exec();
#ifdef CONFIG_PROFILER
ti = profile_getclock();
#endif
@@ -4004,7 +4010,6 @@ static void main_loop(void)
#endif
} while (vm_can_run());
-
if (qemu_debug_requested())
vm_stop(EXCP_DEBUG);
if (qemu_shutdown_requested()) {
--
- [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, 2009/04/22
- [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 <=
- [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