mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
y2038: Provide conversion helpers for struct __ntptimeval64
Those functions allow easy conversion between Y2038 safe, glibc internal struct __ntptimeval64 and struct ntptimeval. The reserved fields (i.e. __glibc_reserved{1234}) during conversion are zeroed as well, to provide behavior similar to one in ntp_gettimex function (where those are cleared before the struct ntptimeval is returned). Those functions are put in Linux specific sys/timex.h file, as putting them into glibc's local include/time.h would cause build break on HURD as it doesn't support struct timex related syscalls. Build tests: ./src/scripts/build-many-glibcs.py glibcs Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
@ -152,5 +152,41 @@ valid_timex64_to_timex (const struct __timex64 tx64)
|
|||||||
|
|
||||||
return tx;
|
return tx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Convert a known valid struct ntptimeval into a struct __ntptimeval64. */
|
||||||
|
static inline struct __ntptimeval64
|
||||||
|
valid_ntptimeval_to_ntptimeval64 (const struct ntptimeval ntv)
|
||||||
|
{
|
||||||
|
struct __ntptimeval64 ntv64;
|
||||||
|
|
||||||
|
ntv64.time = valid_timeval_to_timeval64 (ntv.time);
|
||||||
|
ntv64.maxerror = ntv.maxerror;
|
||||||
|
ntv64.esterror = ntv.esterror;
|
||||||
|
ntv64.tai = ntv.tai;
|
||||||
|
ntv64.__glibc_reserved1 = 0;
|
||||||
|
ntv64.__glibc_reserved2 = 0;
|
||||||
|
ntv64.__glibc_reserved3 = 0;
|
||||||
|
ntv64.__glibc_reserved4 = 0;
|
||||||
|
|
||||||
|
return ntv64;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Convert a known valid struct __ntptimeval64 into a struct ntptimeval. */
|
||||||
|
static inline struct ntptimeval
|
||||||
|
valid_ntptimeval64_to_ntptimeval (const struct __ntptimeval64 ntp64)
|
||||||
|
{
|
||||||
|
struct ntptimeval ntp;
|
||||||
|
|
||||||
|
ntp.time = valid_timeval64_to_timeval (ntp64.time);
|
||||||
|
ntp.maxerror = ntp64.maxerror;
|
||||||
|
ntp.esterror = ntp64.esterror;
|
||||||
|
ntp.tai = ntp64.tai;
|
||||||
|
ntp.__glibc_reserved1 = 0;
|
||||||
|
ntp.__glibc_reserved2 = 0;
|
||||||
|
ntp.__glibc_reserved3 = 0;
|
||||||
|
ntp.__glibc_reserved4 = 0;
|
||||||
|
|
||||||
|
return ntp;
|
||||||
|
}
|
||||||
# endif /* _ISOMAC */
|
# endif /* _ISOMAC */
|
||||||
#endif /* sys/timex.h */
|
#endif /* sys/timex.h */
|
||||||
|
Reference in New Issue
Block a user