<signal.h>: Sanitize the feature tests.
authorSascha Wildner <saw@online.de>
Thu, 1 Jan 2015 19:58:42 +0000 (20:58 +0100)
committerSascha Wildner <saw@online.de>
Fri, 2 Jan 2015 13:13:11 +0000 (14:13 +0100)
* Generally, in our headers, we don't check the (user-settable)
  _POSIX_SOURCE and _ANSI_SOURCE, but instead __XSI_VISIBLE,
  __POSIX_VISIBLE and __BSD_VISIBLE, which are set by <sys/cdefs.h>
  based on what the user chose. Do the same in the CPU specific
  signal headers.

* psignal() is now a standard function (per 200809).

* Add missing __restrict qualifiers.

include/signal.h
sys/cpu/i386/include/signal.h
sys/cpu/x86_64/include/signal.h

index 51c6c4b..ab76955 100644 (file)
 #include <sys/signal.h>
 #include <sys/time.h>
 
-#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
-extern __const char *__const sys_signame[NSIG];
-extern __const char *__const sys_siglist[NSIG];
-extern __const int sys_nsig;
+#if __BSD_VISIBLE
+extern const char * const sys_signame[NSIG];
+extern const char * const sys_siglist[NSIG];
+extern const int sys_nsig;
 #endif
 
 __BEGIN_DECLS
-int    raise (int);
-#ifndef        _ANSI_SOURCE
-int    kill (__pid_t, int);
-int    pthread_kill (pthread_t, int);
-int    pthread_sigmask (int, const sigset_t * __restrict,
-           sigset_t * __restrict);
-int    sigaction (int, const struct sigaction *, struct sigaction *);
-int    sigaddset (sigset_t *, int);
-int    sigdelset (sigset_t *, int);
-int    sigemptyset (sigset_t *);
-int    sigfillset (sigset_t *);
-int    sigismember (const sigset_t *, int);
-int    sigpending (sigset_t *);
-int    sigprocmask (int, const sigset_t *, sigset_t *);
-int    sigsuspend (const sigset_t *);
-int    sigwait (const sigset_t *, int *);
+int    raise(int);
 
+#if __POSIX_VISIBLE
+int    kill(__pid_t, int);
+int    pthread_kill(pthread_t, int);
+int    pthread_sigmask(int, const sigset_t * __restrict,
+           sigset_t * __restrict);
+int    sigaction(int, const struct sigaction * __restrict,
+           struct sigaction * __restrict);
+int    sigaddset(sigset_t *, int);
+int    sigdelset(sigset_t *, int);
+int    sigemptyset(sigset_t *);
+int    sigfillset(sigset_t *);
+int    sigismember(const sigset_t *, int);
+int    sigpending(sigset_t *);
+int    sigprocmask(int, const sigset_t * __restrict, sigset_t * __restrict);
+int    sigsuspend(const sigset_t *);
+int    sigwait(const sigset_t * __restrict, int * __restrict);
+#endif /* __POSIX_VISIBLE */
 
-#ifdef _P1003_1B_VISIBLE
+#if __XSI_VISIBLE
+int    killpg(__pid_t, int);
+int    sigaltstack(const stack_t * __restrict, stack_t * __restrict);
+int    siginterrupt(int, int);
+int    sigpause(int);
+#if __BSD_VISIBLE || __XSI_VISIBLE <= 500
+int    sigstack(const struct sigstack *, struct sigstack *);
+#endif
+#endif /* __XSI_VISIBLE */
 
-__BEGIN_DECLS
-int sigqueue (__pid_t, int, const union sigval);
-int sigtimedwait (const sigset_t *, siginfo_t *, const struct timespec *);
-int sigwaitinfo (const sigset_t *, siginfo_t *);
-__END_DECLS
+#if __POSIX_VISIBLE >= 199506
+int    sigqueue(__pid_t, int, const union sigval);
+int    sigtimedwait(const sigset_t * __restrict, siginfo_t * __restrict,
+           const struct timespec * __restrict);
+int    sigwaitinfo(const sigset_t * __restrict, siginfo_t * __restrict);
+#endif
 
+#if __POSIX_VISIBLE >= 200809
+void   psignal(unsigned int, const char *); /* XXX signum should be int */
 #endif
-#ifndef _POSIX_SOURCE
-int    killpg (__pid_t, int);
-int    lwp_kill (__pid_t, lwpid_t, int);
-int    sigaltstack (const stack_t *, stack_t *); 
-int    sigblock (int);
-int    siginterrupt (int, int);
-int    sigpause (int);
-int    sigreturn (ucontext_t *);
-int    sigsetmask (int);
-int    sigstack (const struct sigstack *, struct sigstack *);
-int    sigvec (int, struct sigvec *, struct sigvec *);
-void   psignal (unsigned int, const char *);
-#endif /* !_POSIX_SOURCE */
-#endif /* !_ANSI_SOURCE */
+
+#if __BSD_VISIBLE
+int    lwp_kill(__pid_t, lwpid_t, int);
+int    sigblock(int);
+int    sigreturn(ucontext_t *);
+int    sigsetmask(int);
+int    sigvec(int, struct sigvec *, struct sigvec *);
+#endif /* __BSD_VISIBLE */
 __END_DECLS
 
 #endif /* !_SIGNAL_H_ */
index 2d4a8b7..7f89629 100644 (file)
@@ -43,7 +43,7 @@
 
 typedef int sig_atomic_t;
 
-#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
+#if __BSD_VISIBLE
 
 /*
  * XXX temporarily use a <machine/bla.h> path instead of "bla.h" so the
@@ -110,6 +110,6 @@ struct      sigcontext {
 #define        sc_ps           sc_efl
 #define        sc_eflags       sc_efl
 
-#endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */
+#endif /* __BSD_VISIBLE */
 
 #endif /* !_CPU_SIGNAL_H_ */
index 2b43e38..3ae0849 100644 (file)
@@ -45,7 +45,7 @@
 
 typedef int sig_atomic_t;
 
-#if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
+#if __BSD_VISIBLE
 
 #include <machine/trap.h>      /* codes for SIGILL, SIGFPE */
 
@@ -99,6 +99,6 @@ struct        sigcontext {
        int             sc_fpregs[256]; /* 1024 bytes */
 } __attribute__((aligned(64)));
 
-#endif /* !_ANSI_SOURCE && !_POSIX_SOURCE */
+#endif /* __BSD_VISIBLE */
 
 #endif /* !_CPU_SIGNAL_H_ */