siginfo(5) — Macro Packages and Conventions
NAME
siginfo − Details of signal generation
SYNOPSIS
#include <siginfo.h>
DESCRIPTION
The siginfo structure provides processes with information on why a signal was generated, or a process that is monitoring child processes may receive information that specifies why a child process changed state. See the sigaction(2) and waitid(2) reference pages for more information.
The type siginfo_t contains the following members:
si_signo
Contains the system generated signal number. Note that for the waitid function, this field is always SIGCHLD.
si_error
Contains, if non-zero, the errno that is associated with the signal.
si_code
Specifies a code that determines whether the signal was generated by a user process, a specific signal, or by the kernel. When the value of si_code is less than or equal to zero (0), the signal was generated by a user process and the siginfo structure contains the following additional members:
pid_t si_pid /∗sending process ID∗/
uid_t si_uid /∗sending user ID∗/
See the kill(2) and sigsend(2) reference pages for more information on these fields.
The following table describes the meaning of the code generated by a signal. The table lists signals in alphabetical order.
| Signal | Code | Definition |
| SIGBUS | BUS_ADRALN | invalid address alignment |
| BUS_ADRERR | non-existent physical address | |
| BUS_OBJERR | object specific hardware error | |
| 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 has continued | |
| CLD_SIGEXITING | child is about to exit because it received a fatal signal | |
| 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 | coprocessor 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 | |
| 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 | |
| SIGSEGV | SEGV_MAPERR | address not mapped to object |
| SEGV_ACCERR | invalid permissions for mapped object | |
| SIGTRAP | TRAP_BRKPT | process breakpoint |
| TRAP_TRACE | process trace trap |
When a signal is generated by the system, the meaning of the code is as follows:
| Signal | Field | Description |
| SIGILL | caddr_t si_addr | address of faulting instruction |
| SIGFPE | ||
| SIGSEGV | caddr_t si_addr | address of faulting memory |
| SIGBUS | reference | |
| 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 |
Note, if the signal is SIGCHLD, and the si_code is equivalent to CLD_EXITED, si_status is equivalent to the exit value of the process. If si_code is not equivalent to CLD_EXITED, the si_status field is equivalent to the signal that caused the process to change state. In some instances, si_addr may not be defined, but si_addr will appear on the same page as the faulting instruction or memory reference.
SEE ALSO
Functions: kill(2), sigaction(2), sigsend(2), waitid(2)
Files: signal(4)