Signed-off-by: Andreas Färber <afaer...@suse.de>
---
 cpus.c | 22 +++++++++++++++-------
 1 file changed, 15 insertions(+), 7 deletions(-)

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;
 }
 
 /***********************************************************/
-- 
1.8.1.4


Reply via email to