Message ID | 20200118072047.23071-6-lukma@denx.de |
---|---|
State | New |
Headers | show |
Series | y2038: Convert settimeofday to be Y2038 safe | expand |
On Sat, Jan 18, 2020 at 5:21 PM Lukasz Majewski <lukma@denx.de> wrote: > > Those functions allow easy conversion between Y2038 safe, glibc internal > struct __timeval64 and other time related data structures (like struct timeval > or struct __timespec64). > > Build tests: > ./src/scripts/build-many-glibcs.py glibcs Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > include/time.h | 36 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 36 insertions(+) > > diff --git a/include/time.h b/include/time.h > index 22ecacd0d8..b40214c006 100644 > --- a/include/time.h > +++ b/include/time.h > @@ -304,6 +304,30 @@ valid_timeval_to_timespec64 (const struct timeval tv) > return ts64; > } > > +/* Convert a known valid struct timeval into a struct __timeval64. */ > +static inline struct __timeval64 > +valid_timeval_to_timeval64 (const struct timeval tv) > +{ > + struct __timeval64 tv64; > + > + tv64.tv_sec = tv.tv_sec; > + tv64.tv_usec = tv.tv_usec; > + > + return tv64; > +} > + > +/* Convert a struct __timeval64 into a struct __timespec64. */ > +static inline struct __timespec64 > +timeval64_to_timespec64 (const struct __timeval64 tv64) > +{ > + struct __timespec64 ts64; > + > + ts64.tv_sec = tv64.tv_sec; > + ts64.tv_nsec = tv64.tv_usec * 1000; > + > + return ts64; > +} > + > /* Convert a known valid struct timespec into a struct __timespec64. */ > static inline struct __timespec64 > valid_timespec_to_timespec64 (const struct timespec ts) > @@ -342,6 +366,18 @@ valid_timespec64_to_timeval (const struct __timespec64 ts64) > return tv; > } > > +/* Convert a struct __timespec64 into a struct __timeval64. */ > +static inline struct __timeval64 > +timespec64_to_timeval64 (const struct __timespec64 ts64) > +{ > + struct __timeval64 tv64; > + > + tv64.tv_sec = ts64.tv_sec; > + tv64.tv_usec = ts64.tv_nsec / 1000; > + > + return tv64; > +} > + > /* Check if a value is in the valid nanoseconds range. Return true if > it is, false otherwise. */ > static inline bool > -- > 2.20.1 >
diff --git a/include/time.h b/include/time.h index 22ecacd0d8..b40214c006 100644 --- a/include/time.h +++ b/include/time.h @@ -304,6 +304,30 @@ valid_timeval_to_timespec64 (const struct timeval tv) return ts64; } +/* Convert a known valid struct timeval into a struct __timeval64. */ +static inline struct __timeval64 +valid_timeval_to_timeval64 (const struct timeval tv) +{ + struct __timeval64 tv64; + + tv64.tv_sec = tv.tv_sec; + tv64.tv_usec = tv.tv_usec; + + return tv64; +} + +/* Convert a struct __timeval64 into a struct __timespec64. */ +static inline struct __timespec64 +timeval64_to_timespec64 (const struct __timeval64 tv64) +{ + struct __timespec64 ts64; + + ts64.tv_sec = tv64.tv_sec; + ts64.tv_nsec = tv64.tv_usec * 1000; + + return ts64; +} + /* Convert a known valid struct timespec into a struct __timespec64. */ static inline struct __timespec64 valid_timespec_to_timespec64 (const struct timespec ts) @@ -342,6 +366,18 @@ valid_timespec64_to_timeval (const struct __timespec64 ts64) return tv; } +/* Convert a struct __timespec64 into a struct __timeval64. */ +static inline struct __timeval64 +timespec64_to_timeval64 (const struct __timespec64 ts64) +{ + struct __timeval64 tv64; + + tv64.tv_sec = ts64.tv_sec; + tv64.tv_usec = ts64.tv_nsec / 1000; + + return tv64; +} + /* Check if a value is in the valid nanoseconds range. Return true if it is, false otherwise. */ static inline bool