diff options
Diffstat (limited to 'include/linux/interrupt.h')
-rw-r--r-- | include/linux/interrupt.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 472f11765f60..ce2c07d99fc3 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
@@ -61,6 +61,17 @@ | |||
61 | 61 | ||
62 | typedef irqreturn_t (*irq_handler_t)(int, void *); | 62 | typedef irqreturn_t (*irq_handler_t)(int, void *); |
63 | 63 | ||
64 | /** | ||
65 | * struct irqaction - per interrupt action descriptor | ||
66 | * @handler: interrupt handler function | ||
67 | * @flags: flags (see IRQF_* above) | ||
68 | * @mask: no comment as it is useless and about to be removed | ||
69 | * @name: name of the device | ||
70 | * @dev_id: cookie to identify the device | ||
71 | * @next: pointer to the next irqaction for shared interrupts | ||
72 | * @irq: interrupt number | ||
73 | * @dir: pointer to the proc/irq/NN/name entry | ||
74 | */ | ||
64 | struct irqaction { | 75 | struct irqaction { |
65 | irq_handler_t handler; | 76 | irq_handler_t handler; |
66 | unsigned long flags; | 77 | unsigned long flags; |
@@ -106,6 +117,15 @@ extern void disable_irq_nosync(unsigned int irq); | |||
106 | extern void disable_irq(unsigned int irq); | 117 | extern void disable_irq(unsigned int irq); |
107 | extern void enable_irq(unsigned int irq); | 118 | extern void enable_irq(unsigned int irq); |
108 | 119 | ||
120 | /* The following three functions are for the core kernel use only. */ | ||
121 | extern void suspend_device_irqs(void); | ||
122 | extern void resume_device_irqs(void); | ||
123 | #ifdef CONFIG_PM_SLEEP | ||
124 | extern int check_wakeup_irqs(void); | ||
125 | #else | ||
126 | static inline int check_wakeup_irqs(void) { return 0; } | ||
127 | #endif | ||
128 | |||
109 | #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) | 129 | #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) |
110 | 130 | ||
111 | extern cpumask_var_t irq_default_affinity; | 131 | extern cpumask_var_t irq_default_affinity; |
@@ -258,6 +278,11 @@ enum | |||
258 | NR_SOFTIRQS | 278 | NR_SOFTIRQS |
259 | }; | 279 | }; |
260 | 280 | ||
281 | /* map softirq index to softirq name. update 'softirq_to_name' in | ||
282 | * kernel/softirq.c when adding a new softirq. | ||
283 | */ | ||
284 | extern char *softirq_to_name[NR_SOFTIRQS]; | ||
285 | |||
261 | /* softirq mask and active fields moved to irq_cpustat_t in | 286 | /* softirq mask and active fields moved to irq_cpustat_t in |
262 | * asm/hardirq.h to get better cache usage. KAO | 287 | * asm/hardirq.h to get better cache usage. KAO |
263 | */ | 288 | */ |
@@ -462,6 +487,12 @@ static inline void init_irq_proc(void) | |||
462 | } | 487 | } |
463 | #endif | 488 | #endif |
464 | 489 | ||
490 | #if defined(CONFIG_GENERIC_HARDIRQS) && defined(CONFIG_DEBUG_SHIRQ) | ||
491 | extern void debug_poll_all_shared_irqs(void); | ||
492 | #else | ||
493 | static inline void debug_poll_all_shared_irqs(void) { } | ||
494 | #endif | ||
495 | |||
465 | int show_interrupts(struct seq_file *p, void *v); | 496 | int show_interrupts(struct seq_file *p, void *v); |
466 | 497 | ||
467 | struct irq_desc; | 498 | struct irq_desc; |