blob: e81c35b71da76e8870cd1341dae9aafa25556de7 [file] [log] [blame]
Thomas Gleixner8b094cd2014-07-16 21:04:02 +00001#ifndef _LINUX_TIMEKEEPING_H
2#define _LINUX_TIMEKEEPING_H
3
4/* Included from linux/ktime.h */
5
6void timekeeping_init(void);
7extern int timekeeping_suspended;
8
9/*
10 * Get and set timeofday
11 */
12extern void do_gettimeofday(struct timeval *tv);
13extern int do_settimeofday(const struct timespec *tv);
14extern int do_sys_settimeofday(const struct timespec *tv,
15 const struct timezone *tz);
16
17/*
18 * Kernel time accessors
19 */
20unsigned long get_seconds(void);
21struct timespec current_kernel_time(void);
22/* does not take xtime_lock */
23struct timespec __current_kernel_time(void);
24
25/*
26 * timespec based interfaces
27 */
28struct timespec get_monotonic_coarse(void);
29extern void getrawmonotonic(struct timespec *ts);
30extern void monotonic_to_bootbased(struct timespec *ts);
31extern void get_monotonic_boottime(struct timespec *ts);
32extern void ktime_get_ts(struct timespec *ts);
33
34extern int __getnstimeofday(struct timespec *tv);
35extern void getnstimeofday(struct timespec *tv);
36extern void getboottime(struct timespec *ts);
37
38#define do_posix_clock_monotonic_gettime(ts) ktime_get_ts(ts)
39#define ktime_get_real_ts(ts) getnstimeofday(ts)
40
41
42/*
43 * ktime_t based interfaces
44 */
45extern ktime_t ktime_get(void);
46extern ktime_t ktime_get_real(void);
47extern ktime_t ktime_get_boottime(void);
48extern ktime_t ktime_get_monotonic_offset(void);
49extern ktime_t ktime_get_clocktai(void);
50
51/*
52 * RTC specific
53 */
54extern void timekeeping_inject_sleeptime(struct timespec *delta);
55
56/*
57 * PPS accessor
58 */
59extern void getnstime_raw_and_real(struct timespec *ts_raw,
60 struct timespec *ts_real);
61
62/*
63 * Persistent clock related interfaces
64 */
65extern bool persistent_clock_exist;
66extern int persistent_clock_is_local;
67
68static inline bool has_persistent_clock(void)
69{
70 return persistent_clock_exist;
71}
72
73extern void read_persistent_clock(struct timespec *ts);
74extern void read_boot_clock(struct timespec *ts);
75extern int update_persistent_clock(struct timespec now);
76
77
78#endif