From cdba2ec538d9843c42cac15ff4ec54dc2ac53f8a Mon Sep 17 00:00:00 2001 From: John Stultz Date: Fri, 7 Nov 2014 11:03:20 -0800 Subject: [PATCH] time: Expose getrawmonotonic64 for in-kernel uses Adds a timespec64 based getrawmonotonic64() implementation that can be used as we convert internal users of getrawmonotonic away from using timespecs. Signed-off-by: John Stultz --- include/linux/timekeeping.h | 15 ++++++++++++++- kernel/time/timekeeping.c | 11 ++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/include/linux/timekeeping.h b/include/linux/timekeeping.h index 6d76c6502892..e40a8d60fb21 100644 --- a/include/linux/timekeeping.h +++ b/include/linux/timekeeping.h @@ -26,7 +26,7 @@ struct timespec __current_kernel_time(void); * timespec based interfaces */ struct timespec get_monotonic_coarse(void); -extern void getrawmonotonic(struct timespec *ts); +extern void getrawmonotonic64(struct timespec64 *ts); extern void ktime_get_ts64(struct timespec64 *ts); extern int __getnstimeofday64(struct timespec64 *tv); @@ -61,6 +61,11 @@ static inline void ktime_get_real_ts(struct timespec *ts) getnstimeofday64(ts); } +static inline void getrawmonotonic(struct timespec *ts) +{ + getrawmonotonic64(ts); +} + #else /** * Deprecated. Use do_settimeofday64(). @@ -105,6 +110,14 @@ static inline void ktime_get_real_ts(struct timespec *ts) getnstimeofday64(&ts64); *ts = timespec64_to_timespec(ts64); } + +static inline void getrawmonotonic(struct timespec *ts) +{ + struct timespec64 ts64; + + getrawmonotonic64(&ts64); + *ts = timespec64_to_timespec(ts64); +} #endif extern void getboottime(struct timespec *ts); diff --git a/kernel/time/timekeeping.c b/kernel/time/timekeeping.c index 2bde974437fd..2e5f63212269 100644 --- a/kernel/time/timekeeping.c +++ b/kernel/time/timekeeping.c @@ -894,12 +894,12 @@ int timekeeping_notify(struct clocksource *clock) } /** - * getrawmonotonic - Returns the raw monotonic time in a timespec - * @ts: pointer to the timespec to be set + * getrawmonotonic64 - Returns the raw monotonic time in a timespec + * @ts: pointer to the timespec64 to be set * * Returns the raw monotonic time (completely un-modified by ntp) */ -void getrawmonotonic(struct timespec *ts) +void getrawmonotonic64(struct timespec64 *ts) { struct timekeeper *tk = &tk_core.timekeeper; struct timespec64 ts64; @@ -914,9 +914,10 @@ void getrawmonotonic(struct timespec *ts) } while (read_seqcount_retry(&tk_core.seq, seq)); timespec64_add_ns(&ts64, nsecs); - *ts = timespec64_to_timespec(ts64); + *ts = ts64; } -EXPORT_SYMBOL(getrawmonotonic); +EXPORT_SYMBOL(getrawmonotonic64); + /** * timekeeping_valid_for_hres - Check if timekeeping is suitable for hres