qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH qom-cpu 51/59] exec: Abstract qemu_get_cpu() with qe


From: Andreas Färber
Subject: [Qemu-devel] [PATCH qom-cpu 51/59] exec: Abstract qemu_get_cpu() with qemu_for_each_cpu()
Date: Sun, 9 Jun 2013 21:13:18 +0200

Signed-off-by: Andreas Färber <address@hidden>
---
 exec.c | 29 +++++++++++++++++++----------
 1 file changed, 19 insertions(+), 10 deletions(-)

diff --git a/exec.c b/exec.c
index 91618fb..d2e790c 100644
--- a/exec.c
+++ b/exec.c
@@ -262,20 +262,29 @@ static const VMStateDescription vmstate_cpu_common = {
 #define vmstate_cpu_common vmstate_dummy
 #endif
 
-CPUState *qemu_get_cpu(int index)
+typedef struct GetCPUData {
+    int index;
+    CPUState *ret;
+} GetCPUData;
+
+static void qemu_get_one_cpu(CPUState *cpu, void *data)
 {
-    CPUArchState *env = first_cpu;
-    CPUState *cpu = NULL;
+    GetCPUData *s = data;
 
-    while (env) {
-        cpu = ENV_GET_CPU(env);
-        if (cpu->cpu_index == index) {
-            break;
-        }
-        env = env->next_cpu;
+    if (cpu->cpu_index == s->index) {
+        s->ret = cpu;
     }
+}
+
+CPUState *qemu_get_cpu(int index)
+{
+    GetCPUData s = {
+        .index = index,
+        .ret = NULL,
+    };
 
-    return env ? cpu : NULL;
+    qemu_for_each_cpu(qemu_get_one_cpu, &s);
+    return s.ret;
 }
 
 void qemu_for_each_cpu(void (*func)(CPUState *cpu, void *data), void *data)
-- 
1.8.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]