diff options
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 |
