diff options
| author | Mark Brown <broonie@linaro.org> | 2013-11-24 09:35:18 -0500 |
|---|---|---|
| committer | Mark Brown <broonie@linaro.org> | 2013-11-24 09:35:18 -0500 |
| commit | 30c27abd28fa168d7ebd2e5286f1fe473c74bfa9 (patch) | |
| tree | 9936b38c0c81cd430d5e75906c1207d127fe588c /include/linux/interrupt.h | |
| parent | 16ec790938d4f356c82fab27b9a9adf4d6fe19a6 (diff) | |
| parent | 6ce4eac1f600b34f2f7f58f9cd8f0503d79e42ae (diff) | |
Merge tag 'v3.13-rc1' into asoc-arizona
Linux 3.13-rc1
Diffstat (limited to 'include/linux/interrupt.h')
| -rw-r--r-- | include/linux/interrupt.h | 33 |
1 files changed, 11 insertions, 22 deletions
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 5e865b554940..db43b58a3355 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
| @@ -11,14 +11,13 @@ | |||
| 11 | #include <linux/irqnr.h> | 11 | #include <linux/irqnr.h> |
| 12 | #include <linux/hardirq.h> | 12 | #include <linux/hardirq.h> |
| 13 | #include <linux/irqflags.h> | 13 | #include <linux/irqflags.h> |
| 14 | #include <linux/smp.h> | ||
| 15 | #include <linux/percpu.h> | ||
| 16 | #include <linux/hrtimer.h> | 14 | #include <linux/hrtimer.h> |
| 17 | #include <linux/kref.h> | 15 | #include <linux/kref.h> |
| 18 | #include <linux/workqueue.h> | 16 | #include <linux/workqueue.h> |
| 19 | 17 | ||
| 20 | #include <linux/atomic.h> | 18 | #include <linux/atomic.h> |
| 21 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
| 20 | #include <asm/irq.h> | ||
| 22 | 21 | ||
| 23 | /* | 22 | /* |
| 24 | * These correspond to the IORESOURCE_IRQ_* defines in | 23 | * These correspond to the IORESOURCE_IRQ_* defines in |
| @@ -374,6 +373,16 @@ struct softirq_action | |||
| 374 | 373 | ||
| 375 | asmlinkage void do_softirq(void); | 374 | asmlinkage void do_softirq(void); |
| 376 | asmlinkage void __do_softirq(void); | 375 | asmlinkage void __do_softirq(void); |
| 376 | |||
| 377 | #ifdef __ARCH_HAS_DO_SOFTIRQ | ||
| 378 | void do_softirq_own_stack(void); | ||
| 379 | #else | ||
| 380 | static inline void do_softirq_own_stack(void) | ||
| 381 | { | ||
| 382 | __do_softirq(); | ||
| 383 | } | ||
| 384 | #endif | ||
| 385 | |||
| 377 | extern void open_softirq(int nr, void (*action)(struct softirq_action *)); | 386 | extern void open_softirq(int nr, void (*action)(struct softirq_action *)); |
| 378 | extern void softirq_init(void); | 387 | extern void softirq_init(void); |
| 379 | extern void __raise_softirq_irqoff(unsigned int nr); | 388 | extern void __raise_softirq_irqoff(unsigned int nr); |
| @@ -381,15 +390,6 @@ extern void __raise_softirq_irqoff(unsigned int nr); | |||
| 381 | extern void raise_softirq_irqoff(unsigned int nr); | 390 | extern void raise_softirq_irqoff(unsigned int nr); |
| 382 | extern void raise_softirq(unsigned int nr); | 391 | extern void raise_softirq(unsigned int nr); |
| 383 | 392 | ||
| 384 | /* This is the worklist that queues up per-cpu softirq work. | ||
| 385 | * | ||
| 386 | * send_remote_sendirq() adds work to these lists, and | ||
| 387 | * the softirq handler itself dequeues from them. The queues | ||
| 388 | * are protected by disabling local cpu interrupts and they must | ||
| 389 | * only be accessed by the local cpu that they are for. | ||
| 390 | */ | ||
| 391 | DECLARE_PER_CPU(struct list_head [NR_SOFTIRQS], softirq_work_list); | ||
| 392 | |||
| 393 | DECLARE_PER_CPU(struct task_struct *, ksoftirqd); | 393 | DECLARE_PER_CPU(struct task_struct *, ksoftirqd); |
| 394 | 394 | ||
| 395 | static inline struct task_struct *this_cpu_ksoftirqd(void) | 395 | static inline struct task_struct *this_cpu_ksoftirqd(void) |
| @@ -397,17 +397,6 @@ static inline struct task_struct *this_cpu_ksoftirqd(void) | |||
| 397 | return this_cpu_read(ksoftirqd); | 397 | return this_cpu_read(ksoftirqd); |
| 398 | } | 398 | } |
| 399 | 399 | ||
| 400 | /* Try to send a softirq to a remote cpu. If this cannot be done, the | ||
| 401 | * work will be queued to the local cpu. | ||
| 402 | */ | ||
| 403 | extern void send_remote_softirq(struct call_single_data *cp, int cpu, int softirq); | ||
| 404 | |||
| 405 | /* Like send_remote_softirq(), but the caller must disable local cpu interrupts | ||
| 406 | * and compute the current cpu, passed in as 'this_cpu'. | ||
| 407 | */ | ||
| 408 | extern void __send_remote_softirq(struct call_single_data *cp, int cpu, | ||
| 409 | int this_cpu, int softirq); | ||
| 410 | |||
| 411 | /* Tasklets --- multithreaded analogue of BHs. | 400 | /* Tasklets --- multithreaded analogue of BHs. |
| 412 | 401 | ||
| 413 | Main feature differing them of generic softirqs: tasklet | 402 | Main feature differing them of generic softirqs: tasklet |
