diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sched_clock.c | 19 |
1 files changed, 17 insertions, 2 deletions
diff --git a/kernel/sched_clock.c b/kernel/sched_clock.c index 074edc989379..204991a0bfa7 100644 --- a/kernel/sched_clock.c +++ b/kernel/sched_clock.c | |||
| @@ -42,6 +42,8 @@ unsigned long long __attribute__((weak)) sched_clock(void) | |||
| 42 | return (unsigned long long)jiffies * (NSEC_PER_SEC / HZ); | 42 | return (unsigned long long)jiffies * (NSEC_PER_SEC / HZ); |
| 43 | } | 43 | } |
| 44 | 44 | ||
| 45 | static __read_mostly int sched_clock_running; | ||
| 46 | |||
| 45 | #ifdef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK | 47 | #ifdef CONFIG_HAVE_UNSTABLE_SCHED_CLOCK |
| 46 | 48 | ||
| 47 | struct sched_clock_data { | 49 | struct sched_clock_data { |
| @@ -70,8 +72,6 @@ static inline struct sched_clock_data *cpu_sdc(int cpu) | |||
| 70 | return &per_cpu(sched_clock_data, cpu); | 72 | return &per_cpu(sched_clock_data, cpu); |
| 71 | } | 73 | } |
| 72 | 74 | ||
| 73 | static __read_mostly int sched_clock_running; | ||
| 74 | |||
| 75 | void sched_clock_init(void) | 75 | void sched_clock_init(void) |
| 76 | { | 76 | { |
| 77 | u64 ktime_now = ktime_to_ns(ktime_get()); | 77 | u64 ktime_now = ktime_to_ns(ktime_get()); |
| @@ -248,6 +248,21 @@ void sched_clock_idle_wakeup_event(u64 delta_ns) | |||
| 248 | } | 248 | } |
| 249 | EXPORT_SYMBOL_GPL(sched_clock_idle_wakeup_event); | 249 | EXPORT_SYMBOL_GPL(sched_clock_idle_wakeup_event); |
| 250 | 250 | ||
| 251 | #else /* CONFIG_HAVE_UNSTABLE_SCHED_CLOCK */ | ||
| 252 | |||
| 253 | void sched_clock_init(void) | ||
| 254 | { | ||
| 255 | sched_clock_running = 1; | ||
| 256 | } | ||
| 257 | |||
| 258 | u64 sched_clock_cpu(int cpu) | ||
| 259 | { | ||
| 260 | if (unlikely(!sched_clock_running)) | ||
| 261 | return 0; | ||
| 262 | |||
| 263 | return sched_clock(); | ||
| 264 | } | ||
| 265 | |||
| 251 | #endif | 266 | #endif |
| 252 | 267 | ||
| 253 | unsigned long long cpu_clock(int cpu) | 268 | unsigned long long cpu_clock(int cpu) |
