siginfo(5)


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

 
 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
SIGILL
SIGFPE
caddr_t si_addr address of faulting instruction
SIGSEGV
SIGBUS
caddr_t si_addr address of faulting memory reference
SIGCHLD pid_t si_pid
int si_status
child process ID
exit value or signal
SIGPOLL long si_band band event for POLL_IN, POLL_OUT, or POLL_MSG

 
 Signal    Field             Value 
 ---------------------------------------------------------------- 
 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 

References

sigaction(2), signal(5), waitid(2)

Notices

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.
30 January 1998
© 1998 The Santa Cruz Operation, Inc. All rights reserved.