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=cc72b00b8f81156cc466c4c7badf31a9eceb97f8;hpb=4bd23d4ae51bd5cb92b449bcd66e0d2de88c7fc9;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 cc72b00b..e25db034 100644 --- a/Usermode/Libraries/libc.so_src/include_exp/signal.h +++ b/Usermode/Libraries/libc.so_src/include_exp/signal.h @@ -8,13 +8,71 @@ #ifndef _SIGNAL_H_ #define _SIGNAL_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 SIGABRT 6 +#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 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 + +typedef long long unsigned int sigset_t; +extern int sigemptyset(sigset_t *set); +extern int sigfillset(sigset_t *set); + +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 -#define SIGPIPE 1001 -#define SIGCHLD 1002 +extern int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); #endif