siginfo is a structure type which contains information about a signal delivered to a process.
siginfo includes the following members:
int si_signo;
int si_errno;
int si_code;
si_signo contains the signal number generated by the system.
If
si_errno is non-zero, then it contains a system specific error number associated with this signal. This number is defined in
errno(2).
If
si_code is less than or equal to zero, the signal was generated by a user process or a user requested service:
SI_USER
The signal was generated via
kill(2). The
siginfo structure contains the following additional members:
pid_t si_pid;
uid_t si_uid;
The
si_pid field contains the pid of the sending process and the
si_uid field contains the user id of the sending process.
SI_TIMER
The signal was generated because a timer set by
timer_settime(2) has expired. The
siginfo structure contains the following additional members:
The
si_value field contains the value set via
timer_create(2).
SI_ASYNCIO
The signal was generated by completion of an asynchronous I/O operation. The
siginfo structure contains the following additional members:
The
si_fd argument contains the file descriptor number on which the operation was completed and the
si_band field contains the side and priority of the operation. If the operation was a normal read,
si_band will contain
POLLIN |
POLLRDNORM; on an out-of-band read it will contain
POLLPRI |
POLLRDBAND; on a normal write it will contain
POLLOUT |
POLLWRNORM; on an out-of-band write it will contain
POLLPRI |
POLLWRBAND.
If
si_code is positive, then it contains a signal specific reason why the signal was generated:
SIGILL
ILL_ILLOPC
Illegal opcode
ILL_ILLOPN
Illegal operand
ILL_ILLADR
Illegal addressing mode
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
SIGSEGV
SEGV_MAPERR
Address not mapped to object
SEGV_ACCERR
Invalid permissions for mapped object
SIGBUS
BUS_ADRALN
Invalid address alignment
BUS_ADRERR
Non-existant 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 has terminated abnormally but did not create a core file
CLD_DUMPED
Child has terminated abnormally and created a core file
CLD_TRAPPED
Traced child has trapped
CLD_STOPPED
Child has stopped
CLD_CONTINUED
Stopped child has continued
SIGPOLL
POLL_IN
Data input available
POLL_OUT
Output buffers available
POLL_MSG
Input message available
POLL_PRI
High priority input available
POLL_HUP
Device disconnected
For
SIGILL,
SIGFPE, and
SIGTRAP the
siginfo structure contains the following additional members:
void *si_addr;
int si_trap;
si_addr contains the address of the faulting instruction and
si_trap contains a hardware specific reason.
For
SIGBUS and
SIGSEGV the
siginfo structure contains the following additional members:
void *si_addr;
int si_trap;
si_addr contains the address of the faulting data and
si_trap contains a hardware specific reason.
For
SIGPOLL the
siginfo structure contains the following additional members:
The
si_fd argument contains the file descriptor number on which the operation was completed and the
si_band field contains the side and priority of the operation as described above.
Finally, for
SIGCHLD the
siginfo structure contains the following additional members:
pid_t si_pid;
uid_t si_uid;
int si_status;
clock_t si_utime;
clock_t si_stime;
The
si_pid field contains the pid of the process who's status changed, the
si_uid field contains the user id of the that process, the
si_status field contains a status code described in
waitpid(2), and the
si_utime and
si_stime fields contain the user and system process accounting time.