6546911ed3
The interfaces based on 'struct timespec' and 'unsigned long' seconds are no longer recommended for new code, and we are trying to migrate to ktime_t based interfaces and other y2038-safe variants. This moves all the legacy interfaces from linux/timekeeping.h into a new timekeeping32.h to better document this. Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@kernel.org> Cc: Miroslav Lichvar <mlichvar@redhat.com> Cc: Richard Cochran <richardcochran@gmail.com> Cc: Prarit Bhargava <prarit@redhat.com> Cc: Stephen Boyd <stephen.boyd@linaro.org> Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: John Stultz <john.stultz@linaro.org>
151 lines
3 KiB
C
151 lines
3 KiB
C
#ifndef _LINUX_TIMEKEEPING32_H
|
|
#define _LINUX_TIMEKEEPING32_H
|
|
/*
|
|
* These interfaces are all based on the old timespec type
|
|
* and should get replaced with the timespec64 based versions
|
|
* over time so we can remove the file here.
|
|
*/
|
|
|
|
extern void do_gettimeofday(struct timeval *tv);
|
|
unsigned long get_seconds(void);
|
|
|
|
/* does not take xtime_lock */
|
|
struct timespec __current_kernel_time(void);
|
|
|
|
static inline struct timespec current_kernel_time(void)
|
|
{
|
|
struct timespec64 now = current_kernel_time64();
|
|
|
|
return timespec64_to_timespec(now);
|
|
}
|
|
|
|
#if BITS_PER_LONG == 64
|
|
/**
|
|
* Deprecated. Use do_settimeofday64().
|
|
*/
|
|
static inline int do_settimeofday(const struct timespec *ts)
|
|
{
|
|
return do_settimeofday64(ts);
|
|
}
|
|
|
|
static inline int __getnstimeofday(struct timespec *ts)
|
|
{
|
|
return __getnstimeofday64(ts);
|
|
}
|
|
|
|
static inline void getnstimeofday(struct timespec *ts)
|
|
{
|
|
getnstimeofday64(ts);
|
|
}
|
|
|
|
static inline void ktime_get_ts(struct timespec *ts)
|
|
{
|
|
ktime_get_ts64(ts);
|
|
}
|
|
|
|
static inline void ktime_get_real_ts(struct timespec *ts)
|
|
{
|
|
getnstimeofday64(ts);
|
|
}
|
|
|
|
static inline void getrawmonotonic(struct timespec *ts)
|
|
{
|
|
getrawmonotonic64(ts);
|
|
}
|
|
|
|
static inline struct timespec get_monotonic_coarse(void)
|
|
{
|
|
return get_monotonic_coarse64();
|
|
}
|
|
|
|
static inline void getboottime(struct timespec *ts)
|
|
{
|
|
return getboottime64(ts);
|
|
}
|
|
#else
|
|
/**
|
|
* Deprecated. Use do_settimeofday64().
|
|
*/
|
|
static inline int do_settimeofday(const struct timespec *ts)
|
|
{
|
|
struct timespec64 ts64;
|
|
|
|
ts64 = timespec_to_timespec64(*ts);
|
|
return do_settimeofday64(&ts64);
|
|
}
|
|
|
|
static inline int __getnstimeofday(struct timespec *ts)
|
|
{
|
|
struct timespec64 ts64;
|
|
int ret = __getnstimeofday64(&ts64);
|
|
|
|
*ts = timespec64_to_timespec(ts64);
|
|
return ret;
|
|
}
|
|
|
|
static inline void getnstimeofday(struct timespec *ts)
|
|
{
|
|
struct timespec64 ts64;
|
|
|
|
getnstimeofday64(&ts64);
|
|
*ts = timespec64_to_timespec(ts64);
|
|
}
|
|
|
|
static inline void ktime_get_ts(struct timespec *ts)
|
|
{
|
|
struct timespec64 ts64;
|
|
|
|
ktime_get_ts64(&ts64);
|
|
*ts = timespec64_to_timespec(ts64);
|
|
}
|
|
|
|
static inline void ktime_get_real_ts(struct timespec *ts)
|
|
{
|
|
struct timespec64 ts64;
|
|
|
|
getnstimeofday64(&ts64);
|
|
*ts = timespec64_to_timespec(ts64);
|
|
}
|
|
|
|
static inline void getrawmonotonic(struct timespec *ts)
|
|
{
|
|
struct timespec64 ts64;
|
|
|
|
getrawmonotonic64(&ts64);
|
|
*ts = timespec64_to_timespec(ts64);
|
|
}
|
|
|
|
static inline struct timespec get_monotonic_coarse(void)
|
|
{
|
|
return timespec64_to_timespec(get_monotonic_coarse64());
|
|
}
|
|
|
|
static inline void getboottime(struct timespec *ts)
|
|
{
|
|
struct timespec64 ts64;
|
|
|
|
getboottime64(&ts64);
|
|
*ts = timespec64_to_timespec(ts64);
|
|
}
|
|
#endif
|
|
|
|
/*
|
|
* Timespec interfaces utilizing the ktime based ones
|
|
*/
|
|
static inline void get_monotonic_boottime(struct timespec *ts)
|
|
{
|
|
*ts = ktime_to_timespec(ktime_get_boottime());
|
|
}
|
|
|
|
static inline void timekeeping_clocktai(struct timespec *ts)
|
|
{
|
|
*ts = ktime_to_timespec(ktime_get_clocktai());
|
|
}
|
|
|
|
/*
|
|
* Persistent clock related interfaces
|
|
*/
|
|
extern void read_persistent_clock(struct timespec *ts);
|
|
extern int update_persistent_clock(struct timespec now);
|
|
|
|
#endif
|