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.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/lib/sigaddset.c b/mdk-stage1/dietlibc/lib/sigaddset.c
new file mode 100644
index 000000000..0c9d95c28
--- /dev/null
+++ b/mdk-stage1/dietlibc/lib/sigaddset.c
@@ -0,0 +1,21 @@
+#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);
+}
+
+int sigaddset (sigset_t *env, int signo) __attribute__((weak,alias("__sigaddset")));