From 447145718940fdd5cd7c449057f79d6c1ec7cd43 Mon Sep 17 00:00:00 2001 From: Thomas Gleixner Date: Thu, 30 Sep 2010 10:45:07 +0200 Subject: [PATCH] --- yaml --- r: 212169 b: refs/heads/master c: a98d24b71b6e229965f18dc00d28dc71cb8fe324 h: refs/heads/master i: 212167: 54a604a9abddff6965af9abdddf4730da4cb3f0f v: v3 --- [refs] | 2 +- trunk/include/linux/irqnr.h | 5 +++++ trunk/kernel/irq/irqdesc.c | 11 +++++++++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/[refs] b/[refs] index 8e95f7b319d6..2ce47eaf6c1d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 13bfe99e09123ef5edb6acb81ba337d2db600b53 +refs/heads/master: a98d24b71b6e229965f18dc00d28dc71cb8fe324 diff --git a/trunk/include/linux/irqnr.h b/trunk/include/linux/irqnr.h index 7bf89bc8cbca..05aa8c23483f 100644 --- a/trunk/include/linux/irqnr.h +++ b/trunk/include/linux/irqnr.h @@ -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) \ diff --git a/trunk/kernel/irq/irqdesc.c b/trunk/kernel/irq/irqdesc.c index 6312a2c83971..2e7e94ef64da 100644 --- a/trunk/kernel/irq/irqdesc.c +++ b/trunk/kernel/irq/irqdesc.c @@ -463,6 +463,17 @@ irq_alloc_descs(int irq, unsigned int from, unsigned int cnt, int node) 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) {