qemu-devel
[Top][All Lists]
Advanced

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

[Qemu-devel] [PATCH qom-cpu 45/59] pc: Abstract pic_irq_request() with q


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

Signed-off-by: Andreas Färber <address@hidden>
---
 hw/i386/pc.c | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)

diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index 71d9019..28c9c6e 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -183,18 +183,23 @@ int cpu_get_pic_interrupt(CPUX86State *env)
     return intno;
 }
 
+static void pic_irq_request_apic_one(CPUState *cs, void *data)
+{
+    int *level = data;
+    X86CPU *cpu = X86_CPU(cs);
+
+    if (apic_accept_pic_intr(cpu->env.apic_state)) {
+        apic_deliver_pic_intr(cpu->env.apic_state, *level);
+    }
+}
+
 static void pic_irq_request(void *opaque, int irq, int level)
 {
     CPUX86State *env = first_cpu;
 
     DPRINTF("pic_irqs: %s irq %d\n", level? "raise" : "lower", irq);
     if (env->apic_state) {
-        while (env) {
-            if (apic_accept_pic_intr(env->apic_state)) {
-                apic_deliver_pic_intr(env->apic_state, level);
-            }
-            env = env->next_cpu;
-        }
+        qemu_for_each_cpu(pic_irq_request_apic_one, &level);
     } else {
         CPUState *cs = CPU(x86_env_get_cpu(env));
         if (level) {
-- 
1.8.1.4




reply via email to

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