diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-01 15:31:22 +0000 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2008-12-01 15:31:22 +0000 |
commit | 0e4d4dd89170d47a662f1cd0de1b4f3a5dbc1f2d (patch) | |
tree | 324429d9476664c8dff6d315daaf98b4a011c48d /libc/signal | |
parent | 4298bd6e30f8841250f4912fdbda7a4a2230b561 (diff) |
optimize signal mask ops. comment out "impossible" errors
text data bss dec hex filename
- 1179 13 2 1194 4aa libc/misc/syslog/syslog.o
+ 1165 13 2 1180 49c libc/misc/syslog/syslog.o
- 435 4 0 439 1b7 libc/pwd_grp/lckpwdf.o
+ 393 4 0 397 18d libc/pwd_grp/lckpwdf.o
- 38 0 0 38 26 libc/signal/sigandset.o
+ 32 0 0 32 20 libc/signal/sigandset.o
- 63 0 0 63 3f libc/signal/sigblock.o
+ 56 0 0 56 38 libc/signal/sigblock.o
- 22 0 0 22 16 libc/signal/sigempty.o
+ 20 0 0 20 14 libc/signal/sigempty.o
- 25 0 0 25 19 libc/signal/sigfillset.o
+ 20 0 0 20 14 libc/signal/sigfillset.o
- 34 0 0 34 22 libc/signal/sigisempty.o
+ 16 0 0 16 10 libc/signal/sigisempty.o
- 38 0 0 38 26 libc/signal/sigorset.o
+ 32 0 0 32 20 libc/signal/sigorset.o
- 119 0 0 119 77 libc/signal/sigpause.o
+ 113 0 0 113 71 libc/signal/sigpause.o
- 215 0 0 215 d7 libc/signal/sigset.o
+ 211 0 0 211 d3 libc/signal/sigset.o
- 63 0 0 63 3f libc/signal/sigsetmask.o
+ 56 0 0 56 38 libc/signal/sigsetmask.o
- 194 0 1 195 c3 libc/stdlib/abort.o
+ 183 0 1 184 b8 libc/stdlib/abort.o
- 323 0 0 323 143 libc/unistd/sleep.o
+ 309 0 0 309 135 libc/unistd/sleep.o
Diffstat (limited to 'libc/signal')
-rw-r--r-- | libc/signal/sigempty.c | 4 | ||||
-rw-r--r-- | libc/signal/sigfillset.c | 4 | ||||
-rw-r--r-- | libc/signal/sigset-cvt-mask.h | 4 | ||||
-rw-r--r-- | libc/signal/sigwait.c | 4 |
4 files changed, 11 insertions, 5 deletions
diff --git a/libc/signal/sigempty.c b/libc/signal/sigempty.c index 96260fb92..56b62bc65 100644 --- a/libc/signal/sigempty.c +++ b/libc/signal/sigempty.c @@ -26,13 +26,15 @@ /* libc_hidden_proto(sigemptyset) */ int sigemptyset (sigset_t *set) { +#if 0 /* is it really required by standards?! */ if (set == NULL) { __set_errno (EINVAL); return -1; } +#endif - memset (set, 0, sizeof (sigset_t)); + __sigemptyset (set); return 0; } diff --git a/libc/signal/sigfillset.c b/libc/signal/sigfillset.c index 2f8fb8138..b0b093032 100644 --- a/libc/signal/sigfillset.c +++ b/libc/signal/sigfillset.c @@ -27,13 +27,15 @@ int sigfillset (sigset_t *set) { +#if 0 /* is it really required by standards?! */ if (set == NULL) { __set_errno (EINVAL); return -1; } +#endif - memset (set, 0xff, sizeof (sigset_t)); + __sigfillset (set); /* If the implementation uses a cancellation signal don't set the bit. */ #ifdef SIGCANCEL diff --git a/libc/signal/sigset-cvt-mask.h b/libc/signal/sigset-cvt-mask.h index 83be40a51..76dd01c7e 100644 --- a/libc/signal/sigset-cvt-mask.h +++ b/libc/signal/sigset-cvt-mask.h @@ -22,7 +22,9 @@ static __inline__ void __attribute__ ((unused)) sigset_set_old_mask (sigset_t *set, int mask) { - if (_SIGSET_NWORDS > 1) + if (_SIGSET_NWORDS == 2) /* typical */ + set->__val[1] = 0; + if (_SIGSET_NWORDS > 2) memset(set, 0, sizeof(*set)); set->__val[0] = (unsigned int) mask; } diff --git a/libc/signal/sigwait.c b/libc/signal/sigwait.c index 9b2c32079..64a889f7b 100644 --- a/libc/signal/sigwait.c +++ b/libc/signal/sigwait.c @@ -56,12 +56,12 @@ int __sigwait (const sigset_t *set, int *sig) int this; /* Prepare set. */ - sigfillset (&tmp_mask); + __sigfillset (&tmp_mask); /* Unblock all signals in the SET and register our nice handler. */ action.sa_handler = ignore_signal; action.sa_flags = 0; - sigfillset (&action.sa_mask); /* Block all signals for handler. */ + __sigfillset (&action.sa_mask); /* Block all signals for handler. */ /* Make sure we recognize error conditions by setting WAS_SIG to a value which does not describe a legal signal number. */ |