X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FLibraries%2Flibc.so_src%2Finclude_exp%2Fsignal.h;h=38de258cf90ec587eb532749317e829b1f52bcc4;hb=41f5d1923eac00f90097f80e51f0c1f8d1ab7cb3;hp=bf03c7f14e82a003e685332107a58c8ccf7ad14f;hpb=1409c5235c5228061ba6605fc1f41302f4f3fe78;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 bf03c7f1..38de258c 100644 --- a/Usermode/Libraries/libc.so_src/include_exp/signal.h +++ b/Usermode/Libraries/libc.so_src/include_exp/signal.h @@ -8,17 +8,60 @@ #ifndef _SIGNAL_H_ #define _SIGNAL_H_ +#ifdef __cplusplus +extern "C" { +#endif + +#include "signal_list.h" + typedef void (*sighandler_t)(int); -#define SIG_DFL ((void*)0) -#define SIG_ERR ((void*)-1) +//! Atomic integer type +typedef volatile int sig_atomic_t; -#define SIGABRT 6 +#define SIG_IGN ((sighandler_t)1) +#define SIG_DFL ((sighandler_t)0) +#define SIG_ERR ((sighandler_t)-1) -#define SIGPIPE 1001 -#define SIGCHLD 1002 +extern sighandler_t signal(int signum, sighandler_t handler); extern int raise(int sig); +#include // libposix + +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 + +extern int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact); + +#if __cplusplus +} +#endif + #endif