diff options
author | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-07-06 16:06:51 -0300 |
---|---|---|
committer | Adhemerval Zanella <adhemerval.zanella@linaro.org> | 2020-09-28 16:21:48 -0300 |
commit | 2433d39b69743f100f972e7886f91a2e21795ef0 (patch) | |
tree | 39497b3a34f148b79e614a1281685339dd5bb0e3 /include | |
parent | 50e19ddfcd49cb9e012a6288881a77a48fb0aeaa (diff) | |
download | glibc-2433d39b69743f100f972e7886f91a2e21795ef0.tar.gz glibc-2433d39b69743f100f972e7886f91a2e21795ef0.tar.xz glibc-2433d39b69743f100f972e7886f91a2e21795ef0.zip |
linux: Add time64 select support
The syscall __NR_pselect6_time64 (32-bit) or __NR_pselect6 (64-bit) is used as default. For architectures with __ASSUME_TIME64_SYSCALLS the 32-bit fallback uses __NR_select/__NR__newselect or __NR_pselect6 (it should cover the microblaze case where older kernels do not provide __NR_pselect6). Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15 kernel). Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Diffstat (limited to 'include')
-rw-r--r-- | include/sys/select.h | 8 | ||||
-rw-r--r-- | include/time.h | 6 |
2 files changed, 14 insertions, 0 deletions
diff --git a/include/sys/select.h b/include/sys/select.h index b5ae9af861..ec073deeba 100644 --- a/include/sys/select.h +++ b/include/sys/select.h @@ -5,8 +5,11 @@ /* Now define the internal interfaces. */ # if __TIMESIZE == 64 # define __pselect64 __pselect +# define __select64 __select #else # include <struct___timespec64.h> +# include <struct___timeval64.h> + extern int __pselect64 (int __nfds, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, const struct __timespec64 *__timeout, @@ -18,6 +21,11 @@ extern int __pselect32 (int __nfds, fd_set *__readfds, const struct __timespec64 *__timeout, const __sigset_t *__sigmask) attribute_hidden; + +extern int __select64 (int __nfds, fd_set *__readfds, + fd_set *__writefds, fd_set *__exceptfds, + struct __timeval64 *__timeout); +libc_hidden_proto (__select64) #endif extern int __pselect (int __nfds, fd_set *__readfds, fd_set *__writefds, fd_set *__exceptfds, diff --git a/include/time.h b/include/time.h index fe4da9ca10..936486e206 100644 --- a/include/time.h +++ b/include/time.h @@ -464,6 +464,12 @@ valid_timespec_to_timeval32 (const struct timespec ts) return (struct __timeval32) { (time_t) ts.tv_sec, ts.tv_nsec / 1000 }; } +static inline struct __timeval64 +valid_timespec_to_timeval64 (const struct timespec ts) +{ + return (struct __timeval64) { (time_t) ts.tv_sec, ts.tv_nsec / 1000 }; +} + /* Check if a value is in the valid nanoseconds range. Return true if it is, false otherwise. */ static inline bool |