aboutsummaryrefslogtreecommitdiffstats
path: root/fs/proc
diff options
context:
space:
mode:
authorYinghai Lu <yhlu.kernel@gmail.com>2008-08-19 23:50:20 -0400
committerIngo Molnar <mingo@elte.hu>2008-10-16 10:52:51 -0400
commit52b17329d6d0a4824b89206803a430915031ff23 (patch)
tree714884d90d67a771eef01863a677d502b2d758fc /fs/proc
parenta2f9f43858db64cb8b45c4f6746d7a52b80d4dcb (diff)
x86_64: make /proc/interrupts work with dyn irq_desc
loop with irq_desc list Signed-off-by: Yinghai Lu <yhlu.kernel@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'fs/proc')
-rw-r--r--fs/proc/proc_misc.c28
1 files changed, 24 insertions, 4 deletions
diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c
index c3cbabe8b38e..72dd739a7f8a 100644
--- a/fs/proc/proc_misc.c
+++ b/fs/proc/proc_misc.c
@@ -645,15 +645,36 @@ static const struct file_operations proc_stat_operations = {
645 */ 645 */
646static void *int_seq_start(struct seq_file *f, loff_t *pos) 646static void *int_seq_start(struct seq_file *f, loff_t *pos)
647{ 647{
648#ifdef CONFIG_HAVE_SPARSE_IRQ
649 struct irq_desc *desc;
650 int irq;
651 int count = *pos;
652
653 for_each_irq_desc(irq, desc) {
654 if (count-- == 0)
655 return desc;
656 }
657
658 return NULL;
659#else
648 return (*pos <= nr_irqs) ? pos : NULL; 660 return (*pos <= nr_irqs) ? pos : NULL;
661#endif
649} 662}
650 663
664
651static void *int_seq_next(struct seq_file *f, void *v, loff_t *pos) 665static void *int_seq_next(struct seq_file *f, void *v, loff_t *pos)
652{ 666{
667#ifdef CONFIG_HAVE_SPARSE_IRQ
668 struct irq_desc *desc;
669
670 desc = ((struct irq_desc *)v)->next;
653 (*pos)++; 671 (*pos)++;
654 if (*pos > nr_irqs) 672
655 return NULL; 673 return desc;
656 return pos; 674#else
675 (*pos)++;
676 return (*pos <= nr_irqs) ? pos : NULL;
677#endif
657} 678}
658 679
659static void int_seq_stop(struct seq_file *f, void *v) 680static void int_seq_stop(struct seq_file *f, void *v)
@@ -661,7 +682,6 @@ static void int_seq_stop(struct seq_file *f, void *v)
661 /* Nothing to do */ 682 /* Nothing to do */
662} 683}
663 684
664
665static const struct seq_operations int_seq_ops = { 685static const struct seq_operations int_seq_ops = {
666 .start = int_seq_start, 686 .start = int_seq_start,
667 .next = int_seq_next, 687 .next = int_seq_next,