19
19
#include <linux/kernel_stat.h>
20
20
#include <linux/interrupt.h>
21
#include <linux/seq_file.h>
22
21
#include <linux/module.h>
23
22
#include <asm/uaccess.h>
26
* Generic, controller-independent functions:
29
int show_interrupts(struct seq_file *p, void *v)
31
int i = *(loff_t *) v, j;
32
struct irqaction * action;
37
for_each_online_cpu(j)
38
seq_printf(p, "CPU%d ",j);
43
struct irq_desc *desc = irq_to_desc(i);
45
raw_spin_lock_irqsave(&desc->lock, flags);
46
action = desc->action;
49
seq_printf(p, "%3d: ",i);
51
seq_printf(p, "%10u ", kstat_irqs(i));
53
for_each_online_cpu(j)
54
seq_printf(p, "%10u ", kstat_irqs_cpu(i, j));
56
seq_printf(p, " %14s", desc->irq_data.chip->name);
57
seq_printf(p, " %s", action->name);
59
for (action=action->next; action; action = action->next)
60
seq_printf(p, ", %s", action->name);
64
raw_spin_unlock_irqrestore(&desc->lock, flags);
70
25
* do_IRQ handles all normal device IRQs (the special
71
26
* SMP cross-CPU interrupts have their own specific