diff options
Diffstat (limited to 'include/linux/irq.h')
-rw-r--r-- | include/linux/irq.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/linux/irq.h b/include/linux/irq.h index 974890b3c52f..b7cbeed972e4 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <linux/irqnr.h> | 22 | #include <linux/irqnr.h> |
23 | #include <linux/errno.h> | 23 | #include <linux/errno.h> |
24 | #include <linux/topology.h> | 24 | #include <linux/topology.h> |
25 | #include <linux/wait.h> | ||
25 | 26 | ||
26 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
27 | #include <asm/ptrace.h> | 28 | #include <asm/ptrace.h> |
@@ -158,6 +159,8 @@ struct irq_2_iommu; | |||
158 | * @affinity: IRQ affinity on SMP | 159 | * @affinity: IRQ affinity on SMP |
159 | * @cpu: cpu index useful for balancing | 160 | * @cpu: cpu index useful for balancing |
160 | * @pending_mask: pending rebalanced interrupts | 161 | * @pending_mask: pending rebalanced interrupts |
162 | * @threads_active: number of irqaction threads currently running | ||
163 | * @wait_for_threads: wait queue for sync_irq to wait for threaded handlers | ||
161 | * @dir: /proc/irq/ procfs entry | 164 | * @dir: /proc/irq/ procfs entry |
162 | * @name: flow handler name for /proc/interrupts output | 165 | * @name: flow handler name for /proc/interrupts output |
163 | */ | 166 | */ |
@@ -189,6 +192,8 @@ struct irq_desc { | |||
189 | cpumask_var_t pending_mask; | 192 | cpumask_var_t pending_mask; |
190 | #endif | 193 | #endif |
191 | #endif | 194 | #endif |
195 | atomic_t threads_active; | ||
196 | wait_queue_head_t wait_for_threads; | ||
192 | #ifdef CONFIG_PROC_FS | 197 | #ifdef CONFIG_PROC_FS |
193 | struct proc_dir_entry *dir; | 198 | struct proc_dir_entry *dir; |
194 | #endif | 199 | #endif |
@@ -482,6 +487,16 @@ static inline void init_copy_desc_masks(struct irq_desc *old_desc, | |||
482 | #endif | 487 | #endif |
483 | } | 488 | } |
484 | 489 | ||
490 | static inline void free_desc_masks(struct irq_desc *old_desc, | ||
491 | struct irq_desc *new_desc) | ||
492 | { | ||
493 | free_cpumask_var(old_desc->affinity); | ||
494 | |||
495 | #ifdef CONFIG_GENERIC_PENDING_IRQ | ||
496 | free_cpumask_var(old_desc->pending_mask); | ||
497 | #endif | ||
498 | } | ||
499 | |||
485 | #else /* !CONFIG_SMP */ | 500 | #else /* !CONFIG_SMP */ |
486 | 501 | ||
487 | static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu, | 502 | static inline bool init_alloc_desc_masks(struct irq_desc *desc, int cpu, |
@@ -495,6 +510,10 @@ static inline void init_copy_desc_masks(struct irq_desc *old_desc, | |||
495 | { | 510 | { |
496 | } | 511 | } |
497 | 512 | ||
513 | static inline void free_desc_masks(struct irq_desc *old_desc, | ||
514 | struct irq_desc *new_desc) | ||
515 | { | ||
516 | } | ||
498 | #endif /* CONFIG_SMP */ | 517 | #endif /* CONFIG_SMP */ |
499 | 518 | ||
500 | #endif /* _LINUX_IRQ_H */ | 519 | #endif /* _LINUX_IRQ_H */ |