X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=include%2Fsignal.h;h=0fdf720c6f387c4093c9fc648fa7c8c3908f28a7;hp=6116fb430178a5d3affef1a980f58230689308f2;hb=03a8362930c3c4fe49ee6b9cb2ba9f28153b15d3;hpb=80c4dcd2535a2d7f01eb539b0358dc51b0c0e122 diff --git a/include/signal.h b/include/signal.h index 6116fb43..0fdf720c 100644 --- a/include/signal.h +++ b/include/signal.h @@ -25,6 +25,57 @@ extern "C" { #include +#define SIG_BLOCK 0 +#define SIG_UNBLOCK 1 +#define SIG_SETMASK 2 + +#define SIG_ERR ((void (*)(int))-1) +#define SIG_DFL ((void (*)(int)) 0) +#define SIG_IGN ((void (*)(int)) 1) +#define SIG_HOLD ((void (*)(int)) 2) + +#define SI_ASYNCNL (-60) +#define SI_TKILL (-6) +#define SI_SIGIO (-5) +#define SI_ASYNCIO (-4) +#define SI_MESGQ (-3) +#define SI_TIMER (-2) +#define SI_QUEUE (-1) +#define SI_USER 0 +#define SI_KERNEL 128 + +#define FPE_INTDIV 1 +#define FPE_INTOVF 2 +#define FPE_FLTDIV 3 +#define FPE_FLTOVF 4 +#define FPE_FLTUNT 5 +#define FPE_FLTRES 6 +#define FPE_FLTINV 7 +#define FPE_FLTSUB 8 + +#define ILL_ILLOPC 1 +#define ILL_ILLOPN 2 +#define ILL_ILLADR 3 +#define ILL_ILLTRP 4 +#define ILL_PRVOPC 5 +#define ILL_PRVREG 6 +#define ILL_COPROC 7 +#define ILL_BADSTK 8 + +#define SEGV_MAPERR 1 +#define SEGV_ACCERR 2 + +#define BUS_ADRALN 1 +#define BUS_ADRERR 2 +#define BUS_OBJERR 3 + +#define CLD_EXITED 1 +#define CLD_KILLED 2 +#define CLD_DUMPED 3 +#define CLD_TRAPPED 4 +#define CLD_STOPPED 5 +#define CLD_CONTINUED 6 + struct sigaction { union { void (*sa_handler)(int); @@ -48,12 +99,54 @@ union sigval { void *sival_ptr; }; +struct __siginfo { + int si_signo, si_errno, si_code; + union { + char __pad[128 - 3*sizeof(int)]; + struct { + pid_t si_pid; + uid_t si_uid; + union sigval si_sigval; + } __rt; + struct { + unsigned int si_timer1, si_timer2; + } __timer; + struct { + pid_t si_pid; + uid_t si_uid; + int si_status; + clock_t si_utime, si_stime; + } __sigchld; + struct { + void *si_addr; + } __sigfault; + struct { + long si_band; + int si_fd; + } __sigpoll; + } __si_fields; +}; +#define si_pid __si_fields.__sigchld.si_pid +#define si_uid __si_fields.__sigchld.si_uid +#define si_status __si_fields.__sigchld.si_status +#define si_utime __si_fields.__sigchld.si_utime +#define si_stime __si_fields.__sigchld.si_stime +#define si_value __si_fields.__rt.si_sigval +#define si_addr __si_fields.__sigfault.si_addr +#define si_band __si_fields.__sigpoll.si_band +#define si_fd __si_fields.__sigpoll.si_fd +#define si_timer1 __si_fields.__timer.si_timer1 +#define si_timer2 __si_fields.__timer.si_timer2 +#define si_ptr __si_fields.__rt.si_sigval.sival_ptr +#define si_int __si_fields.__rt.si_sigval.sival_int + struct sigevent { union sigval sigev_value; int sigev_signo; int sigev_notify; void (*sigev_notify_function)(union sigval); pthread_attr_t *sigev_notify_attributes; + char __pad[56-3*sizeof(long)]; }; #define SIGEV_SIGNAL 0 @@ -86,6 +179,9 @@ int sigqueue(pid_t, int, const union sigval); int pthread_sigmask(int, const sigset_t *, sigset_t *); int pthread_kill(pthread_t, int); +void psiginfo(const siginfo_t *, const char *); +void psignal(int, const char *); + #endif #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) @@ -97,11 +193,26 @@ int siginterrupt(int, int); int sigpause(int); int sigrelse(int); void (*sigset(int, void (*)(int)))(int); +#define TRAP_BRKPT 1 +#define TRAP_TRACE 2 +#define POLL_IN 1 +#define POLL_OUT 2 +#define POLL_MSG 3 +#define POLL_ERR 4 +#define POLL_PRI 5 +#define POLL_HUP 6 +#define SS_ONSTACK 1 +#define SS_DISABLE 2 +#define MINSIGSTKSZ 2048 +#define SIGSTKSZ 8192 #endif #ifdef _GNU_SOURCE -typedef int (*sighandler_t)(int); +typedef void (*sighandler_t)(int); void (*bsd_signal(int, void (*)(int)))(int); +int sigisemptyset(const sigset_t *); +#define SA_NOMASK SA_NODEFER +#define SA_ONESHOT SA_RESETHAND #endif #include