patch-pre2.0.13 linux/arch/i386/kernel/irq.c
Next file: linux/drivers/block/Config.in
Previous file: linux/arch/i386/defconfig
Back to the patch index
Back to the overall index
- Lines: 45
- Date:
Thu Jun 6 13:44:42 1996
- Orig file:
pre2.0.12/linux/arch/i386/kernel/irq.c
- Orig date:
Tue May 7 16:22:17 1996
diff -u --recursive --new-file pre2.0.12/linux/arch/i386/kernel/irq.c linux/arch/i386/kernel/irq.c
@@ -343,6 +343,7 @@
asmlinkage void do_IRQ(int irq, struct pt_regs * regs)
{
struct irqaction * action = *(irq + irq_action);
+ int do_random = 0;
#ifdef __SMP__
if(smp_threads_ready && active_kernel_processor!=smp_processor_id())
@@ -354,11 +355,12 @@
int_count[smp_processor_id()][irq]++;
#endif
while (action) {
- if (action->flags & SA_SAMPLE_RANDOM)
- add_interrupt_randomness(irq);
+ do_random |= action->flags;
action->handler(irq, action->dev_id, regs);
action = action->next;
}
+ if (do_random & SA_SAMPLE_RANDOM)
+ add_interrupt_randomness(irq);
}
/*
@@ -369,6 +371,8 @@
asmlinkage void do_fast_IRQ(int irq)
{
struct irqaction * action = *(irq + irq_action);
+ int do_random = 0;
+
#ifdef __SMP__
/* IRQ 13 is allowed - that's a flush tlb */
if(smp_threads_ready && active_kernel_processor!=smp_processor_id() && irq!=13)
@@ -380,9 +384,12 @@
int_count[smp_processor_id()][irq]++;
#endif
while (action) {
+ do_random |= action->flags;
action->handler(irq, action->dev_id, NULL);
action = action->next;
}
+ if (do_random & SA_SAMPLE_RANDOM)
+ add_interrupt_randomness(irq);
}
int setup_x86_irq(int irq, struct irqaction * new)
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov
with Sam's (original) version of this