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 |
