@@ -18,6 +18,11 @@ struct timespec64 {
};
#endif
+struct itimerspec64 {
+ struct timespec64 it_interval; /* timer period */
+ struct timespec64 it_value; /* timer expiration */
+};
+
/* Parameters used to convert the timespec values: */
#define MSEC_PER_SEC 1000L
#define USEC_PER_MSEC 1000L
@@ -187,4 +192,12 @@ static __always_inline void timespec64_add_ns(struct timespec64 *a, u64 ns)
#endif
+#define itimerspec64_to_itimerspec(its64) \
+ ({ (struct itimerspec){ .it_interval = timespec64_to_timespec((its64).it_interval), \
+ .it_value = timespec64_to_timespec((its64).it_value) }; })
+
+#define itimerspec_to_itimerspec64(its) \
+ ({ (struct itimerspec64){ .it_interval = timespec_to_timespec64((its).it_interval), \
+ .it_value = timespec_to_timespec64((its).it_value) }; })
+
#endif /* _LINUX_TIME64_H */
This patch introduces the 'struct itimerspec64' for 64bit to replace itimerspec, and also introduces the conversion methods: itimerspec64_to_itimerspec() and itimerspec_to_itimerspec64(), that makes itimerspec to ready for 2038 year. Signed-off-by: Baolin Wang <baolin.wang@linaro.org> --- include/linux/time64.h | 13 +++++++++++++ 1 file changed, 13 insertions(+)