aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/interrupt.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/interrupt.h')
-rw-r--r--include/linux/interrupt.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h
index 9127f6b51a39..c68bffd182bb 100644
--- a/include/linux/interrupt.h
+++ b/include/linux/interrupt.h
@@ -61,6 +61,17 @@
61 61
62typedef irqreturn_t (*irq_handler_t)(int, void *); 62typedef 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 */
64struct irqaction { 75struct 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);
106extern void disable_irq(unsigned int irq); 117extern void disable_irq(unsigned int irq);
107extern void enable_irq(unsigned int irq); 118extern void enable_irq(unsigned int irq);
108 119
120/* The following three functions are for the core kernel use only. */
121extern void suspend_device_irqs(void);
122extern void resume_device_irqs(void);
123#ifdef CONFIG_PM_SLEEP
124extern int check_wakeup_irqs(void);
125#else
126static 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
111extern cpumask_var_t irq_default_affinity; 131extern cpumask_var_t irq_default_affinity;
@@ -462,11 +482,18 @@ static inline void init_irq_proc(void)
462} 482}
463#endif 483#endif
464 484
485#if defined(CONFIG_GENERIC_HARDIRQS) && defined(CONFIG_DEBUG_SHIRQ)
486extern void debug_poll_all_shared_irqs(void);
487#else
488static inline void debug_poll_all_shared_irqs(void) { }
489#endif
490
465int show_interrupts(struct seq_file *p, void *v); 491int show_interrupts(struct seq_file *p, void *v);
466 492
467struct irq_desc; 493struct irq_desc;
468 494
469extern int early_irq_init(void); 495extern int early_irq_init(void);
496extern int arch_probe_nr_irqs(void);
470extern int arch_early_irq_init(void); 497extern int arch_early_irq_init(void);
471extern int arch_init_chip_data(struct irq_desc *desc, int cpu); 498extern int arch_init_chip_data(struct irq_desc *desc, int cpu);
472 499