]> xenbits.xensource.com Git - qemu-xen.git/commitdiff
cpu: Add qemu_for_each_cpu()
authorMichael S. Tsirkin <mst@redhat.com>
Wed, 24 Apr 2013 20:58:04 +0000 (22:58 +0200)
committerAnthony PERARD <anthony.perard@citrix.com>
Fri, 14 Jun 2013 16:43:38 +0000 (17:43 +0100)
Wrapper to avoid open-coded loops and to make CPUState iteration
independent of CPUArchState.

Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Igor Mammedov <imammedo@redhat.com>
Signed-off-by: Andreas Färber <afaerber@suse.de>
(cherry picked from QEMU commit d6b9e0d60cc511eca210834428bb74508cff3d33)
Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
exec.c
include/qemu/cpu.h

diff --git a/exec.c b/exec.c
index 8435de0bd2f9248e9050db27ff7fbd78eb4351f8..9fb6927d970909cdcc51df15c8744f062009856d 100644 (file)
--- a/exec.c
+++ b/exec.c
@@ -692,6 +692,16 @@ CPUArchState *qemu_get_cpu(int cpu)
     return env;
 }
 
+void qemu_for_each_cpu(void (*func)(CPUState *cpu, void *data), void *data)
+{
+    CPUArchState *env = first_cpu;
+
+    while (env) {
+        func(ENV_GET_CPU(env), data);
+        env = env->next_cpu;
+    }
+}
+
 void cpu_exec_init(CPUArchState *env)
 {
 #ifndef CONFIG_USER_ONLY
index 8d2e0cb58713b482ac551572e2b25fad417c3640..23b8b6fa32e8166b029675659ba0a983e220effc 100644 (file)
@@ -138,5 +138,14 @@ bool cpu_is_stopped(CPUState *cpu);
  */
 void run_on_cpu(CPUState *cpu, void (*func)(void *data), void *data);
 
+/**
+ * qemu_for_each_cpu:
+ * @func: The function to be executed.
+ * @data: Data to pass to the function.
+ *
+ * Executes @func for each CPU.
+ */
+void qemu_for_each_cpu(void (*func)(CPUState *cpu, void *data), void *data);
+
 
 #endif