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