diff options
Diffstat (limited to 'kernel/trace/trace_clock.c')
| -rw-r--r-- | kernel/trace/trace_clock.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/trace/trace_clock.c b/kernel/trace/trace_clock.c index 20c5f92e28a8..878c03f386ba 100644 --- a/kernel/trace/trace_clock.c +++ b/kernel/trace/trace_clock.c | |||
| @@ -20,6 +20,8 @@ | |||
| 20 | #include <linux/ktime.h> | 20 | #include <linux/ktime.h> |
| 21 | #include <linux/trace_clock.h> | 21 | #include <linux/trace_clock.h> |
| 22 | 22 | ||
| 23 | #include "trace.h" | ||
| 24 | |||
| 23 | /* | 25 | /* |
| 24 | * trace_clock_local(): the simplest and least coherent tracing clock. | 26 | * trace_clock_local(): the simplest and least coherent tracing clock. |
| 25 | * | 27 | * |
| @@ -28,17 +30,17 @@ | |||
| 28 | */ | 30 | */ |
| 29 | u64 notrace trace_clock_local(void) | 31 | u64 notrace trace_clock_local(void) |
| 30 | { | 32 | { |
| 31 | unsigned long flags; | ||
| 32 | u64 clock; | 33 | u64 clock; |
| 34 | int resched; | ||
| 33 | 35 | ||
| 34 | /* | 36 | /* |
| 35 | * sched_clock() is an architecture implemented, fast, scalable, | 37 | * sched_clock() is an architecture implemented, fast, scalable, |
| 36 | * lockless clock. It is not guaranteed to be coherent across | 38 | * lockless clock. It is not guaranteed to be coherent across |
| 37 | * CPUs, nor across CPU idle events. | 39 | * CPUs, nor across CPU idle events. |
| 38 | */ | 40 | */ |
| 39 | raw_local_irq_save(flags); | 41 | resched = ftrace_preempt_disable(); |
| 40 | clock = sched_clock(); | 42 | clock = sched_clock(); |
| 41 | raw_local_irq_restore(flags); | 43 | ftrace_preempt_enable(resched); |
| 42 | 44 | ||
| 43 | return clock; | 45 | return clock; |
| 44 | } | 46 | } |
