Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 116428
b: refs/heads/master
c: 52b1732
h: refs/heads/master
v: v3
  • Loading branch information
Yinghai Lu authored and Ingo Molnar committed Oct 16, 2008
1 parent f5b8f81 commit f1a0bb2
Show file tree
Hide file tree
Showing 3 changed files with 49 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: a2f9f43858db64cb8b45c4f6746d7a52b80d4dcb
refs/heads/master: 52b17329d6d0a4824b89206803a430915031ff23
31 changes: 24 additions & 7 deletions trunk/arch/x86/kernel/irq_64.c
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,27 @@ static inline void stack_overflow_check(struct pt_regs *regs)

int show_interrupts(struct seq_file *p, void *v)
{
int i = *(loff_t *) v, j;
int i, j;
struct irqaction * action;
unsigned long flags;
unsigned int entries;
struct irq_desc *desc;
int tail = 0;

#ifdef CONFIG_HAVE_SPARSE_IRQ
desc = (struct irq_desc *)v;
entries = -1U;
i = desc->irq;
if (!desc->next)
tail = 1;
#else
entries = nr_irqs - 1;
i = *(loff_t *) v;
if (i == nr_irqs)
tail = 1;
else
desc = irq_to_desc(i);
#endif

if (i == 0) {
seq_printf(p, " ");
Expand All @@ -81,12 +99,8 @@ int show_interrupts(struct seq_file *p, void *v)
seq_putc(p, '\n');
}

if (i < nr_irqs) {
if (i <= entries) {
unsigned any_count = 0;
struct irq_desc *desc = irq_to_desc(i);

if (!desc)
return 0;

spin_lock_irqsave(&desc->lock, flags);
#ifndef CONFIG_SMP
Expand Down Expand Up @@ -116,7 +130,9 @@ int show_interrupts(struct seq_file *p, void *v)
seq_putc(p, '\n');
skip:
spin_unlock_irqrestore(&desc->lock, flags);
} else if (i == nr_irqs) {
}

if (tail) {
seq_printf(p, "NMI: ");
for_each_online_cpu(j)
seq_printf(p, "%10u ", cpu_pda(j)->__nmi_count);
Expand Down Expand Up @@ -155,6 +171,7 @@ int show_interrupts(struct seq_file *p, void *v)
seq_printf(p, " Spurious interrupts\n");
seq_printf(p, "ERR: %10u\n", atomic_read(&irq_err_count));
}

return 0;
}

Expand Down
28 changes: 24 additions & 4 deletions trunk/fs/proc/proc_misc.c
Original file line number Diff line number Diff line change
Expand Up @@ -645,23 +645,43 @@ static const struct file_operations proc_stat_operations = {
*/
static void *int_seq_start(struct seq_file *f, loff_t *pos)
{
#ifdef CONFIG_HAVE_SPARSE_IRQ
struct irq_desc *desc;
int irq;
int count = *pos;

for_each_irq_desc(irq, desc) {
if (count-- == 0)
return desc;
}

return NULL;
#else
return (*pos <= nr_irqs) ? pos : NULL;
#endif
}


static void *int_seq_next(struct seq_file *f, void *v, loff_t *pos)
{
#ifdef CONFIG_HAVE_SPARSE_IRQ
struct irq_desc *desc;

desc = ((struct irq_desc *)v)->next;
(*pos)++;
if (*pos > nr_irqs)
return NULL;
return pos;

return desc;
#else
(*pos)++;
return (*pos <= nr_irqs) ? pos : NULL;
#endif
}

static void int_seq_stop(struct seq_file *f, void *v)
{
/* Nothing to do */
}


static const struct seq_operations int_seq_ops = {
.start = int_seq_start,
.next = int_seq_next,
Expand Down

0 comments on commit f1a0bb2

Please sign in to comment.