#ifndef _SIGNAL_H_
#define _SIGNAL_H_
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include "signal_list.h"
+
typedef void (*sighandler_t)(int);
//! Atomic integer type
typedef volatile int sig_atomic_t;
-#define SIG_IGN ((void*)1)
-#define SIG_DFL ((void*)0)
-#define SIG_ERR ((void*)-1)
-
-#define SIGINT 2 // C99
-#define SIGILL 4 // C99
-#define SIGABRT 6 // C99
-#define SIGFPE 8 // C99
-#define SIGSEGV 11 // C99
-#define SIGTERM 15 // C99
+#define SIG_IGN ((sighandler_t)1)
+#define SIG_DFL ((sighandler_t)0)
+#define SIG_ERR ((sighandler_t)-1)
extern sighandler_t signal(int signum, sighandler_t handler);
extern int raise(int sig);
-// POSIX Signals
-#define SIGHUP 1
-#define SIGQUIT 3
-#define SIGKILL 9
-#define SIGALRM 14
-#define SIGUSR1 16
-#define SIGUSR2 17
-
-#define SIGSTOP 30 // Stop process
-#define SIGTSTP 31 // ? ^Z
-#define SIGTTIN 32 // Background process read TTY
-#define SIGTTOU 33 // Background process write TTY
-#define SIGPIPE 34
-#define SIGCHLD 35
-#define SIGWINCH 36
+#include <sys/types.h> // libposix
typedef long long unsigned int sigset_t;
extern int sigemptyset(sigset_t *set);
extern int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
+#if __cplusplus
+}
+#endif
+
#endif