siginfo(5)
NAME
siginfo − signal generation information
SYNOPSIS
#include <siginfo.h>
DESCRIPTION
If a process is catching a signal, it may request information that tells why the system generated that signal (see sigaction(2)). If a process is monitoring its children, it may receive information that tells why a child changed state (see waitid(2)). In either case, the system returns the information in a structure of type siginfo_t, which includes the following information:
int si_signo/∗ signal number ∗/
int si_errno/∗ error number ∗/
int si_code/∗ signal code ∗/
si_signo contains the system-generated signal number. For the waitid(2) function, si_signo is always SIGCHLD.
If si_errno is non-zero, it contains an error number associated with this signal, as defined in <errno.h>.
si_code contains a code identifying the cause of the signal. If the value of si_code is less than or equal to 0, then the signal was generated by a user process (see kill(2) and sigsend(2)) and the siginfo structure contains the following additional information:
pid_t si_pid/∗ sending process ID ∗/
uid_t si_uid/∗ sending user ID ∗/
Otherwise, si_code contains a signal-specific reason why the signal was generated, as follows:
| Signal | Code | Reason |
| SIGILL | ILL_ILLOPC | illegal opcode |
| ILL_ILLOPN | illegal operand | |
| ILL_ILLADR | illegal addressing mode | |
| ILL_ILLTRP | illegal trap | |
| ILL_PRVOPC | privileged opcode | |
| ILL_PRVREG | privileged register | |
| ILL_COPROC | co-processor error | |
| ILL_BADSTK | internal stack error | |
| SIGFPE | FPE_INTDIV | integer divide by zero |
| FPE_INTOVF | integer overflow | |
| FPE_FLTDIV | floating point divide by zero | |
| FPE_FLTOVF | floating point overflow | |
| FPE_FLTUND | floating point underflow | |
| FPE_FLTRES | floating point inexact result | |
| FPE_FLTINV | invalid floating point operation | |
| FPE_FLTSUB | subscript out of range | |
| SIGSEGV | SEGV_MAPERR | address not mapped to object |
| SEGV_ACCERR | invalid permissions for mapped object | |
| SIGBUS | BUS_ADRALN | invalid address alignment |
| BUS_ADRERR | non-existent physical address | |
| BUS_OBJERR | object specific hardware error | |
| SIGTRAP | TRAP_BRKPT | process breakpoint |
| TRAP_TRACE | process trace trap | |
| SIGCHLD | CLD_EXITED | child has exited |
| CLD_KILLED | child was killed | |
| CLD_DUMPED | child terminated abnormally | |
| CLD_TRAPPED | traced child has trapped | |
| CLD_STOPPED | child has stopped | |
| CLD_CONTINUED | stopped child had continued | |
| SIGPOLL | POLL_IN | data input available |
| POLL_OUT | output buffers available | |
| POLL_MSG | input message available | |
| POLL_ERR | I/O error | |
| POLL_PRI | high priority input available | |
| POLL_HUP | device disconnected |
In addition, the following signal-dependent information is available for kernel-generated signals:
| Signal | Field | Value |
| SIGFPE | ||
| SIGSEGV | caddr_t si_addr | address of faulting memory reference |
| SIGBUS | ||
| SIGCHLD | pid_t si_pid | child process ID |
| int si_status | exit value or signal | |
| SIGPOLL | long si_band | band event for POLL_IN, POLL_OUT, or |
| POLL_MSG |
SEE ALSO
sigaction(2), waitid(2), signal(5)
NOTES
For SIGCHLD signals, if si_code is equal to CLD_EXITED, then si_status is equal to the exit value of the process; otherwise, it is equal to the signal that caused the process to change state. For some implementations, the exact value of si_addr may not be available; in that case, si_addr is guaranteed to be on the same page as the faulting instruction or memory reference.
SunOS 5.1/x86 — Last change: 3 Jul 1990