aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/hardirq.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/hardirq.h')
-rw-r--r--include/linux/hardirq.h10
1 files changed, 4 insertions, 6 deletions
diff --git a/include/linux/hardirq.h b/include/linux/hardirq.h
index 624ef3f45c8e..c1d6555d2567 100644
--- a/include/linux/hardirq.h
+++ b/include/linux/hardirq.h
@@ -118,10 +118,8 @@
118 118
119#ifdef CONFIG_PREEMPT_COUNT 119#ifdef CONFIG_PREEMPT_COUNT
120# define preemptible() (preempt_count() == 0 && !irqs_disabled()) 120# define preemptible() (preempt_count() == 0 && !irqs_disabled())
121# define IRQ_EXIT_OFFSET (HARDIRQ_OFFSET-1)
122#else 121#else
123# define preemptible() 0 122# define preemptible() 0
124# define IRQ_EXIT_OFFSET HARDIRQ_OFFSET
125#endif 123#endif
126 124
127#if defined(CONFIG_SMP) || defined(CONFIG_GENERIC_HARDIRQS) 125#if defined(CONFIG_SMP) || defined(CONFIG_GENERIC_HARDIRQS)
@@ -153,7 +151,7 @@ extern void rcu_nmi_exit(void);
153 */ 151 */
154#define __irq_enter() \ 152#define __irq_enter() \
155 do { \ 153 do { \
156 vtime_account_irq_enter(current); \ 154 account_irq_enter_time(current); \
157 add_preempt_count(HARDIRQ_OFFSET); \ 155 add_preempt_count(HARDIRQ_OFFSET); \
158 trace_hardirq_enter(); \ 156 trace_hardirq_enter(); \
159 } while (0) 157 } while (0)
@@ -169,7 +167,7 @@ extern void irq_enter(void);
169#define __irq_exit() \ 167#define __irq_exit() \
170 do { \ 168 do { \
171 trace_hardirq_exit(); \ 169 trace_hardirq_exit(); \
172 vtime_account_irq_exit(current); \ 170 account_irq_exit_time(current); \
173 sub_preempt_count(HARDIRQ_OFFSET); \ 171 sub_preempt_count(HARDIRQ_OFFSET); \
174 } while (0) 172 } while (0)
175 173
@@ -180,10 +178,10 @@ extern void irq_exit(void);
180 178
181#define nmi_enter() \ 179#define nmi_enter() \
182 do { \ 180 do { \
181 lockdep_off(); \
183 ftrace_nmi_enter(); \ 182 ftrace_nmi_enter(); \
184 BUG_ON(in_nmi()); \ 183 BUG_ON(in_nmi()); \
185 add_preempt_count(NMI_OFFSET + HARDIRQ_OFFSET); \ 184 add_preempt_count(NMI_OFFSET + HARDIRQ_OFFSET); \
186 lockdep_off(); \
187 rcu_nmi_enter(); \ 185 rcu_nmi_enter(); \
188 trace_hardirq_enter(); \ 186 trace_hardirq_enter(); \
189 } while (0) 187 } while (0)
@@ -192,10 +190,10 @@ extern void irq_exit(void);
192 do { \ 190 do { \
193 trace_hardirq_exit(); \ 191 trace_hardirq_exit(); \
194 rcu_nmi_exit(); \ 192 rcu_nmi_exit(); \
195 lockdep_on(); \
196 BUG_ON(!in_nmi()); \ 193 BUG_ON(!in_nmi()); \
197 sub_preempt_count(NMI_OFFSET + HARDIRQ_OFFSET); \ 194 sub_preempt_count(NMI_OFFSET + HARDIRQ_OFFSET); \
198 ftrace_nmi_exit(); \ 195 ftrace_nmi_exit(); \
196 lockdep_on(); \
199 } while (0) 197 } while (0)
200 198
201#endif /* LINUX_HARDIRQ_H */ 199#endif /* LINUX_HARDIRQ_H */