summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/sys/timerfd.h
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2021-02-17 13:35:19 -0300
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2021-02-18 20:42:42 -0300
commit904cb172e7e49e4d36e9e22897ea3a081055fa72 (patch)
tree05a6e2545ee1fe4db89ff26ad01886265d471f9f /sysdeps/unix/sysv/linux/sys/timerfd.h
parent3c0cd0d37d1d793ba66ac996b4aaf7fc200e17a8 (diff)
downloadglibc-904cb172e7e49e4d36e9e22897ea3a081055fa72.tar.gz
y2038: Add support for 64 bit time on legacy ABIs
A new build flag, _TIME_BITS, enables the usage of the newer 64 bit time symbols for legacy ABI (where 32 bit time_t is default). The 64 bit time support is only enabled if LFS (_FILE_OFFSET_BITS=64) is also used. Different than LFS support, the y2038 symbols are added only for the required ABIs (armhf, csky, hppa, i386, m68k, microblaze, mips32, nios2, powerpc32, sparc32, s390-32, and sh). The ABIs with 64 bit time support are unchanged, both for symbol and types redirection. On Linux apropoer 64 bit time support requires a minimum of kernel version v5.1. Otherwise, the 32 bit fallbacks are used and might results in error with overflow return code (EOVERFLOW). The i686-gnu does not yet support 64 bit time, and trying to build it using -D_TIME_BITS=64 results in an error. This patch also converts following implemetations to support 64 bit time: * libc: - adjtimex - adjtime - clock_adjtime - clock_getres - clock_gettime - clock_nanosleep_time - clock_settime - ctime - ctime_r - difftime - futimens - futimes - futimesat - getitimer - getrusage - gettimeofday - gmtime - gmtime - lutimes - mktime - msgctl - nanosleep - ntp_gettime - ntp_gettimex - ppoll - pselect - recvmmsg - sched_rr_get_interval - select - semctl - semtimedop - setitimer - settimeofday - shmctl - sigtimedwait - time - timegm - timerfd_gettime - timerfd_settime - timespec_get - utime - utimensat - utimes - wait3 - wait4 * libpthread: - mtx_timedlock - pthread_clockjoin_np - pthread_cond_clockwait - pthread_cond_timedwait - pthread_mutex_clocklock - pthread_mutex_timedlock - pthread_rwlock_clockrdlock - pthread_rwlock_clockwrlock - pthread_rwlock_timedrdlock - pthread_rwlock_timedwrlock - pthread_timedjoin_np - sem_clockwait - sem_timedwait * librt: - aio_suspend_time - mq_timedreceive_time - mq_timedsend_time - timer_gettime - timer_settime * libanl: - gai_suspend
Diffstat (limited to 'sysdeps/unix/sysv/linux/sys/timerfd.h')
-rw-r--r--sysdeps/unix/sysv/linux/sys/timerfd.h22
1 files changed, 22 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/sys/timerfd.h b/sysdeps/unix/sysv/linux/sys/timerfd.h
index 4ad64c2259..790b9d5be6 100644
--- a/sysdeps/unix/sysv/linux/sys/timerfd.h
+++ b/sysdeps/unix/sysv/linux/sys/timerfd.h
@@ -47,9 +47,31 @@ extern int timerfd_settime (int __ufd, int __flags,
const struct itimerspec *__utmr,
struct itimerspec *__otmr) __THROW;
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_settime,
+ (int __ufd, int __flags,
+ const struct itimerspec *__restrict __value,
+ struct itimerspec *__restrict __ovalue),
+ __timerfd_settime64);
+# else
+# define timerfd_settime __timerfd_settime64
+# endif
+#endif
+
/* Return the next expiration time of UFD. */
extern int timerfd_gettime (int __ufd, struct itimerspec *__otmr) __THROW;
+#ifdef __USE_TIME_BITS64
+# if defined(__REDIRECT_NTH)
+extern int __REDIRECT_NTH (timerfd_gettime, (int __ufd,
+ struct itimerspec *__otmr),
+ __timerfd_gettime64);
+# else
+# define timerfd_gettime __timerfd_gettime64
+# endif
+#endif
+
__END_DECLS
#endif /* sys/timerfd.h */