X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibc.so_src%2Finclude_exp%2Fsignal.h;h=e25db034e4306614462e6cf5845348a864c78931;hb=b99e0f9bd0dfcf6f1b3d33534ea78f8fb33be92a;hp=da6d78fd4895e82048330e524b9d51476cd8d977;hpb=b806b8f55067584cb90fe20277235369a1111c66;p=tpg%2Facess2.git diff --git a/Usermode/Libraries/libc.so_src/include_exp/signal.h b/Usermode/Libraries/libc.so_src/include_exp/signal.h index da6d78fd..e25db034 100644 --- a/Usermode/Libraries/libc.so_src/include_exp/signal.h +++ b/Usermode/Libraries/libc.so_src/include_exp/signal.h @@ -10,29 +10,69 @@ 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 + +extern sighandler_t signal(int signum, sighandler_t handler); + +extern int raise(int sig); + +// POSIX Signals #define SIGHUP 1 -#define SIGINT 2 #define SIGQUIT 3 -#define SIGILL 4 -#define SIGABRT 6 -#define SIGFPE 8 #define SIGKILL 9 -#define SIGSEGV 11 -//#define SIGPIPE 13 #define SIGALRM 14 -#define SIGTERM 15 #define SIGUSR1 16 #define SIGUSR2 17 -#define SIGPIPE 1001 -#define SIGCHLD 1002 +#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 -extern sighandler_t signal(int signum, sighandler_t handler); +typedef long long unsigned int sigset_t; +extern int sigemptyset(sigset_t *set); +extern int sigfillset(sigset_t *set); -extern int raise(int sig); +typedef struct siginfo_s siginfo_t; + +struct siginfo_s +{ + int si_signo; + int si_errno; + int si_code; + int si_trapno; + pid_t si_pid; + uid_t si_uid; + int si_status; + // TODO: There's others +}; + +struct sigaction +{ + sighandler_t sa_handler; + //void (*sa_sigaction)(int, siginfo_t *, void *); + sigset_t sa_mask; + int sa_flags; +}; + +#define SA_NOCLDSTOP 0x001 + +extern int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); #endif