diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/linux/interrupt.h | 6 | ||||
-rw-r--r-- | include/linux/irq.h | 10 | ||||
-rw-r--r-- | include/linux/irqnr.h | 8 | ||||
-rw-r--r-- | include/linux/kernel_stat.h | 13 |
4 files changed, 21 insertions, 16 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 9127f6b51a39..468e3a25a4a1 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
@@ -462,6 +462,12 @@ static inline void init_irq_proc(void) | |||
462 | } | 462 | } |
463 | #endif | 463 | #endif |
464 | 464 | ||
465 | #if defined(CONFIG_GENERIC_HARDIRQS) && defined(CONFIG_DEBUG_SHIRQ) | ||
466 | extern void debug_poll_all_shared_irqs(void); | ||
467 | #else | ||
468 | static inline void debug_poll_all_shared_irqs(void) { } | ||
469 | #endif | ||
470 | |||
465 | int show_interrupts(struct seq_file *p, void *v); | 471 | int show_interrupts(struct seq_file *p, void *v); |
466 | 472 | ||
467 | struct irq_desc; | 473 | struct irq_desc; |
diff --git a/include/linux/irq.h b/include/linux/irq.h index f899b502f186..48901e9a33b9 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -160,12 +160,10 @@ struct irq_2_iommu; | |||
160 | */ | 160 | */ |
161 | struct irq_desc { | 161 | struct irq_desc { |
162 | unsigned int irq; | 162 | unsigned int irq; |
163 | #ifdef CONFIG_SPARSE_IRQ | ||
164 | struct timer_rand_state *timer_rand_state; | 163 | struct timer_rand_state *timer_rand_state; |
165 | unsigned int *kstat_irqs; | 164 | unsigned int *kstat_irqs; |
166 | # ifdef CONFIG_INTR_REMAP | 165 | #ifdef CONFIG_INTR_REMAP |
167 | struct irq_2_iommu *irq_2_iommu; | 166 | struct irq_2_iommu *irq_2_iommu; |
168 | # endif | ||
169 | #endif | 167 | #endif |
170 | irq_flow_handler_t handle_irq; | 168 | irq_flow_handler_t handle_irq; |
171 | struct irq_chip *chip; | 169 | struct irq_chip *chip; |
@@ -202,12 +200,6 @@ extern void arch_free_chip_data(struct irq_desc *old_desc, struct irq_desc *desc | |||
202 | extern struct irq_desc irq_desc[NR_IRQS]; | 200 | extern struct irq_desc irq_desc[NR_IRQS]; |
203 | #else /* CONFIG_SPARSE_IRQ */ | 201 | #else /* CONFIG_SPARSE_IRQ */ |
204 | extern struct irq_desc *move_irq_desc(struct irq_desc *old_desc, int cpu); | 202 | extern struct irq_desc *move_irq_desc(struct irq_desc *old_desc, int cpu); |
205 | |||
206 | #define kstat_irqs_this_cpu(DESC) \ | ||
207 | ((DESC)->kstat_irqs[smp_processor_id()]) | ||
208 | #define kstat_incr_irqs_this_cpu(irqno, DESC) \ | ||
209 | ((DESC)->kstat_irqs[smp_processor_id()]++) | ||
210 | |||
211 | #endif /* CONFIG_SPARSE_IRQ */ | 203 | #endif /* CONFIG_SPARSE_IRQ */ |
212 | 204 | ||
213 | extern struct irq_desc *irq_to_desc_alloc_cpu(unsigned int irq, int cpu); | 205 | extern struct irq_desc *irq_to_desc_alloc_cpu(unsigned int irq, int cpu); |
diff --git a/include/linux/irqnr.h b/include/linux/irqnr.h index 86af92e9e84c..52ebbb4b161d 100644 --- a/include/linux/irqnr.h +++ b/include/linux/irqnr.h | |||
@@ -28,13 +28,17 @@ extern struct irq_desc *irq_to_desc(unsigned int irq); | |||
28 | # define for_each_irq_desc(irq, desc) \ | 28 | # define for_each_irq_desc(irq, desc) \ |
29 | for (irq = 0, desc = irq_to_desc(irq); irq < nr_irqs; \ | 29 | for (irq = 0, desc = irq_to_desc(irq); irq < nr_irqs; \ |
30 | irq++, desc = irq_to_desc(irq)) \ | 30 | irq++, desc = irq_to_desc(irq)) \ |
31 | if (desc) | 31 | if (!desc) \ |
32 | ; \ | ||
33 | else | ||
32 | 34 | ||
33 | 35 | ||
34 | # define for_each_irq_desc_reverse(irq, desc) \ | 36 | # define for_each_irq_desc_reverse(irq, desc) \ |
35 | for (irq = nr_irqs - 1, desc = irq_to_desc(irq); irq >= 0; \ | 37 | for (irq = nr_irqs - 1, desc = irq_to_desc(irq); irq >= 0; \ |
36 | irq--, desc = irq_to_desc(irq)) \ | 38 | irq--, desc = irq_to_desc(irq)) \ |
37 | if (desc) | 39 | if (!desc) \ |
40 | ; \ | ||
41 | else | ||
38 | 42 | ||
39 | #endif /* CONFIG_GENERIC_HARDIRQS */ | 43 | #endif /* CONFIG_GENERIC_HARDIRQS */ |
40 | 44 | ||
diff --git a/include/linux/kernel_stat.h b/include/linux/kernel_stat.h index 570d20413119..0c8b89f28a95 100644 --- a/include/linux/kernel_stat.h +++ b/include/linux/kernel_stat.h | |||
@@ -28,7 +28,7 @@ struct cpu_usage_stat { | |||
28 | 28 | ||
29 | struct kernel_stat { | 29 | struct kernel_stat { |
30 | struct cpu_usage_stat cpustat; | 30 | struct cpu_usage_stat cpustat; |
31 | #ifndef CONFIG_SPARSE_IRQ | 31 | #ifndef CONFIG_GENERIC_HARDIRQS |
32 | unsigned int irqs[NR_IRQS]; | 32 | unsigned int irqs[NR_IRQS]; |
33 | #endif | 33 | #endif |
34 | }; | 34 | }; |
@@ -41,7 +41,7 @@ DECLARE_PER_CPU(struct kernel_stat, kstat); | |||
41 | 41 | ||
42 | extern unsigned long long nr_context_switches(void); | 42 | extern unsigned long long nr_context_switches(void); |
43 | 43 | ||
44 | #ifndef CONFIG_SPARSE_IRQ | 44 | #ifndef CONFIG_GENERIC_HARDIRQS |
45 | #define kstat_irqs_this_cpu(irq) \ | 45 | #define kstat_irqs_this_cpu(irq) \ |
46 | (kstat_this_cpu.irqs[irq]) | 46 | (kstat_this_cpu.irqs[irq]) |
47 | 47 | ||
@@ -52,16 +52,19 @@ static inline void kstat_incr_irqs_this_cpu(unsigned int irq, | |||
52 | { | 52 | { |
53 | kstat_this_cpu.irqs[irq]++; | 53 | kstat_this_cpu.irqs[irq]++; |
54 | } | 54 | } |
55 | #endif | ||
56 | |||
57 | 55 | ||
58 | #ifndef CONFIG_SPARSE_IRQ | ||
59 | static inline unsigned int kstat_irqs_cpu(unsigned int irq, int cpu) | 56 | static inline unsigned int kstat_irqs_cpu(unsigned int irq, int cpu) |
60 | { | 57 | { |
61 | return kstat_cpu(cpu).irqs[irq]; | 58 | return kstat_cpu(cpu).irqs[irq]; |
62 | } | 59 | } |
63 | #else | 60 | #else |
61 | #include <linux/irq.h> | ||
64 | extern unsigned int kstat_irqs_cpu(unsigned int irq, int cpu); | 62 | extern unsigned int kstat_irqs_cpu(unsigned int irq, int cpu); |
63 | #define kstat_irqs_this_cpu(DESC) \ | ||
64 | ((DESC)->kstat_irqs[smp_processor_id()]) | ||
65 | #define kstat_incr_irqs_this_cpu(irqno, DESC) \ | ||
66 | ((DESC)->kstat_irqs[smp_processor_id()]++) | ||
67 | |||
65 | #endif | 68 | #endif |
66 | 69 | ||
67 | /* | 70 | /* |