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