at v4.15 3.0 kB view raw
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 9extern void do_gettimeofday(struct timeval *tv); 10unsigned long get_seconds(void); 11 12/* does not take xtime_lock */ 13struct timespec __current_kernel_time(void); 14 15static inline struct timespec current_kernel_time(void) 16{ 17 struct timespec64 now = current_kernel_time64(); 18 19 return timespec64_to_timespec(now); 20} 21 22#if BITS_PER_LONG == 64 23/** 24 * Deprecated. Use do_settimeofday64(). 25 */ 26static inline int do_settimeofday(const struct timespec *ts) 27{ 28 return do_settimeofday64(ts); 29} 30 31static inline int __getnstimeofday(struct timespec *ts) 32{ 33 return __getnstimeofday64(ts); 34} 35 36static inline void getnstimeofday(struct timespec *ts) 37{ 38 getnstimeofday64(ts); 39} 40 41static inline void ktime_get_ts(struct timespec *ts) 42{ 43 ktime_get_ts64(ts); 44} 45 46static inline void ktime_get_real_ts(struct timespec *ts) 47{ 48 getnstimeofday64(ts); 49} 50 51static inline void getrawmonotonic(struct timespec *ts) 52{ 53 getrawmonotonic64(ts); 54} 55 56static inline struct timespec get_monotonic_coarse(void) 57{ 58 return get_monotonic_coarse64(); 59} 60 61static inline void getboottime(struct timespec *ts) 62{ 63 return getboottime64(ts); 64} 65#else 66/** 67 * Deprecated. Use do_settimeofday64(). 68 */ 69static inline int do_settimeofday(const struct timespec *ts) 70{ 71 struct timespec64 ts64; 72 73 ts64 = timespec_to_timespec64(*ts); 74 return do_settimeofday64(&ts64); 75} 76 77static inline int __getnstimeofday(struct timespec *ts) 78{ 79 struct timespec64 ts64; 80 int ret = __getnstimeofday64(&ts64); 81 82 *ts = timespec64_to_timespec(ts64); 83 return ret; 84} 85 86static inline void getnstimeofday(struct timespec *ts) 87{ 88 struct timespec64 ts64; 89 90 getnstimeofday64(&ts64); 91 *ts = timespec64_to_timespec(ts64); 92} 93 94static inline void ktime_get_ts(struct timespec *ts) 95{ 96 struct timespec64 ts64; 97 98 ktime_get_ts64(&ts64); 99 *ts = timespec64_to_timespec(ts64); 100} 101 102static inline void ktime_get_real_ts(struct timespec *ts) 103{ 104 struct timespec64 ts64; 105 106 getnstimeofday64(&ts64); 107 *ts = timespec64_to_timespec(ts64); 108} 109 110static inline void getrawmonotonic(struct timespec *ts) 111{ 112 struct timespec64 ts64; 113 114 getrawmonotonic64(&ts64); 115 *ts = timespec64_to_timespec(ts64); 116} 117 118static inline struct timespec get_monotonic_coarse(void) 119{ 120 return timespec64_to_timespec(get_monotonic_coarse64()); 121} 122 123static inline void getboottime(struct timespec *ts) 124{ 125 struct timespec64 ts64; 126 127 getboottime64(&ts64); 128 *ts = timespec64_to_timespec(ts64); 129} 130#endif 131 132/* 133 * Timespec interfaces utilizing the ktime based ones 134 */ 135static inline void get_monotonic_boottime(struct timespec *ts) 136{ 137 *ts = ktime_to_timespec(ktime_get_boottime()); 138} 139 140static inline void timekeeping_clocktai(struct timespec *ts) 141{ 142 *ts = ktime_to_timespec(ktime_get_clocktai()); 143} 144 145/* 146 * Persistent clock related interfaces 147 */ 148extern void read_persistent_clock(struct timespec *ts); 149extern int update_persistent_clock(struct timespec now); 150 151#endif