Commit f9af0e70911e9d6cc9a68f784dca86415486084d

Authored by KOSAKI Motohiro
Committed by Ingo Molnar
1 parent 51bc39f4ba

irq: for_each_irq_desc() move to irqnr.h

Impact: cleanup

before CONFIG_SPARSE_IRQ age, for_each_irq_desc() sat in irqnr.h and
could be called from generic code.

CONFIG_SPARSE_IRQ breaks this assumption, but SPARSE_IRQ version
for_each_irq_desc() also can move into irqnr.h easily.

Also, this patch unifies CONFIG_SPARSE_IRQ and !CONFIG_SPARSE_IRQ
for_each_irq_desc().

Signed-off-by: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

Showing 3 changed files with 24 additions and 32 deletions Side-by-side Diff

... ... @@ -202,33 +202,17 @@
202 202  
203 203 #ifndef CONFIG_SPARSE_IRQ
204 204 extern struct irq_desc irq_desc[NR_IRQS];
205   -
206   -static inline struct irq_desc *irq_to_desc(unsigned int irq)
207   -{
208   - return (irq < NR_IRQS) ? irq_desc + irq : NULL;
209   -}
210   -static inline struct irq_desc *irq_to_desc_alloc_cpu(unsigned int irq, int cpu)
211   -{
212   - return irq_to_desc(irq);
213   -}
214   -
215   -#else
216   -
217   -extern struct irq_desc *irq_to_desc(unsigned int irq);
218   -extern struct irq_desc *irq_to_desc_alloc_cpu(unsigned int irq, int cpu);
  205 +#else /* CONFIG_SPARSE_IRQ */
219 206 extern struct irq_desc *move_irq_desc(struct irq_desc *old_desc, int cpu);
220 207  
221   -# define for_each_irq_desc(irq, desc) \
222   - for (irq = 0, desc = irq_to_desc(irq); irq < nr_irqs; irq++, desc = irq_to_desc(irq))
223   -# define for_each_irq_desc_reverse(irq, desc) \
224   - for (irq = nr_irqs - 1, desc = irq_to_desc(irq); irq >= 0; irq--, desc = irq_to_desc(irq))
225   -
226 208 #define kstat_irqs_this_cpu(DESC) \
227 209 ((DESC)->kstat_irqs[smp_processor_id()])
228 210 #define kstat_incr_irqs_this_cpu(irqno, DESC) \
229 211 ((DESC)->kstat_irqs[smp_processor_id()]++)
230 212  
231   -#endif
  213 +#endif /* CONFIG_SPARSE_IRQ */
  214 +
  215 +extern struct irq_desc *irq_to_desc_alloc_cpu(unsigned int irq, int cpu);
232 216  
233 217 static inline struct irq_desc *
234 218 irq_remap_to_desc(unsigned int irq, struct irq_desc *desc)
include/linux/irqnr.h
... ... @@ -15,20 +15,19 @@
15 15  
16 16 # define for_each_irq_desc_reverse(irq, desc) \
17 17 for (irq = nr_irqs - 1; irq >= 0; irq--)
18   -#else
  18 +#else /* CONFIG_GENERIC_HARDIRQS */
19 19  
20 20 extern int nr_irqs;
  21 +extern struct irq_desc *irq_to_desc(unsigned int irq);
21 22  
22   -#ifndef CONFIG_SPARSE_IRQ
  23 +# define for_each_irq_desc(irq, desc) \
  24 + for (irq = 0, desc = irq_to_desc(irq); irq < nr_irqs; \
  25 + irq++, desc = irq_to_desc(irq))
  26 +# define for_each_irq_desc_reverse(irq, desc) \
  27 + for (irq = nr_irqs - 1, desc = irq_to_desc(irq); irq >= 0; \
  28 + irq--, desc = irq_to_desc(irq))
23 29  
24   -struct irq_desc;
25   -# 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--)
30   -#endif
31   -#endif
  30 +#endif /* CONFIG_GENERIC_HARDIRQS */
32 31  
33 32 #define for_each_irq_nr(irq) \
34 33 for (irq = 0; irq < nr_irqs; irq++)
... ... @@ -203,7 +203,7 @@
203 203 return desc;
204 204 }
205 205  
206   -#else
  206 +#else /* !CONFIG_SPARSE_IRQ */
207 207  
208 208 struct irq_desc irq_desc[NR_IRQS] __cacheline_aligned_in_smp = {
209 209 [0 ... NR_IRQS-1] = {
... ... @@ -218,7 +218,16 @@
218 218 }
219 219 };
220 220  
221   -#endif
  221 +struct irq_desc *irq_to_desc(unsigned int irq)
  222 +{
  223 + return (irq < NR_IRQS) ? irq_desc + irq : NULL;
  224 +}
  225 +
  226 +struct irq_desc *irq_to_desc_alloc_cpu(unsigned int irq, int cpu)
  227 +{
  228 + return irq_to_desc(irq);
  229 +}
  230 +#endif /* !CONFIG_SPARSE_IRQ */
222 231  
223 232 /*
224 233 * What should we do if we get a hw irq event on an illegal vector?