Merge tag 'nds32-for-linus-4.18' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-microblaze.git] / include / linux / timekeeping32.h
1 #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
9 extern void do_gettimeofday(struct timeval *tv);
10 unsigned long get_seconds(void);
11
12 static inline struct timespec current_kernel_time(void)
13 {
14         struct timespec64 ts64;
15
16         ktime_get_coarse_real_ts64(&ts64);
17
18         return timespec64_to_timespec(ts64);
19 }
20
21 /**
22  * Deprecated. Use do_settimeofday64().
23  */
24 static inline int do_settimeofday(const struct timespec *ts)
25 {
26         struct timespec64 ts64;
27
28         ts64 = timespec_to_timespec64(*ts);
29         return do_settimeofday64(&ts64);
30 }
31
32 static inline void getnstimeofday(struct timespec *ts)
33 {
34         struct timespec64 ts64;
35
36         ktime_get_real_ts64(&ts64);
37         *ts = timespec64_to_timespec(ts64);
38 }
39
40 static inline void ktime_get_ts(struct timespec *ts)
41 {
42         struct timespec64 ts64;
43
44         ktime_get_ts64(&ts64);
45         *ts = timespec64_to_timespec(ts64);
46 }
47
48 static inline void ktime_get_real_ts(struct timespec *ts)
49 {
50         struct timespec64 ts64;
51
52         ktime_get_real_ts64(&ts64);
53         *ts = timespec64_to_timespec(ts64);
54 }
55
56 static inline void getrawmonotonic(struct timespec *ts)
57 {
58         struct timespec64 ts64;
59
60         ktime_get_raw_ts64(&ts64);
61         *ts = timespec64_to_timespec(ts64);
62 }
63
64 static inline struct timespec get_monotonic_coarse(void)
65 {
66         struct timespec64 ts64;
67
68         ktime_get_coarse_ts64(&ts64);
69
70         return timespec64_to_timespec(ts64);
71 }
72
73 static inline void getboottime(struct timespec *ts)
74 {
75         struct timespec64 ts64;
76
77         getboottime64(&ts64);
78         *ts = timespec64_to_timespec(ts64);
79 }
80
81 /*
82  * Timespec interfaces utilizing the ktime based ones
83  */
84 static inline void get_monotonic_boottime(struct timespec *ts)
85 {
86         *ts = ktime_to_timespec(ktime_get_boottime());
87 }
88
89 static inline void timekeeping_clocktai(struct timespec *ts)
90 {
91         *ts = ktime_to_timespec(ktime_get_clocktai());
92 }
93
94 /*
95  * Persistent clock related interfaces
96  */
97 extern void read_persistent_clock(struct timespec *ts);
98 extern int update_persistent_clock(struct timespec now);
99
100 #endif