mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 14:11:20 +00:00
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: John Stultz <john.stultz@linaro.org>
This commit is contained in:
parent
8b618628b2
commit
d08c0cdd26
2 changed files with 20 additions and 8 deletions
|
@ -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)
|
||||||
{
|
{
|
||||||
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)
|
||||||
{
|
{
|
||||||
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 @@ out:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 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)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue