blob: 95d2b74641f5dbe2ecb90bb68d430ab600d61b74 [file] [log] [blame]
Thomas Gleixnerdd3a1db2008-10-16 18:20:58 +02001#ifndef _LINUX_IRQNR_H
2#define _LINUX_IRQNR_H
3
Ingo Molnar0ebb26e2008-12-12 11:26:39 +01004/*
5 * Generic irq_desc iterators:
6 */
7#ifdef __KERNEL__
8
Thomas Gleixnerdd3a1db2008-10-16 18:20:58 +02009#ifndef CONFIG_GENERIC_HARDIRQS
10#include <asm/irq.h>
11# define nr_irqs NR_IRQS
12
13# define for_each_irq_desc(irq, desc) \
14 for (irq = 0; irq < nr_irqs; irq++)
Thomas Gleixnerdd3a1db2008-10-16 18:20:58 +020015
Yinghai Lu240d3672008-12-08 14:06:17 -080016# define for_each_irq_desc_reverse(irq, desc) \
17 for (irq = nr_irqs - 1; irq >= 0; irq--)
18#else
Ingo Molnar0ebb26e2008-12-12 11:26:39 +010019
20extern int nr_irqs;
21
Yinghai Lu240d3672008-12-08 14:06:17 -080022#ifndef CONFIG_SPARSE_IRQ
23
24struct irq_desc;
Yinghai Lu240d3672008-12-08 14:06:17 -080025# define for_each_irq_desc(irq, desc) \
26 for (irq = 0, desc = irq_desc; irq < nr_irqs; irq++, desc++)
27# define for_each_irq_desc_reverse(irq, desc) \
28 for (irq = nr_irqs - 1, desc = irq_desc + (nr_irqs - 1); \
29 irq >= 0; irq--, desc--)
Thomas Gleixnerdd3a1db2008-10-16 18:20:58 +020030#endif
Yinghai Lu240d3672008-12-08 14:06:17 -080031#endif
32
33#define for_each_irq_nr(irq) \
34 for (irq = 0; irq < nr_irqs; irq++)
Thomas Gleixnerdd3a1db2008-10-16 18:20:58 +020035
Ingo Molnar0ebb26e2008-12-12 11:26:39 +010036#endif /* __KERNEL__ */
37
Thomas Gleixnerdd3a1db2008-10-16 18:20:58 +020038#endif