Commit f9af0e70911e9d6cc9a68f784dca86415486084d
Committed by
Ingo Molnar
1 parent
51bc39f4ba
Exists in
master
and in
4 other branches
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
include/linux/irq.h
... | ... | @@ -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++) |
kernel/irq/handle.c
... | ... | @@ -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? |