diff options
author | Denys Vlasenko <dvlasenk@redhat.com> | 2010-10-22 15:24:13 +0200 |
---|---|---|
committer | Denys Vlasenko <dvlasenk@redhat.com> | 2010-10-22 15:24:13 +0200 |
commit | 251a3c19cb4bba47fcd38c697b3d7679b3edb137 (patch) | |
tree | c820adadbd44dfdb4ebcba83f90c5f5bf09b7b3a | |
parent | 62fb840ea00d9d10446959d290d93a45065220f4 (diff) |
sleep: employ __USE_EXTERN_INLINES (with necessary fixes)
__USE_EXTERN_INLINES was unused and had bit-rotted, had to fix it
when it didn't work as intended at first.
text data bss dec hex filename
- 168 0 0 168 a8 libc/unistd/sleep.o
+ 146 0 0 146 92 libc/unistd/sleep.o
Signed-off-by: Denys Vlasenko <dvlasenk@redhat.com>
-rw-r--r-- | libc/signal/sigsetops.c | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/bits/sigset.h | 14 | ||||
-rw-r--r-- | libc/unistd/sleep.c | 7 |
3 files changed, 17 insertions, 6 deletions
diff --git a/libc/signal/sigsetops.c b/libc/signal/sigsetops.c index c47a87b0e..e39d32f99 100644 --- a/libc/signal/sigsetops.c +++ b/libc/signal/sigsetops.c @@ -3,7 +3,7 @@ #include <features.h> -#define _EXTERN_INLINE +#define __PROVIDE_OUT_OF_LINE_SIGSETFN #ifndef __USE_EXTERN_INLINES # define __USE_EXTERN_INLINES 1 #endif diff --git a/libc/sysdeps/linux/common/bits/sigset.h b/libc/sysdeps/linux/common/bits/sigset.h index 2f67a4ebf..7c2ce0ebe 100644 --- a/libc/sysdeps/linux/common/bits/sigset.h +++ b/libc/sysdeps/linux/common/bits/sigset.h @@ -53,10 +53,6 @@ typedef struct { #if !defined _SIGSET_H_fns && defined _SIGNAL_H # define _SIGSET_H_fns 1 -# ifndef _EXTERN_INLINE -# define _EXTERN_INLINE extern __inline -# endif - /* Return a mask that includes the bit for SIG only. */ /* Unsigned cast ensures shift/mask insns are used. */ # define __sigmask(sig) \ @@ -156,14 +152,24 @@ typedef struct { /* These functions needn't check for a bogus signal number -- error checking is done in the non __ versions. */ +# if !defined __USE_EXTERN_INLINES || defined __PROVIDE_OUT_OF_LINE_SIGSETFN extern int __sigismember (__const __sigset_t *, int); libc_hidden_proto(__sigismember) extern int __sigaddset (__sigset_t *, int); libc_hidden_proto(__sigaddset) extern int __sigdelset (__sigset_t *, int); libc_hidden_proto(__sigdelset) +# endif # ifdef __USE_EXTERN_INLINES +# undef _EXTERN_INLINE +# ifdef __PROVIDE_OUT_OF_LINE_SIGSETFN +# define _EXTERN_INLINE +# else /* normal case */ + /* dropped extern below: otherwise every module with __USE_EXTERN_INLINES + * will have its own copy of out-of line function emitted. */ +# define _EXTERN_INLINE /*extern*/ __always_inline +# endif # define __SIGSETFN(NAME, BODY, CONST) \ _EXTERN_INLINE int \ NAME (CONST __sigset_t *__set, int __sig) \ diff --git a/libc/unistd/sleep.c b/libc/unistd/sleep.c index 481e635a2..438f5e282 100644 --- a/libc/unistd/sleep.c +++ b/libc/unistd/sleep.c @@ -20,8 +20,13 @@ #include <errno.h> #include <time.h> -#include <signal.h> #include <unistd.h> +/* Want fast and small __sigemptyset/__sigaddset/__sigismember: */ +/* TODO: make them available (to everybody) without this hack */ +#ifndef __USE_EXTERN_INLINES +# define __USE_EXTERN_INLINES 1 +#endif +#include <signal.h> |