diff options
Diffstat (limited to 'mdk-stage1/dietlibc/lib/sigaddset.c')
-rw-r--r-- | mdk-stage1/dietlibc/lib/sigaddset.c | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/mdk-stage1/dietlibc/lib/sigaddset.c b/mdk-stage1/dietlibc/lib/sigaddset.c index 0c9d95c28..8ce69ea77 100644 --- a/mdk-stage1/dietlibc/lib/sigaddset.c +++ b/mdk-stage1/dietlibc/lib/sigaddset.c @@ -1,21 +1,15 @@ -#define __USE_EXTERN_INLINES 1 -#include <signal.h> - -# define __sigmask(sig) \ - (((unsigned long int) 1) << (((sig) - 1) % (8 * sizeof (unsigned long int)))) - -# define __sigword(sig) (((sig) - 1) / (8 * sizeof (unsigned long int))) - -# define _SIGSET_NWORDS (1024 / (8 * sizeof (unsigned long int))) -typedef struct - { - unsigned long int __val[_SIGSET_NWORDS]; - } __sigset_t; - -int __sigaddset(__sigset_t *set, int signo) { - unsigned long int __mask = __sigmask (signo); - unsigned long int __word = __sigword (signo); - return ((set->__val[__word] |= __mask), 0); +#define __KERNEL__ +#define sigaddset foobar +#include <asm/signal.h> +#undef sigaddset + +int __sigaddset(sigset_t *set, int signo) { + unsigned long sig = signo - 1; + if (_NSIG_WORDS == 1) + set->sig[0] |= 1UL << sig; + else + set->sig[sig / _NSIG_BPW] |= 1UL << (sig % _NSIG_BPW); + return 0; } int sigaddset (sigset_t *env, int signo) __attribute__((weak,alias("__sigaddset"))); |