[PATCH 3/3] platform: fix missing sigisemptyset

Denys Vlasenko vda.linux at googlemail.com
Thu Nov 28 02:19:03 UTC 2013


On Thursday 28 November 2013 02:01, Rich Felker wrote:
> > I would say it's better to open-code a conditional replacement everywhere
> > sigisemptyset is used (total of two callsites): usually, the caller expects
> > not-braindead looping implementation.
> 
> At least in hush, the problem is that busybox is using sigset_t not as
> part of an interface to the standard library functions that use it,
> but to store its own internal representation of which signals it's
> seen, then stuck with the fact that the standard sigset_t API (which
> lacks sigisemptyset) can't efficiently provide it the information it
> wants. Of course this may still be a reasonable trade-off since
> reusing the sigset_t API is size-efficient and the code is probably
> not performance-critical.

hush can set a flag variable:

static void record_pending_signo(int sig)
{
        sigaddset(&G.pending_set, sig);
+	G.pending_set_is_not_empty = 1;

and check it instead of sigisemptyset(&G.pending_set)


More information about the busybox mailing list