diff options
author | Leonid Lisovskiy <lly.dev@gmail.com> | 2015-12-27 20:46:49 +0300 |
---|---|---|
committer | Waldemar Brodkorb <wbx@uclibc-ng.org> | 2016-01-01 19:48:17 +0100 |
commit | d1b1ccb72f4dee5728f0878054709721b1163f62 (patch) | |
tree | 862e6231c4472e83b911d6794f11ee6b4e84efe7 /libpthread/linuxthreads/forward.c | |
parent | a65637cc30455841909b2676599589b702bd654e (diff) |
Fix "pselect: Use linux pselect6 syscall when available"
Commit e3c3bf2b58 introduce use of pselect6, but has following disadvantages:
* Use of userspace types in args67 structure - it breaks, for example,
configs when 32-bit uClibc-ng compiled against 64-bit kernel. Syscall
will always return EINVAL. We must use __kernel_* types and
__SYSCALL_SIGSET_T_SIZE.
* It have excess checks for NSEC_PER_SEC. Original code from select()
implementation has struct timeval => struct timespec conversion,
kernel select() syscall implementation do the same.
But none of libc versions (glibc, eglibc, musl) I know, perform similar
checks for pselect() - there is no structure fields conversions,
just struct timespec through all the calls.
To have such checks in uClibc-ng we need one example, at least.
* It is possible to avoid extra userspace reads from kernel code if
sigmask == NULL. I suggest to do it, for a few bytes cost.
* Commit didn't add test case to testsuite.
Signed-off-by: Leonid Lisovskiy <lly.dev@gmail.com>
Diffstat (limited to 'libpthread/linuxthreads/forward.c')
0 files changed, 0 insertions, 0 deletions