typedef struct siginfo
{
int si_signo; /* Signal number.*/
int si_errno; /* If non-zero, an errno value associated with this signal, as defined in <errno.h>.*/
int si_code; /* Signal code*/
union
{
int _pad[__SI_PAD_SIZE];
struct /* kill().*/
{
__pid_t si_pid; /* Sending process ID.*/
__uid_t si_uid; /* Real user ID of sending process.*/
} _kill;
struct /* POSIX.1b timers.*/
{
int si_tid; /* Timer ID.*/
int si_overrun; /* Overrun count.*/
sigval_t si_sigval; /* Signal value.*/
} _timer;
struct /* POSIX.1b signals. */
{
__pid_t si_pid; /* Sending process ID.*/
__uid_t si_uid; /* Real user ID of sending process.*/
sigval_t si_sigval; /* Signal value.*/
} _rt;
struct /* SIGCHLD.*/
{
__pid_t si_pid; /* Which child.*/
__uid_t si_uid; /* Real user ID of sending process.*/
int si_status; /* Exit value or signal.*/
__clock_t si_utime;
__clock_t si_stime;
} _sigchld;
struct /* SIGILL, SIGFPE, SIGSEGV, SIGBUS.*/
{
void *si_addr; /* Faulting insn/memory ref.*/
} _sigfault;
struct/* SIGPOLL. */
{
long int si_band; /* Band event for SIGPOLL.*/
int si_fd;
} _sigpoll;
} _sifields;
} siginfo_t;