diff mbox

[qom-cpu,48/59] cpus: Abstract all_cpu_threads_idle() with qemu_for_each_cpu()

Message ID 1370805206-26574-49-git-send-email-afaerber@suse.de
State New
Headers show

Commit Message

Andreas Färber June 9, 2013, 7:13 p.m. UTC
Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 cpus.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)
diff mbox

Patch

diff --git a/cpus.c b/cpus.c
index 7428389..506a0c8 100644
--- a/cpus.c
+++ b/cpus.c
@@ -77,16 +77,24 @@  static bool cpu_thread_is_idle(CPUState *cpu)
     return true;
 }
 
-static bool all_cpu_threads_idle(void)
+static void one_cpu_thread_idle(CPUState *cpu, void *data)
 {
-    CPUArchState *env;
+    bool *all_idle = data;
 
-    for (env = first_cpu; env != NULL; env = env->next_cpu) {
-        if (!cpu_thread_is_idle(ENV_GET_CPU(env))) {
-            return false;
-        }
+    if (!*all_idle) {
+        return;
     }
-    return true;
+    if (!cpu_thread_is_idle(cpu)) {
+        *all_idle = false;
+    }
+}
+
+static bool all_cpu_threads_idle(void)
+{
+    bool ret = true;
+
+    qemu_for_each_cpu(one_cpu_thread_idle, &ret);
+    return ret;
 }
 
 /***********************************************************/