blob: 3616b4becb594012cdd6280b10d297ecebb7d04f [file] [log] [blame]
Arnd Bergmann65469112017-10-19 13:14:49 +02001#ifndef _LINUX_TIMEKEEPING32_H
2#define _LINUX_TIMEKEEPING32_H
3/*
4 * These interfaces are all based on the old timespec type
5 * and should get replaced with the timespec64 based versions
6 * over time so we can remove the file here.
7 */
8
9extern void do_gettimeofday(struct timeval *tv);
10unsigned long get_seconds(void);
11
Arnd Bergmann65469112017-10-19 13:14:49 +020012static inline struct timespec current_kernel_time(void)
13{
14 struct timespec64 now = current_kernel_time64();
15
16 return timespec64_to_timespec(now);
17}
18
19#if BITS_PER_LONG == 64
20/**
21 * Deprecated. Use do_settimeofday64().
22 */
23static inline int do_settimeofday(const struct timespec *ts)
24{
25 return do_settimeofday64(ts);
26}
27
28static inline int __getnstimeofday(struct timespec *ts)
29{
30 return __getnstimeofday64(ts);
31}
32
33static inline void getnstimeofday(struct timespec *ts)
34{
35 getnstimeofday64(ts);
36}
37
38static inline void ktime_get_ts(struct timespec *ts)
39{
40 ktime_get_ts64(ts);
41}
42
43static inline void ktime_get_real_ts(struct timespec *ts)
44{
45 getnstimeofday64(ts);
46}
47
48static inline void getrawmonotonic(struct timespec *ts)
49{
50 getrawmonotonic64(ts);
51}
52
53static inline struct timespec get_monotonic_coarse(void)
54{
55 return get_monotonic_coarse64();
56}
57
58static inline void getboottime(struct timespec *ts)
59{
60 return getboottime64(ts);
61}
62#else
63/**
64 * Deprecated. Use do_settimeofday64().
65 */
66static inline int do_settimeofday(const struct timespec *ts)
67{
68 struct timespec64 ts64;
69
70 ts64 = timespec_to_timespec64(*ts);
71 return do_settimeofday64(&ts64);
72}
73
74static inline int __getnstimeofday(struct timespec *ts)
75{
76 struct timespec64 ts64;
77 int ret = __getnstimeofday64(&ts64);
78
79 *ts = timespec64_to_timespec(ts64);
80 return ret;
81}
82
83static inline void getnstimeofday(struct timespec *ts)
84{
85 struct timespec64 ts64;
86
87 getnstimeofday64(&ts64);
88 *ts = timespec64_to_timespec(ts64);
89}
90
91static inline void ktime_get_ts(struct timespec *ts)
92{
93 struct timespec64 ts64;
94
95 ktime_get_ts64(&ts64);
96 *ts = timespec64_to_timespec(ts64);
97}
98
99static inline void ktime_get_real_ts(struct timespec *ts)
100{
101 struct timespec64 ts64;
102
103 getnstimeofday64(&ts64);
104 *ts = timespec64_to_timespec(ts64);
105}
106
107static inline void getrawmonotonic(struct timespec *ts)
108{
109 struct timespec64 ts64;
110
111 getrawmonotonic64(&ts64);
112 *ts = timespec64_to_timespec(ts64);
113}
114
115static inline struct timespec get_monotonic_coarse(void)
116{
117 return timespec64_to_timespec(get_monotonic_coarse64());
118}
119
120static inline void getboottime(struct timespec *ts)
121{
122 struct timespec64 ts64;
123
124 getboottime64(&ts64);
125 *ts = timespec64_to_timespec(ts64);
126}
127#endif
128
129/*
130 * Timespec interfaces utilizing the ktime based ones
131 */
132static inline void get_monotonic_boottime(struct timespec *ts)
133{
134 *ts = ktime_to_timespec(ktime_get_boottime());
135}
136
137static inline void timekeeping_clocktai(struct timespec *ts)
138{
139 *ts = ktime_to_timespec(ktime_get_clocktai());
140}
141
142/*
143 * Persistent clock related interfaces
144 */
145extern void read_persistent_clock(struct timespec *ts);
146extern int update_persistent_clock(struct timespec now);
147
148#endif