diff options
-rw-r--r-- | bits/sigaction.h | 20 | ||||
-rw-r--r-- | sysdeps/generic/bits/sigaction.h | 20 |
2 files changed, 28 insertions, 12 deletions
diff --git a/bits/sigaction.h b/bits/sigaction.h index e23a96cd9d..adcc276cc8 100644 --- a/bits/sigaction.h +++ b/bits/sigaction.h @@ -30,12 +30,20 @@ struct sigaction { /* Signal handler. */ - union { - __sighandler_t sa_handler; - void (*sa_sigaction) (int, siginfo_t *, void *); - } __sigaction_handler; -# define sa_handler __sigaction_handler.sa_handler -# define sa_sigaction __sigaction_handler.sa_sigaction +#ifdef __USE_POSIX199309 + union + { + /* Used if SA_SIGINFO is not set. */ + __sighandler_t sa_handler; + /* Used if SA_SIGINFO is set. */ + void (*sa_sigaction) (int, siginfo_t *, void *); + } + __sigaction_handler; +# define sa_handler __sigaction_handler.sa_handler +# define sa_sigaction __sigaction_handler.sa_sigaction +#else + __sighandler_t sa_handler; +#endif /* Additional set of signals to be blocked. */ __sigset_t sa_mask; diff --git a/sysdeps/generic/bits/sigaction.h b/sysdeps/generic/bits/sigaction.h index e23a96cd9d..adcc276cc8 100644 --- a/sysdeps/generic/bits/sigaction.h +++ b/sysdeps/generic/bits/sigaction.h @@ -30,12 +30,20 @@ struct sigaction { /* Signal handler. */ - union { - __sighandler_t sa_handler; - void (*sa_sigaction) (int, siginfo_t *, void *); - } __sigaction_handler; -# define sa_handler __sigaction_handler.sa_handler -# define sa_sigaction __sigaction_handler.sa_sigaction +#ifdef __USE_POSIX199309 + union + { + /* Used if SA_SIGINFO is not set. */ + __sighandler_t sa_handler; + /* Used if SA_SIGINFO is set. */ + void (*sa_sigaction) (int, siginfo_t *, void *); + } + __sigaction_handler; +# define sa_handler __sigaction_handler.sa_handler +# define sa_sigaction __sigaction_handler.sa_sigaction +#else + __sighandler_t sa_handler; +#endif /* Additional set of signals to be blocked. */ __sigset_t sa_mask; |