diff options
Diffstat (limited to 'include/linux/interrupt.h')
-rw-r--r-- | include/linux/interrupt.h | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 91bb76f44f14..2721f07e9354 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
@@ -183,6 +183,7 @@ extern void disable_irq(unsigned int irq); | |||
183 | extern void enable_irq(unsigned int irq); | 183 | extern void enable_irq(unsigned int irq); |
184 | 184 | ||
185 | /* The following three functions are for the core kernel use only. */ | 185 | /* The following three functions are for the core kernel use only. */ |
186 | #ifdef CONFIG_GENERIC_HARDIRQS | ||
186 | extern void suspend_device_irqs(void); | 187 | extern void suspend_device_irqs(void); |
187 | extern void resume_device_irqs(void); | 188 | extern void resume_device_irqs(void); |
188 | #ifdef CONFIG_PM_SLEEP | 189 | #ifdef CONFIG_PM_SLEEP |
@@ -190,6 +191,11 @@ extern int check_wakeup_irqs(void); | |||
190 | #else | 191 | #else |
191 | static inline int check_wakeup_irqs(void) { return 0; } | 192 | static inline int check_wakeup_irqs(void) { return 0; } |
192 | #endif | 193 | #endif |
194 | #else | ||
195 | static inline void suspend_device_irqs(void) { }; | ||
196 | static inline void resume_device_irqs(void) { }; | ||
197 | static inline int check_wakeup_irqs(void) { return 0; } | ||
198 | #endif | ||
193 | 199 | ||
194 | #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) | 200 | #if defined(CONFIG_SMP) && defined(CONFIG_GENERIC_HARDIRQS) |
195 | 201 | ||
@@ -466,6 +472,20 @@ static inline void tasklet_hi_schedule(struct tasklet_struct *t) | |||
466 | __tasklet_hi_schedule(t); | 472 | __tasklet_hi_schedule(t); |
467 | } | 473 | } |
468 | 474 | ||
475 | extern void __tasklet_hi_schedule_first(struct tasklet_struct *t); | ||
476 | |||
477 | /* | ||
478 | * This version avoids touching any other tasklets. Needed for kmemcheck | ||
479 | * in order not to take any page faults while enqueueing this tasklet; | ||
480 | * consider VERY carefully whether you really need this or | ||
481 | * tasklet_hi_schedule()... | ||
482 | */ | ||
483 | static inline void tasklet_hi_schedule_first(struct tasklet_struct *t) | ||
484 | { | ||
485 | if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) | ||
486 | __tasklet_hi_schedule_first(t); | ||
487 | } | ||
488 | |||
469 | 489 | ||
470 | static inline void tasklet_disable_nosync(struct tasklet_struct *t) | 490 | static inline void tasklet_disable_nosync(struct tasklet_struct *t) |
471 | { | 491 | { |
@@ -566,6 +586,6 @@ struct irq_desc; | |||
566 | extern int early_irq_init(void); | 586 | extern int early_irq_init(void); |
567 | extern int arch_probe_nr_irqs(void); | 587 | extern int arch_probe_nr_irqs(void); |
568 | extern int arch_early_irq_init(void); | 588 | extern int arch_early_irq_init(void); |
569 | extern int arch_init_chip_data(struct irq_desc *desc, int cpu); | 589 | extern int arch_init_chip_data(struct irq_desc *desc, int node); |
570 | 590 | ||
571 | #endif | 591 | #endif |