Commit fb7fcc96 authored by Arnd Bergmann's avatar Arnd Bergmann Committed by Thomas Gleixner

timekeeping: Standardize on ktime_get_*() naming

The current_kernel_time64, get_monotonic_coarse64, getrawmonotonic64,
get_monotonic_boottime64 and timekeeping_clocktai64 interfaces have
rather inconsistent naming, and they differ in the calling conventions
by passing the output either by reference or as a return value.

Rename them to ktime_get_coarse_real_ts64, ktime_get_coarse_ts64,
ktime_get_raw_ts64, ktime_get_boottime_ts64 and ktime_get_clocktai_ts64
respectively, and provide the interfaces with macros or inline
functions as needed.
Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
Cc: Stephen Boyd <sboyd@kernel.org>
Cc: y2038@lists.linaro.org
Cc: John Stultz <john.stultz@linaro.org>
Link: https://lkml.kernel.org/r/20180427134016.2525989-4-arnd@arndb.de
parent edca71fe
...@@ -19,25 +19,25 @@ extern void xtime_update(unsigned long ticks); ...@@ -19,25 +19,25 @@ extern void xtime_update(unsigned long ticks);
extern int do_settimeofday64(const struct timespec64 *ts); extern int do_settimeofday64(const struct timespec64 *ts);
extern int do_sys_settimeofday64(const struct timespec64 *tv, extern int do_sys_settimeofday64(const struct timespec64 *tv,
const struct timezone *tz); const struct timezone *tz);
/*
* Kernel time accessors
*/
struct timespec64 current_kernel_time64(void);
/* /*
* timespec64 based interfaces * timespec64 based interfaces
*/ */
struct timespec64 get_monotonic_coarse64(void); extern void ktime_get_raw_ts64(struct timespec64 *ts);
extern void getrawmonotonic64(struct timespec64 *ts);
extern void ktime_get_ts64(struct timespec64 *ts); extern void ktime_get_ts64(struct timespec64 *ts);
extern void ktime_get_real_ts64(struct timespec64 *tv); extern void ktime_get_real_ts64(struct timespec64 *tv);
extern void ktime_get_coarse_ts64(struct timespec64 *ts);
extern void ktime_get_coarse_real_ts64(struct timespec64 *ts);
void getboottime64(struct timespec64 *ts);
/*
* time64_t base interfaces
*/
extern time64_t ktime_get_seconds(void); extern time64_t ktime_get_seconds(void);
extern time64_t __ktime_get_real_seconds(void); extern time64_t __ktime_get_real_seconds(void);
extern time64_t ktime_get_real_seconds(void); extern time64_t ktime_get_real_seconds(void);
extern void getboottime64(struct timespec64 *ts);
/* /*
* ktime_t based interfaces * ktime_t based interfaces
*/ */
...@@ -123,12 +123,12 @@ extern u64 ktime_get_real_fast_ns(void); ...@@ -123,12 +123,12 @@ extern u64 ktime_get_real_fast_ns(void);
/* /*
* timespec64 interfaces utilizing the ktime based ones * timespec64 interfaces utilizing the ktime based ones
*/ */
static inline void get_monotonic_boottime64(struct timespec64 *ts) static inline void ktime_get_boottime_ts64(struct timespec64 *ts)
{ {
*ts = ktime_to_timespec64(ktime_get_boottime()); *ts = ktime_to_timespec64(ktime_get_boottime());
} }
static inline void timekeeping_clocktai64(struct timespec64 *ts) static inline void ktime_get_clocktai_ts64(struct timespec64 *ts)
{ {
*ts = ktime_to_timespec64(ktime_get_clocktai()); *ts = ktime_to_timespec64(ktime_get_clocktai());
} }
...@@ -212,5 +212,26 @@ extern int update_persistent_clock64(struct timespec64 now); ...@@ -212,5 +212,26 @@ extern int update_persistent_clock64(struct timespec64 now);
* deprecated aliases, don't use in new code * deprecated aliases, don't use in new code
*/ */
#define getnstimeofday64(ts) ktime_get_real_ts64(ts) #define getnstimeofday64(ts) ktime_get_real_ts64(ts)
#define get_monotonic_boottime64(ts) ktime_get_boottime_ts64(ts)
#define getrawmonotonic64(ts) ktime_get_raw_ts64(ts)
#define timekeeping_clocktai64(ts) ktime_get_clocktai_ts64(ts)
static inline struct timespec64 current_kernel_time64(void)
{
struct timespec64 ts;
ktime_get_coarse_real_ts64(&ts);
return ts;
}
static inline struct timespec64 get_monotonic_coarse64(void)
{
struct timespec64 ts;
ktime_get_coarse_ts64(&ts);
return ts;
}
#endif #endif
...@@ -11,9 +11,11 @@ unsigned long get_seconds(void); ...@@ -11,9 +11,11 @@ unsigned long get_seconds(void);
static inline struct timespec current_kernel_time(void) static inline struct timespec current_kernel_time(void)
{ {
struct timespec64 now = current_kernel_time64(); struct timespec64 ts64;
ktime_get_coarse_real_ts64(&ts64);
return timespec64_to_timespec(now); return timespec64_to_timespec(ts64);
} }
/** /**
...@@ -55,13 +57,17 @@ static inline void getrawmonotonic(struct timespec *ts) ...@@ -55,13 +57,17 @@ static inline void getrawmonotonic(struct timespec *ts)
{ {
struct timespec64 ts64; struct timespec64 ts64;
getrawmonotonic64(&ts64); ktime_get_raw_ts64(&ts64);
*ts = timespec64_to_timespec(ts64); *ts = timespec64_to_timespec(ts64);
} }
static inline struct timespec get_monotonic_coarse(void) static inline struct timespec get_monotonic_coarse(void)
{ {
return timespec64_to_timespec(get_monotonic_coarse64()); struct timespec64 ts64;
ktime_get_coarse_ts64(&ts64);
return timespec64_to_timespec(ts64);
} }
static inline void getboottime(struct timespec *ts) static inline void getboottime(struct timespec *ts)
......
...@@ -1391,12 +1391,12 @@ int timekeeping_notify(struct clocksource *clock) ...@@ -1391,12 +1391,12 @@ int timekeeping_notify(struct clocksource *clock)
} }
/** /**
* getrawmonotonic64 - Returns the raw monotonic time in a timespec * ktime_get_raw_ts64 - Returns the raw monotonic time in a timespec
* @ts: pointer to the timespec64 to be set * @ts: pointer to the timespec64 to be set
* *
* Returns the raw monotonic time (completely un-modified by ntp) * Returns the raw monotonic time (completely un-modified by ntp)
*/ */
void getrawmonotonic64(struct timespec64 *ts) void ktime_get_raw_ts64(struct timespec64 *ts)
{ {
struct timekeeper *tk = &tk_core.timekeeper; struct timekeeper *tk = &tk_core.timekeeper;
unsigned long seq; unsigned long seq;
...@@ -1412,7 +1412,7 @@ void getrawmonotonic64(struct timespec64 *ts) ...@@ -1412,7 +1412,7 @@ void getrawmonotonic64(struct timespec64 *ts)
ts->tv_nsec = 0; ts->tv_nsec = 0;
timespec64_add_ns(ts, nsecs); timespec64_add_ns(ts, nsecs);
} }
EXPORT_SYMBOL(getrawmonotonic64); EXPORT_SYMBOL(ktime_get_raw_ts64);
/** /**
...@@ -2114,23 +2114,20 @@ unsigned long get_seconds(void) ...@@ -2114,23 +2114,20 @@ unsigned long get_seconds(void)
} }
EXPORT_SYMBOL(get_seconds); EXPORT_SYMBOL(get_seconds);
struct timespec64 current_kernel_time64(void) void ktime_get_coarse_real_ts64(struct timespec64 *ts)
{ {
struct timekeeper *tk = &tk_core.timekeeper; struct timekeeper *tk = &tk_core.timekeeper;
struct timespec64 now;
unsigned long seq; unsigned long seq;
do { do {
seq = read_seqcount_begin(&tk_core.seq); seq = read_seqcount_begin(&tk_core.seq);
now = tk_xtime(tk); *ts = tk_xtime(tk);
} while (read_seqcount_retry(&tk_core.seq, seq)); } while (read_seqcount_retry(&tk_core.seq, seq));
return now;
} }
EXPORT_SYMBOL(current_kernel_time64); EXPORT_SYMBOL(ktime_get_coarse_real_ts64);
struct timespec64 get_monotonic_coarse64(void) void ktime_get_coarse_ts64(struct timespec64 *ts)
{ {
struct timekeeper *tk = &tk_core.timekeeper; struct timekeeper *tk = &tk_core.timekeeper;
struct timespec64 now, mono; struct timespec64 now, mono;
...@@ -2143,12 +2140,10 @@ struct timespec64 get_monotonic_coarse64(void) ...@@ -2143,12 +2140,10 @@ struct timespec64 get_monotonic_coarse64(void)
mono = tk->wall_to_monotonic; mono = tk->wall_to_monotonic;
} while (read_seqcount_retry(&tk_core.seq, seq)); } while (read_seqcount_retry(&tk_core.seq, seq));
set_normalized_timespec64(&now, now.tv_sec + mono.tv_sec, set_normalized_timespec64(ts, now.tv_sec + mono.tv_sec,
now.tv_nsec + mono.tv_nsec); now.tv_nsec + mono.tv_nsec);
return now;
} }
EXPORT_SYMBOL(get_monotonic_coarse64); EXPORT_SYMBOL(ktime_get_coarse_ts64);
/* /*
* Must hold jiffies_lock * Must hold jiffies_lock
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment