summaryrefslogtreecommitdiff
path: root/sysdeps/generic/sigset.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/generic/sigset.h')
-rw-r--r--sysdeps/generic/sigset.h34
1 files changed, 12 insertions, 22 deletions
diff --git a/sysdeps/generic/sigset.h b/sysdeps/generic/sigset.h
index 361d157bf5..a137d428c3 100644
--- a/sysdeps/generic/sigset.h
+++ b/sysdeps/generic/sigset.h
@@ -37,6 +37,10 @@ typedef unsigned long int __sigset_t;
#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 SIG only. The cast to `sigset_t' avoids
overflow if `sigset_t' is wider than `int'. */
#define __sigmask(sig) (((__sigset_t) 1) << ((sig) - 1))
@@ -44,38 +48,24 @@ typedef unsigned long int __sigset_t;
#define __sigemptyset(set) ((*(set) = (__sigset_t) 0), 0)
#define __sigfillset(set) ((*(set) = ~(__sigset_t) 0), 0)
-/* These functions must check for a bogus signal number. We detect it by a
- zero sigmask, since a number too low or too high will have shifted the 1
- off the high end of the mask. If we find an error, we punt to a random
- call we know fails with EINVAL (kludge city!), so as to avoid referring
- to `errno' in this file (sigh). */
+/* These functions needn't check for a bogus signal number -- error
+ checking is done in the non __ versions. */
extern int __sigismember (__const __sigset_t *, int);
extern int __sigaddset (__sigset_t *, int);
extern int __sigdelset (__sigset_t *, int);
-#ifndef _EXTERN_INLINE
-#define _EXTERN_INLINE extern __inline
-#endif
#define __SIGSETFN(NAME, BODY, CONST) \
_EXTERN_INLINE int \
- __##NAME (CONST __sigset_t *__set, int __sig) \
+ NAME (CONST __sigset_t *__set, int __sig) \
{ \
- if (__sig < 1 || __sig > (int) sizeof (__sigset_t) * 8) \
- { \
- extern int raise (int); \
- return raise (-1); \
- } \
- else \
- { \
- __sigset_t __mask = __sigmask (__sig); \
- return BODY; \
- } \
+ __sigset_t __mask = __sigmask (__sig); \
+ return BODY; \
}
-__SIGSETFN (sigismember, (*__set & __mask) ? 1 : 0, __const)
-__SIGSETFN (sigaddset, ((*__set |= __mask), 0), )
-__SIGSETFN (sigdelset, ((*__set &= ~__mask), 0), )
+__SIGSETFN (__sigismember, (*__set & __mask) ? 1 : 0, __const)
+__SIGSETFN (__sigaddset, ((*__set |= __mask), 0), )
+__SIGSETFN (__sigdelset, ((*__set &= ~__mask), 0), )
#undef __SIGSETFN