mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
y2038: Provide conversion helpers for struct __timeval64
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> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
This commit is contained in:
parent
ebc2368121
commit
29bf83ccd7
@ -304,6 +304,43 @@ 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 valid and within range of struct timeval, struct
|
||||
__timeval64 into a struct timeval. */
|
||||
static inline struct timeval
|
||||
valid_timeval64_to_timeval (const struct __timeval64 tv64)
|
||||
{
|
||||
struct timeval tv;
|
||||
|
||||
tv.tv_sec = (time_t) tv64.tv_sec;
|
||||
tv.tv_usec = (suseconds_t) tv64.tv_usec;
|
||||
|
||||
return tv;
|
||||
}
|
||||
|
||||
/* 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 +379,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
|
||||
|
Loading…
Reference in New Issue
Block a user