Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

kill(2)

sigaction(2)

sigqueue(2)

sigsend(2)

waitid(2)

signal(5)



siginfo(5)                                                          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 either by a user process or on behalf of a user initiated
     service.  In this case si_code defines which service initiated the
     request and determines what (if any) additional information is included
     in the siginfo structure.  The following are the possible user initiated
     si_code values:

     SI_USER     The signal was generated via kill(2) or sigsend(2).  The
                 siginfo structure contains the following additional
                 information:


                 pid_t si_pid   /* sending process ID */
                 uid_t si_uid   /* sending user ID */

     SI_QUEUE    The signal was generated via sigqueue(3).  The siginfo
                 structure contains the following additional information:


                 pid_t si_pid   /* sending process ID */
                 uid_t si_uid   /* sending user ID */
                 union sigval si_value; /* value sent via sigqueue */

     Otherwise, si_code contains a signal-specific reason why the signal was
     generated, as follows:





                                                                        Page 1





siginfo(5)                                                          siginfo(5)



     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      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-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 Page 2


siginfo(5)                                                          siginfo(5)



    _________________________________________________________________
     SIGILL    caddr_t si_addr   address of faulting instruction
     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
     kill(2), sigaction(2), sigqueue(2), sigsend(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.
































                                                                        Page 3



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