+struct __siginfo {
+ int si_signo, si_errno, si_code;
+ union {
+ char __pad[128 - 3*sizeof(int)];
+ struct {
+ pid_t si_pid;
+ uid_t si_uid;
+ union sigval si_sigval;
+ } __rt;
+ struct {
+ unsigned int si_timer1, si_timer2;
+ } __timer;
+ struct {
+ pid_t si_pid;
+ uid_t si_uid;
+ int si_status;
+ clock_t si_utime, si_stime;
+ } __sigchld;
+ struct {
+ void *si_addr;
+ } __sigfault;
+ struct {
+ long si_band;
+ int si_fd;
+ } __sigpoll;
+ } __si_fields;
+};
+#define si_pid __si_fields.__sigchld.si_pid
+#define si_uid __si_fields.__sigchld.si_uid
+#define si_status __si_fields.__sigchld.si_status
+#define si_utime __si_fields.__sigchld.si_utime
+#define si_stime __si_fields.__sigchld.si_stime
+#define si_value __si_fields.__rt.si_sigval
+#define si_addr __si_fields.__sigfault.si_addr
+#define si_band __si_fields.__sigpoll.si_band
+#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;
+ int sigev_signo;
+ int sigev_notify;
+ void (*sigev_notify_function)(union sigval);
+ pthread_attr_t *sigev_notify_attributes;
+ char __pad[56-3*sizeof(long)];
+};
+
+#define SIGEV_SIGNAL 0
+#define SIGEV_NONE 1
+#define SIGEV_THREAD 2
+