summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/sigaddset.c
diff options
context:
space:
mode:
Diffstat (limited to 'mdk-stage1/dietlibc/lib/sigaddset.c')
-rw-r--r--mdk-stage1/dietlibc/lib/sigaddset.c30
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")));