[PATCH] pselect: Use linux pselect syscall when available

Nic Dade nic.dade at gmail.com
Sat Dec 19 19:34:22 UTC 2015


> v3

Sure. Next time.

> if ... expansion space

Well uclibc does not do that. It defines sigset_t to match the kernel, and
even has a comment about that.

/* A 'sigset_t' has a bit for each signal.
 * glibc has space for 1024 signals (!), but most arches supported
 * by Linux have 64 signals, and only MIPS has 128.
 * There seems to be some historical baggage in sparc[64]
 * where they might have (or had in the past) 32 signals only,
 * I hope it's irrelevant now.
 * Signal 0 does not exist, so we have signals 1..64, not 0..63.
 * In uclibc, kernel and userspace sigset_t is always the same.
 * BTW, struct sigaction is also the same on kernel and userspace side.
 */
#if defined(__mips__)
# define _SIGSET_NWORDS (128 / (8 * sizeof (unsigned long)))
#else
# define _SIGSET_NWORDS (64 / (8 * sizeof (unsigned long)))
#endif
typedef struct {
    unsigned long __val[_SIGSET_NWORDS];
} __sigset_t;


The patched uclibc pselect works properly on ARM (32-bit), both in behavior
and watching the operation in strace. ARM is the only uclibc target to
which I have easy access.

-Nicolas Dade

On Sat, Dec 19, 2015 at 12:58 AM, Waldemar Brodkorb <wbx at openadk.org> wrote:

> Hi Nicolas,
> Nicolas S. Dade wrote,
>
> > This supercedes the previous pselect patch from 16 Dec 2015.
>
> Can you resend next time with PATCH v3 in the subject and
> a short Changelog after the comment ---. Thanks.
>
> What you think about Rich comment?
>
> best regards
>  Waldemar
>


More information about the uClibc mailing list