Message ID | 20200129125914.11221-2-lukma@denx.de |
---|---|
State | Committed |
Headers | show |
On Wed, Jan 29, 2020 at 4:59 AM Lukasz Majewski <lukma@denx.de> wrote: > > This type is a glibc's "internal" type similar to struct timeval but > whose tv_sec field is a __time64_t rather than a time_t, which makes it > Y2038-proof. This struct is NOT supposed to be passed to the kernel - > instead it shall be converted to struct __timespec64 and clock_[sg]ettime > syscalls shall be used (which are now Y2038 safe). > > Build tests: > ./src/scripts/build-many-glibcs.py glibcs Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > > --- > Changes for v3: > - None > > Changes for v2: > - Replace __suseconds_t with __suseconds64_t > --- > include/time.h | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/include/time.h b/include/time.h > index 047f431a1a..99492a1577 100644 > --- a/include/time.h > +++ b/include/time.h > @@ -93,6 +93,20 @@ struct __itimerspec64 > }; > #endif > > +#if __TIMESIZE == 64 > +# define __timeval64 timeval > +#else > +/* The glibc Y2038-proof struct __timeval64 structure for a time value. > + This structure is NOT supposed to be passed to the Linux kernel. > + Instead, it shall be converted to struct __timespec64 and time shall > + be [sg]et via clock_[sg]ettime (which are now Y2038 safe). */ > +struct __timeval64 > +{ > + __time64_t tv_sec; /* Seconds */ > + __suseconds64_t tv_usec; /* Microseconds */ > +}; > +#endif > + > #if __TIMESIZE == 64 > # define __ctime64 ctime > #else > -- > 2.20.1 >
On 29/01/2020 09:59, Lukasz Majewski wrote: > This type is a glibc's "internal" type similar to struct timeval but > whose tv_sec field is a __time64_t rather than a time_t, which makes it > Y2038-proof. This struct is NOT supposed to be passed to the kernel - > instead it shall be converted to struct __timespec64 and clock_[sg]ettime > syscalls shall be used (which are now Y2038 safe). > > Build tests: > ./src/scripts/build-many-glibcs.py glibcs LGTM, thanks. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> > > --- > Changes for v3: > - None > > Changes for v2: > - Replace __suseconds_t with __suseconds64_t > --- > include/time.h | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/include/time.h b/include/time.h > index 047f431a1a..99492a1577 100644 > --- a/include/time.h > +++ b/include/time.h > @@ -93,6 +93,20 @@ struct __itimerspec64 > }; > #endif > > +#if __TIMESIZE == 64 > +# define __timeval64 timeval > +#else > +/* The glibc Y2038-proof struct __timeval64 structure for a time value. > + This structure is NOT supposed to be passed to the Linux kernel. > + Instead, it shall be converted to struct __timespec64 and time shall > + be [sg]et via clock_[sg]ettime (which are now Y2038 safe). */ > +struct __timeval64 > +{ > + __time64_t tv_sec; /* Seconds */ > + __suseconds64_t tv_usec; /* Microseconds */ > +}; > +#endif > + > #if __TIMESIZE == 64 > # define __ctime64 ctime > #else > Ok.
diff --git a/include/time.h b/include/time.h index 047f431a1a..99492a1577 100644 --- a/include/time.h +++ b/include/time.h @@ -93,6 +93,20 @@ struct __itimerspec64 }; #endif +#if __TIMESIZE == 64 +# define __timeval64 timeval +#else +/* The glibc Y2038-proof struct __timeval64 structure for a time value. + This structure is NOT supposed to be passed to the Linux kernel. + Instead, it shall be converted to struct __timespec64 and time shall + be [sg]et via clock_[sg]ettime (which are now Y2038 safe). */ +struct __timeval64 +{ + __time64_t tv_sec; /* Seconds */ + __suseconds64_t tv_usec; /* Microseconds */ +}; +#endif + #if __TIMESIZE == 64 # define __ctime64 ctime #else