#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_struct_timespec
#define __NEED_pthread_t
+#define __NEED_pthread_attr_t
#define __NEED_time_t
#define __NEED_clock_t
#define __NEED_sigset_t
#include <bits/alltypes.h>
-struct sigaction
-{
+struct sigaction {
union {
void (*sa_handler)(int);
void (*sa_sigaction)(int, siginfo_t *, void *);
#define sa_handler __sa_handler.sa_handler
#define sa_sigaction __sa_handler.sa_sigaction
-typedef struct
-{
+typedef struct {
void *ss_sp;
int ss_flags;
size_t ss_size;
} stack_t;
-union sigval
-{
+union sigval {
int sival_int;
void *sival_ptr;
};
+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
+
int __libc_current_sigrtmin(void);
int __libc_current_sigrtmax(void);
#endif
#ifdef _GNU_SOURCE
-typedef int (*sighandler_t)(int);
+typedef void (*sighandler_t)(int);
void (*bsd_signal(int, void (*)(int)))(int);
-#define __siginfo siginfo
+#define SA_NOMASK SA_NODEFER
#endif
#include <bits/signal.h>