fix broken siginfo_t with _GNU_SOURCE defined
[musl] / include / signal.h
index 6e22bdf..0fdf720 100644 (file)
@@ -8,6 +8,10 @@ extern "C" {
 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
  || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
 
 #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
  || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)
 
+#ifdef _GNU_SOURCE
+#define __siginfo siginfo
+#endif
+
 #define __NEED_size_t
 #define __NEED_pid_t
 #define __NEED_uid_t
 #define __NEED_size_t
 #define __NEED_pid_t
 #define __NEED_uid_t
@@ -95,12 +99,7 @@ union sigval {
        void *sival_ptr;
 };
 
        void *sival_ptr;
 };
 
-#ifdef _GNU_SOURCE
-struct siginfo
-#else
-struct __siginfo
-#endif
-{
+struct __siginfo {
        int si_signo, si_errno, si_code;
        union {
                char __pad[128 - 3*sizeof(int)];
        int si_signo, si_errno, si_code;
        union {
                char __pad[128 - 3*sizeof(int)];
@@ -138,6 +137,8 @@ struct __siginfo
 #define si_fd      __si_fields.__sigpoll.si_fd
 #define si_timer1  __si_fields.__timer.si_timer1
 #define si_timer2  __si_fields.__timer.si_timer2
 #define si_fd      __si_fields.__sigpoll.si_fd
 #define si_timer1  __si_fields.__timer.si_timer1
 #define si_timer2  __si_fields.__timer.si_timer2
+#define si_ptr     __si_fields.__rt.si_sigval.sival_ptr
+#define si_int     __si_fields.__rt.si_sigval.sival_int
 
 struct sigevent {
        union sigval sigev_value;
 
 struct sigevent {
        union sigval sigev_value;