Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

kill(2)

sigaction(2)

sigsend(2)

waitid(2)

signal(4)

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)

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026