1#include <signal.h> 2#define T(t) (t*)0; 3#define F(t,n) {t *y = &x.n;} 4#define C(n) switch(n){case n:;} 5static void f() 6{ 7T(sig_atomic_t) 8{void(*x)(int) = SIG_DFL;} 9{void(*x)(int) = SIG_ERR;} 10{void(*x)(int) = SIG_IGN;} 11#ifdef _POSIX_C_SOURCE 12{void(*x)(int) = SIG_HOLD;} 13T(size_t) 14T(sigset_t) 15T(pid_t) 16T(uid_t) 17T(pthread_t) 18T(pthread_attr_t) 19T(struct timespec) 20{ 21struct sigevent x; 22F(int,sigev_notify) 23F(int,sigev_signo) 24F(union sigval,sigev_value) 25{void (**y)(union sigval) = &x.sigev_notify_function;} 26F(pthread_attr_t*,sigev_notify_attributes) 27} 28C(SIGEV_NONE) 29C(SIGEV_SIGNAL) 30C(SIGEV_THREAD) 31{ 32union sigval x; 33F(int,sival_int) 34F(void*,sival_ptr) 35} 36{int i = SIGRTMIN;} 37{int i = SIGRTMAX;} 38#endif 39C(SIGABRT) 40C(SIGFPE) 41C(SIGILL) 42C(SIGINT) 43C(SIGSEGV) 44C(SIGTERM) 45#ifdef _POSIX_C_SOURCE 46C(SIGALRM) 47C(SIGBUS) 48C(SIGCHLD) 49C(SIGCONT) 50C(SIGHUP) 51C(SIGKILL) 52C(SIGPIPE) 53C(SIGQUIT) 54C(SIGSTOP) 55C(SIGTSTP) 56C(SIGTTIN) 57C(SIGTTOU) 58C(SIGUSR1) 59C(SIGUSR2) 60C(SIGURG) 61#ifdef _XOPEN_SOURCE 62C(SIGSYS) 63C(SIGTRAP) 64C(SIGVTALRM) 65C(SIGXCPU) 66C(SIGXFSZ) 67#endif 68{ 69struct sigaction x; 70{void (**y)(int) = &x.sa_handler;} 71F(sigset_t, sa_mask) 72F(int,sa_flags) 73{void (**y)(int, siginfo_t *, void *) = &x.sa_sigaction;} 74} 75C(SIG_BLOCK) 76C(SIG_UNBLOCK) 77C(SIG_SETMASK) 78C(SA_NOCLDSTOP) 79C(SA_RESETHAND) 80C(SA_RESTART) 81C(SA_SIGINFO) 82C(SA_NOCLDWAIT) 83C(SA_NODEFER) 84#ifdef _XOPEN_SOURCE 85C(SA_ONSTACK) 86C(SS_ONSTACK) 87C(SS_DISABLE) 88C(MINSIGSTKSZ) 89C(SIGSTKSZ) 90#endif 91T(mcontext_t) 92{ 93ucontext_t x; 94F(ucontext_t*,uc_link) 95F(sigset_t,uc_sigmask) 96F(stack_t, uc_stack) 97F(mcontext_t,uc_mcontext) 98} 99{ 100stack_t x; 101F(void *,ss_sp) 102F(size_t,ss_size) 103F(int, ss_flags) 104} 105{ 106siginfo_t x; 107F(int, si_signo) 108F(int, si_code) 109#ifdef _XOPEN_SOURCE 110F(int, si_errno) 111#endif 112F(pid_t, si_pid) 113F(uid_t, si_uid) 114F(void *,si_addr) 115F(int, si_status) 116F(union sigval,si_value) 117} 118C(ILL_ILLOPC) 119C(ILL_ILLOPN) 120C(ILL_ILLADR) 121C(ILL_ILLTRP) 122C(ILL_PRVOPC) 123C(ILL_PRVREG) 124C(ILL_COPROC) 125C(ILL_BADSTK) 126C(FPE_INTDIV) 127C(FPE_INTOVF) 128C(FPE_FLTDIV) 129C(FPE_FLTOVF) 130C(FPE_FLTUND) 131C(FPE_FLTRES) 132C(FPE_FLTINV) 133C(FPE_FLTSUB) 134C(SEGV_MAPERR) 135C(SEGV_ACCERR) 136C(BUS_ADRALN) 137C(BUS_ADRERR) 138C(BUS_OBJERR) 139#ifdef _XOPEN_SOURCE 140C(TRAP_BRKPT) 141C(TRAP_TRACE) 142#endif 143C(CLD_EXITED) 144C(CLD_KILLED) 145C(CLD_DUMPED) 146C(CLD_TRAPPED) 147C(CLD_STOPPED) 148C(CLD_CONTINUED) 149C(SI_USER) 150C(SI_QUEUE) 151C(SI_TIMER) 152C(SI_ASYNCIO) 153C(SI_MESGQ) 154{int(*p)(pid_t,int) = kill;} 155{int(*p)(pid_t,int) = killpg;} 156{void(*p)(const siginfo_t*,const char*) = psiginfo;} 157{void(*p)(int,const char*) = psignal;} 158{int(*p)(pthread_t,int) = pthread_kill;} 159{int(*p)(int,const sigset_t*restrict,sigset_t*restrict) = pthread_sigmask;} 160{int(*p)(int,const struct sigaction*restrict,struct sigaction*restrict) = sigaction;} 161{int(*p)(sigset_t*,int) = sigaddset;} 162{int(*p)(const stack_t*restrict,stack_t*restrict) = sigaltstack;} 163{int(*p)(sigset_t*,int) = sigdelset;} 164{int(*p)(sigset_t*) = sigemptyset;} 165{int(*p)(sigset_t*) = sigfillset;} 166{int(*p)(int) = sighold;} 167{int(*p)(int) = sigignore;} 168{int(*p)(int,int) = siginterrupt;} 169{int(*p)(const sigset_t*,int) = sigismember;} 170{int(*p)(int) = sigpause;} 171{int(*p)(sigset_t*) = sigpending;} 172{int(*p)(int,const sigset_t*restrict,sigset_t*restrict) = sigprocmask;} 173{int(*p)(pid_t,int,const union sigval) = sigqueue;} 174{int(*p)(int) = sigrelse;} 175{void(*(*p)(int,void(*)(int)))(int) = sigset;} 176{int(*p)(const sigset_t*) = sigsuspend;} 177{int(*p)(const sigset_t*restrict,siginfo_t*restrict,const struct timespec*restrict) = sigtimedwait;} 178{int(*p)(const sigset_t*restrict,int*restrict) = sigwait;} 179{int(*p)(const sigset_t*restrict,siginfo_t*restrict) = sigwaitinfo;} 180#endif 181{int(*p)(int) = raise;} 182{void(*(*p)(int,void(*)(int)))(int) = signal;} 183} 184