Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a98d24b7 authored by Thomas Gleixner's avatar Thomas Gleixner
Browse files

genirq: Implement sane enumeration



Use the allocator bitmap to lookup active interrupts.

Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Reviewed-by: default avatarIngo Molnar <mingo@elte.hu>
parent 13bfe99e
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -25,6 +25,7 @@

extern int nr_irqs;
extern struct irq_desc *irq_to_desc(unsigned int irq);
unsigned int irq_get_next_irq(unsigned int offset);

# define for_each_irq_desc(irq, desc)					\
	for (irq = 0, desc = irq_to_desc(irq); irq < nr_irqs;		\
@@ -47,6 +48,10 @@ extern struct irq_desc *irq_to_desc(unsigned int irq);
#define irq_node(irq)	0
#endif

# define for_each_active_irq(irq)			\
	for (irq = irq_get_next_irq(0); irq < nr_irqs;	\
	     irq = irq_get_next_irq(irq + 1))

#endif /* CONFIG_GENERIC_HARDIRQS */

#define for_each_irq_nr(irq)                   \
+11 −0
Original line number Diff line number Diff line
@@ -463,6 +463,17 @@ err:
	return ret;
}

/**
 * irq_get_next_irq - get next allocated irq number
 * @offset:	where to start the search
 *
 * Returns next irq number after offset or nr_irqs if none is found.
 */
unsigned int irq_get_next_irq(unsigned int offset)
{
	return find_next_bit(allocated_irqs, nr_irqs, offset);
}

/* Statistics access */
void clear_kstat_irqs(struct irq_desc *desc)
{