diff options
| -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>  | 
