Commit d08c0cdd authored by John Stultz's avatar John Stultz

time: Expose getboottime64 for in-kernel uses

Adds a timespec64 based getboottime64() implementation
that can be used as we convert internal users of
getboottime away from using timespecs.

Cc: pang.xunlei <pang.xunlei@linaro.org>
Cc: Arnd Bergmann <arnd.bergmann@linaro.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@kernel.org>
Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
parent 8b618628
...@@ -33,6 +33,7 @@ extern time64_t ktime_get_real_seconds(void); ...@@ -33,6 +33,7 @@ extern time64_t ktime_get_real_seconds(void);
extern int __getnstimeofday64(struct timespec64 *tv); extern int __getnstimeofday64(struct timespec64 *tv);
extern void getnstimeofday64(struct timespec64 *tv); extern void getnstimeofday64(struct timespec64 *tv);
extern void getboottime64(struct timespec64 *ts);
#if BITS_PER_LONG == 64 #if BITS_PER_LONG == 64
/** /**
...@@ -72,6 +73,11 @@ static inline struct timespec get_monotonic_coarse(void) ...@@ -72,6 +73,11 @@ static inline struct timespec get_monotonic_coarse(void)
{ {
return get_monotonic_coarse64(); return get_monotonic_coarse64();
} }
static inline void getboottime(struct timespec *ts)
{
return getboottime64(ts);
}
#else #else
/** /**
* Deprecated. Use do_settimeofday64(). * Deprecated. Use do_settimeofday64().
...@@ -129,9 +135,15 @@ static inline struct timespec get_monotonic_coarse(void) ...@@ -129,9 +135,15 @@ static inline struct timespec get_monotonic_coarse(void)
{ {
return timespec64_to_timespec(get_monotonic_coarse64()); return timespec64_to_timespec(get_monotonic_coarse64());
} }
#endif
extern void getboottime(struct timespec *ts); static inline void getboottime(struct timespec *ts)
{
struct timespec64 ts64;
getboottime64(&ts64);
*ts = timespec64_to_timespec(ts64);
}
#endif
#define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts) #define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts)
#define ktime_get_real_ts64(ts) getnstimeofday64(ts) #define ktime_get_real_ts64(ts) getnstimeofday64(ts)
......
...@@ -1659,24 +1659,24 @@ void update_wall_time(void) ...@@ -1659,24 +1659,24 @@ void update_wall_time(void)
} }
/** /**
* getboottime - Return the real time of system boot. * getboottime64 - Return the real time of system boot.
* @ts: pointer to the timespec to be set * @ts: pointer to the timespec64 to be set
* *
* Returns the wall-time of boot in a timespec. * Returns the wall-time of boot in a timespec64.
* *
* This is based on the wall_to_monotonic offset and the total suspend * This is based on the wall_to_monotonic offset and the total suspend
* time. Calls to settimeofday will affect the value returned (which * time. Calls to settimeofday will affect the value returned (which
* basically means that however wrong your real time clock is at boot time, * basically means that however wrong your real time clock is at boot time,
* you get the right time here). * you get the right time here).
*/ */
void getboottime(struct timespec *ts) void getboottime64(struct timespec64 *ts)
{ {
struct timekeeper *tk = &tk_core.timekeeper; struct timekeeper *tk = &tk_core.timekeeper;
ktime_t t = ktime_sub(tk->offs_real, tk->offs_boot); ktime_t t = ktime_sub(tk->offs_real, tk->offs_boot);
*ts = ktime_to_timespec(t); *ts = ktime_to_timespec64(t);
} }
EXPORT_SYMBOL_GPL(getboottime); EXPORT_SYMBOL_GPL(getboottime64);
unsigned long get_seconds(void) unsigned long get_seconds(void)
{ {
......
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