| .. | .. |
|---|
| 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) |
|---|