diff options
Diffstat (limited to 'include/linux/hardirq.h')
| -rw-r--r-- | include/linux/hardirq.h | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h index d5b387669dab..96c323ac44df 100644 --- a/include/linux/hardirq.h +++ b/include/linux/hardirq.h | |||
| @@ -64,6 +64,8 @@ | |||
| 64 | #define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) | 64 | #define HARDIRQ_OFFSET (1UL << HARDIRQ_SHIFT) |
| 65 | #define NMI_OFFSET (1UL << NMI_SHIFT) | 65 | #define NMI_OFFSET (1UL << NMI_SHIFT) |
| 66 | 66 | ||
| 67 | #define SOFTIRQ_DISABLE_OFFSET (2 * SOFTIRQ_OFFSET) | ||
| 68 | |||
| 67 | #ifndef PREEMPT_ACTIVE | 69 | #ifndef PREEMPT_ACTIVE |
| 68 | #define PREEMPT_ACTIVE_BITS 1 | 70 | #define PREEMPT_ACTIVE_BITS 1 |
| 69 | #define PREEMPT_ACTIVE_SHIFT (NMI_SHIFT + NMI_BITS) | 71 | #define PREEMPT_ACTIVE_SHIFT (NMI_SHIFT + NMI_BITS) |
| @@ -82,10 +84,13 @@ | |||
| 82 | /* | 84 | /* |
| 83 | * Are we doing bottom half or hardware interrupt processing? | 85 | * Are we doing bottom half or hardware interrupt processing? |
| 84 | * Are we in a softirq context? Interrupt context? | 86 | * Are we in a softirq context? Interrupt context? |
| 87 | * in_softirq - Are we currently processing softirq or have bh disabled? | ||
| 88 | * in_serving_softirq - Are we currently processing softirq? | ||
| 85 | */ | 89 | */ |
| 86 | #define in_irq() (hardirq_count()) | 90 | #define in_irq() (hardirq_count()) |
| 87 | #define in_softirq() (softirq_count()) | 91 | #define in_softirq() (softirq_count()) |
| 88 | #define in_interrupt() (irq_count()) | 92 | #define in_interrupt() (irq_count()) |
| 93 | #define in_serving_softirq() (softirq_count() & SOFTIRQ_OFFSET) | ||
| 89 | 94 | ||
| 90 | /* | 95 | /* |
| 91 | * Are we in NMI context? | 96 | * Are we in NMI context? |
| @@ -132,14 +137,16 @@ extern void synchronize_irq(unsigned int irq); | |||
| 132 | 137 | ||
| 133 | struct task_struct; | 138 | struct task_struct; |
| 134 | 139 | ||
| 135 | #ifndef CONFIG_VIRT_CPU_ACCOUNTING | 140 | #if !defined(CONFIG_VIRT_CPU_ACCOUNTING) && !defined(CONFIG_IRQ_TIME_ACCOUNTING) |
| 136 | static inline void account_system_vtime(struct task_struct *tsk) | 141 | static inline void account_system_vtime(struct task_struct *tsk) |
| 137 | { | 142 | { |
| 138 | } | 143 | } |
| 144 | #else | ||
| 145 | extern void account_system_vtime(struct task_struct *tsk); | ||
| 139 | #endif | 146 | #endif |
| 140 | 147 | ||
| 141 | #if defined(CONFIG_NO_HZ) | 148 | #if defined(CONFIG_NO_HZ) |
| 142 | #if defined(CONFIG_TINY_RCU) | 149 | #if defined(CONFIG_TINY_RCU) || defined(CONFIG_TINY_PREEMPT_RCU) |
| 143 | extern void rcu_enter_nohz(void); | 150 | extern void rcu_enter_nohz(void); |
| 144 | extern void rcu_exit_nohz(void); | 151 | extern void rcu_exit_nohz(void); |
| 145 | 152 | ||
