#ifndef _LINUX_TIMEKEEPING_H #define _LINUX_TIMEKEEPING_H /* Included from linux/ktime.h */ void timekeeping_init(void); extern int timekeeping_suspended; /* * Get and set timeofday */ extern void do_gettimeofday(struct timeval *tv); extern int do_settimeofday(const struct timespec *tv); extern int do_sys_settimeofday(const struct timespec *tv, const struct timezone *tz); /* * Kernel time accessors */ unsigned long get_seconds(void); struct timespec current_kernel_time(void); /* does not take xtime_lock */ struct timespec __current_kernel_time(void); /* * timespec based interfaces */ struct timespec get_monotonic_coarse(void); extern void getrawmonotonic(struct timespec *ts); extern void monotonic_to_bootbased(struct timespec *ts); extern void get_monotonic_boottime(struct timespec *ts); extern void ktime_get_ts(struct timespec *ts); extern int __getnstimeofday(struct timespec *tv); extern void getnstimeofday(struct timespec *tv); extern void getboottime(struct timespec *ts); #define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts) #define ktime_get_real_ts(ts) getnstimeofday(ts) /* * ktime_t based interfaces */ extern ktime_t ktime_get(void); extern ktime_t ktime_get_real(void); extern ktime_t ktime_get_boottime(void); extern ktime_t ktime_get_monotonic_offset(void); extern ktime_t ktime_get_clocktai(void); /* * RTC specific */ extern void timekeeping_inject_sleeptime(struct timespec *delta); /* * PPS accessor */ extern void getnstime_raw_and_real(struct timespec *ts_raw, struct timespec *ts_real); /* * Persistent clock related interfaces */ extern bool persistent_clock_exist; extern int persistent_clock_is_local; static inline bool has_persistent_clock(void) { return persistent_clock_exist; } extern void read_persistent_clock(struct timespec *ts); extern void read_boot_clock(struct timespec *ts); extern int update_persistent_clock(struct timespec now); #endif