From 3feb53bab07c29f5390420379b3988f71b19e32c Mon Sep 17 00:00:00 2001 From: Adhemerval Zanella Date: Fri, 10 Jul 2020 13:33:40 -0300 Subject: linux: Simplify ppoll With arch-syscall.h it can now assumes the existance of either __NR_ppoll or __NR_ppoll_time64. The 32-bit time_t support is now only build for !__ASSUME_TIME64_SYSCALLS. Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15 kernel). Reviewed-by: Lukasz Majewski --- sysdeps/unix/sysv/linux/ppoll.c | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) (limited to 'sysdeps/unix/sysv/linux') diff --git a/sysdeps/unix/sysv/linux/ppoll.c b/sysdeps/unix/sysv/linux/ppoll.c index 0f15636cce..dd2167fc55 100644 --- a/sysdeps/unix/sysv/linux/ppoll.c +++ b/sysdeps/unix/sysv/linux/ppoll.c @@ -37,19 +37,16 @@ __ppoll64 (struct pollfd *fds, nfds_t nfds, const struct __timespec64 *timeout, timeout = &tval; } -#ifdef __ASSUME_TIME64_SYSCALLS -# ifndef __NR_ppoll_time64 -# define __NR_ppoll_time64 __NR_ppoll -# endif - return SYSCALL_CANCEL (ppoll_time64, fds, nfds, timeout, sigmask, - __NSIG_BYTES); -#else -# ifdef __NR_ppoll_time64 +#ifndef __NR_ppoll_time64 +# define __NR_ppoll_time64 __NR_ppoll +#endif int ret = SYSCALL_CANCEL (ppoll_time64, fds, nfds, timeout, sigmask, __NSIG_BYTES); + +#ifndef __ASSUME_TIME64_SYSCALLS if (ret >= 0 || errno != ENOSYS) return ret; -# endif + struct timespec ts32; if (timeout) { @@ -62,9 +59,11 @@ __ppoll64 (struct pollfd *fds, nfds_t nfds, const struct __timespec64 *timeout, ts32 = valid_timespec64_to_timespec (*timeout); } - return SYSCALL_CANCEL (ppoll, fds, nfds, timeout ? &ts32 : NULL, sigmask, - __NSIG_BYTES); + ret = SYSCALL_CANCEL (ppoll, fds, nfds, timeout ? &ts32 : NULL, sigmask, + __NSIG_BYTES); #endif + + return ret; } #if __TIMESIZE != 64 -- cgit 1.4.1