glibc/include/sys
Lukasz Majewski 258c242128 y2038: linux: Provide __ppoll64 implementation
This patch provides new __ppoll64 explicit 64 bit function for handling polling
events (with struct timespec specified timeout) for a set of file descriptors.
Moreover, a 32 bit version - __ppoll has been refactored to internally use
__ppoll64.

The __ppoll is now supposed to be used on systems still supporting 32 bit time
(__TIMESIZE != 64) - hence the necessary conversion to 64 bit struct
__timespec64.

The new ppoll_time64 syscall available from Linux 5.1+ has been used, when
applicable.

The Linux kernel checks if passed tv_nsec value overflows, so there is no need
to repeat it in the glibc.

When ppoll syscall on systems supporting 32 bit time ABI is used, the check is
performed if passed data (which may have 64 bit tv_sec) fits into 32 bit range.

Build tests:
- The code has been tested on x86_64/x86 (native compilation):
make PARALLELMFLAGS="-j8" && make check PARALLELMFLAGS="-j8" && \\
make xcheck PARALLELMFLAGS="-j8"

- The glibc has been build tested (make PARALLELMFLAGS="-j8") for
x86 (i386), x86_64-x32, and armv7

Run-time tests:
- Run specific tests on ARM/x86 32bit systems (qemu):
  https://github.com/lmajewski/meta-y2038 and run tests:
  https://github.com/lmajewski/y2038-tests/commits/master

- Use of cross-test-ssh.sh for ARM (armv7):
  make PARALLELMFLAGS="-j8" test-wrapper='./cross-test-ssh.sh root@192.168.7.2' xcheck

Linux kernel, headers and minimal kernel version for glibc build test
matrix:
- Linux v5.1 (with ppoll_time64) and glibc build with v5.1 as
  minimal kernel version (--enable-kernel="5.1.0")
  The __ASSUME_TIME64_SYSCALLS flag defined.

- Linux v5.1 and default minimal kernel version
  The __ASSUME_TIME64_SYSCALLS not defined, but kernel supports ppoll_time64
  syscall.

- Linux v4.19 (no ppoll_time64 support) with default minimal kernel version for
  contemporary glibc
  This kernel doesn't support ppoll_time64 syscall, so the fallback to ppoll is
  tested.

Above tests were performed with Y2038 redirection applied as well as without
(so the __TIMESIZE != 64 execution path is checked as well).

No regressions were observed.
2019-11-11 14:41:43 +01:00
..
auxv.h Add a way to bypass the PLT when calling getauxval 2017-06-09 14:36:22 -03:00
bitypes.h
cdefs.h
dir.h
epoll.h Installed header hygiene (BZ#20366): Test of installed headers. 2016-09-23 08:43:56 -04:00
errno.h
fcntl.h
file.h Installed header hygiene (BZ#20366): Test of installed headers. 2016-09-23 08:43:56 -04:00
gmon_out.h
gmon.h Remove __bb_init_func and __bb_exit_func [BZ #21974] 2017-08-20 06:39:31 -07:00
ioctl.h Hide internal __ioctl function [BZ #18822] 2017-10-01 15:59:06 -07:00
ipc.h
mman.h Hide internal __mremap function [BZ #18822] 2017-10-01 16:02:04 -07:00
msg.h
param.h
poll.h y2038: linux: Provide __ppoll64 implementation 2019-11-11 14:41:43 +01:00
prctl.h Installed header hygiene (BZ#20366): Test of installed headers. 2016-09-23 08:43:56 -04:00
profil.h Installed header hygiene (BZ#20366): Test of installed headers. 2016-09-23 08:43:56 -04:00
queue.h
random.h Add missing header wrappers under include/ 2019-02-16 08:25:16 +01:00
resource.h Hide internal __setrlimit function [BZ #18822] 2017-10-01 17:46:54 -07:00
select.h
sem.h sysvipc: Implement semop based on semtimedop 2019-10-17 11:05:40 -03:00
sendfile.h hurd: avoid PLT ref between sendfile and sendfile64 2018-06-16 00:44:57 +02:00
shm.h
signal.h
socket.h Use libc_hidden_* for __cmsg_nxthdr (bug 15105). 2018-02-15 20:59:12 +00:00
stat.h Introduce NO_RTLD_HIDDEN, make hurd use it instead of NO_HIDDEN 2017-10-03 01:33:38 +02:00
statfs.h Mark internal statfs functions with attribute_hidden [BZ #18822] 2017-10-01 15:18:25 -07:00
statvfs.h Mark internal statfs functions with attribute_hidden [BZ #18822] 2017-10-01 15:18:25 -07:00
sysctl.h Linux: Deprecate <sys/sysctl.h> and sysctl 2019-06-12 14:32:08 +02:00
sysinfo.h Hide internal sysinfo functions [BZ #18822] 2017-10-01 15:57:21 -07:00
syslog.h Add __vsyslog_internal, with same flags as __v*printf_internal. 2018-12-05 18:15:43 -02:00
sysmacros.h Prefer https to http for gnu.org and fsf.org URLs 2019-09-07 02:43:31 -07:00
termios.h
time.h Make second argument of gettimeofday as 'void *' 2019-10-30 17:11:10 -03:00
timeb.h
times.h
ttychars.h Add missing header wrappers under include/ 2019-02-16 08:25:16 +01:00
types.h
uio.h Hide __readv and __writev [BZ #18822] 2017-10-01 15:54:10 -07:00
un.h
unistd.h
utsname.h Introduce NO_RTLD_HIDDEN, make hurd use it instead of NO_HIDDEN 2017-10-03 01:33:38 +02:00
vfs.h Add missing header wrappers under include/ 2019-02-16 08:25:16 +01:00
vlimit.h
vtimes.h
wait.h Remove union wait [BZ #19613] 2016-04-14 08:54:57 +02:00
xattr.h