.. | .. |
---|
6 | 6 | #include <linux/preempt.h> |
---|
7 | 7 | #include <linux/lockdep.h> |
---|
8 | 8 | #include <linux/ftrace_irq.h> |
---|
9 | | -#include <linux/sched.h> |
---|
10 | 9 | #include <linux/vtime.h> |
---|
11 | 10 | #include <asm/hardirq.h> |
---|
12 | 11 | |
---|
.. | .. |
---|
33 | 32 | */ |
---|
34 | 33 | #define __irq_enter() \ |
---|
35 | 34 | do { \ |
---|
| 35 | + account_irq_enter_time(current); \ |
---|
36 | 36 | preempt_count_add(HARDIRQ_OFFSET); \ |
---|
37 | 37 | lockdep_hardirq_enter(); \ |
---|
38 | | - account_hardirq_enter(current); \ |
---|
39 | 38 | } while (0) |
---|
40 | 39 | |
---|
41 | 40 | /* |
---|
.. | .. |
---|
63 | 62 | */ |
---|
64 | 63 | #define __irq_exit() \ |
---|
65 | 64 | do { \ |
---|
66 | | - account_hardirq_exit(current); \ |
---|
67 | 65 | lockdep_hardirq_exit(); \ |
---|
| 66 | + account_irq_exit_time(current); \ |
---|
68 | 67 | preempt_count_sub(HARDIRQ_OFFSET); \ |
---|
69 | 68 | } while (0) |
---|
70 | 69 | |
---|
.. | .. |
---|
116 | 115 | do { \ |
---|
117 | 116 | lockdep_off(); \ |
---|
118 | 117 | arch_nmi_enter(); \ |
---|
| 118 | + printk_nmi_enter(); \ |
---|
119 | 119 | BUG_ON(in_nmi() == NMI_MASK); \ |
---|
120 | 120 | __preempt_count_add(NMI_OFFSET + HARDIRQ_OFFSET); \ |
---|
121 | 121 | } while (0) |
---|
.. | .. |
---|
134 | 134 | do { \ |
---|
135 | 135 | BUG_ON(!in_nmi()); \ |
---|
136 | 136 | __preempt_count_sub(NMI_OFFSET + HARDIRQ_OFFSET); \ |
---|
| 137 | + printk_nmi_exit(); \ |
---|
137 | 138 | arch_nmi_exit(); \ |
---|
138 | 139 | lockdep_on(); \ |
---|
139 | 140 | } while (0) |
---|