summaryrefslogtreecommitdiffstats
path: root/mdk-stage1/dietlibc/lib/sigdelset.c
diff options
context:
space:
mode:
authorGwenolé Beauchesne <gbeauchesne@mandriva.org>2003-06-04 18:31:57 +0000
committerGwenolé Beauchesne <gbeauchesne@mandriva.org>2003-06-04 18:31:57 +0000
commit09e967c2d732783b2579e4e120cd9b608404cb00 (patch)
tree8d2783a6a7e33608c6012efd6a88b8f5694df81d /mdk-stage1/dietlibc/lib/sigdelset.c
parent18fcff49d3c836697d3b75a3d01d31c700e69974 (diff)
downloaddrakx-09e967c2d732783b2579e4e120cd9b608404cb00.tar
drakx-09e967c2d732783b2579e4e120cd9b608404cb00.tar.gz
drakx-09e967c2d732783b2579e4e120cd9b608404cb00.tar.bz2
drakx-09e967c2d732783b2579e4e120cd9b608404cb00.tar.xz
drakx-09e967c2d732783b2579e4e120cd9b608404cb00.zip
Merge from R9_0-AMD64, most notably:
- AMD64 support to insmod-busybox, minilibc, et al. - Sync with insmod-modutils 2.4.19 something but everyone should use dietlibc nowadays - Factor out compilation and prefix with $(DIET) for dietlibc builds - 64-bit & varargs fixes
Diffstat (limited to 'mdk-stage1/dietlibc/lib/sigdelset.c')
-rw-r--r--mdk-stage1/dietlibc/lib/sigdelset.c28
1 files changed, 15 insertions, 13 deletions
diff --git a/mdk-stage1/dietlibc/lib/sigdelset.c b/mdk-stage1/dietlibc/lib/sigdelset.c
index 2c3385ea8..0c47ce348 100644
--- a/mdk-stage1/dietlibc/lib/sigdelset.c
+++ b/mdk-stage1/dietlibc/lib/sigdelset.c
@@ -1,15 +1,17 @@
-#define __KERNEL__
-#define sigdelset foobar
-#include <asm/signal.h>
-#undef sigdelset
+#include <signal.h>
+#include <errno.h>
-int __sigdelset(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;
-}
+#define __sigmask(sig) ( ((unsigned long)1) << (((sig)-1) % (8*sizeof(unsigned long))) )
+#define __sigword(sig) ( ((sig)-1) / (8*sizeof(unsigned long)) )
-int sigdelset (sigset_t *env, int signo) __attribute__((weak,alias("__sigdelset")));
+int sigdelset(sigset_t *set, int signo) {
+ if ((signo<1)||(signo>SIGRTMAX)) {
+ (*__errno_location())=EINVAL;
+ return -1;
+ } else {
+ unsigned long __mask = __sigmask (signo);
+ unsigned long __word = __sigword (signo);
+ set->sig[__word]&=~__mask;
+ return 0;
+ }
+}