2017-10-19 18:14:49 +07:00
|
|
|
#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.
|
|
|
|
*/
|
|
|
|
|
2018-08-14 20:18:20 +07:00
|
|
|
static inline void do_gettimeofday(struct timeval *tv)
|
|
|
|
{
|
|
|
|
struct timespec64 now;
|
|
|
|
|
|
|
|
ktime_get_real_ts64(&now);
|
|
|
|
tv->tv_sec = now.tv_sec;
|
|
|
|
tv->tv_usec = now.tv_nsec/1000;
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline unsigned long get_seconds(void)
|
|
|
|
{
|
|
|
|
return ktime_get_real_seconds();
|
|
|
|
}
|
2017-10-19 18:14:49 +07:00
|
|
|
|
|
|
|
static inline void getnstimeofday(struct timespec *ts)
|
|
|
|
{
|
|
|
|
struct timespec64 ts64;
|
|
|
|
|
2018-04-27 20:40:13 +07:00
|
|
|
ktime_get_real_ts64(&ts64);
|
2017-10-19 18:14:49 +07:00
|
|
|
*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 getrawmonotonic(struct timespec *ts)
|
|
|
|
{
|
|
|
|
struct timespec64 ts64;
|
|
|
|
|
2018-04-27 20:40:14 +07:00
|
|
|
ktime_get_raw_ts64(&ts64);
|
2017-10-19 18:14:49 +07:00
|
|
|
*ts = timespec64_to_timespec(ts64);
|
|
|
|
}
|
|
|
|
|
|
|
|
static inline void getboottime(struct timespec *ts)
|
|
|
|
{
|
|
|
|
struct timespec64 ts64;
|
|
|
|
|
|
|
|
getboottime64(&ts64);
|
|
|
|
*ts = timespec64_to_timespec(ts64);
|
|
|
|
}
|
|
|
|
|
|
|
|
/*
|
|
|
|
* Persistent clock related interfaces
|
|
|
|
*/
|
|
|
|
extern void read_persistent_clock(struct timespec *ts);
|
|
|
|
extern int update_persistent_clock(struct timespec now);
|
|
|
|
|
|
|
|
#endif
|