Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
siginfo(3HEAD)			    Headers			siginfo(3HEAD)

       siginfo - signal	generation information

       #include	<siginfo.h>

       If  a  process is catching a signal,  it	might request information that
       tells why the system generated that signal.  See	  sigaction(2).	 If  a
       process	is  monitoring its children, it	might 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 */
       union sigval   si_value	      /* signal	value */

       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 the  si_code member is  SI_NOINFO,  only	 the  si_signo
       member  of  siginfo_t is	meaningful, and	the value of all other members
       is unspecified.

   User	Signals
       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),	 _lwp_kill(2),
       sigqueue(3RT), sigsend(2), abort(3C), and raise(3C)) and	 the   siginfo
       structure contains the following	additional information:

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

       If the signal was generated by a	user process, the following values are
       defined for si_code:

	     The implementation	sets si_code to	SI_USER	if the signal was sent
	     by	kill(2), sigsend(2), raise(3C) or abort(3C).

	     The signal	was sent by _lwp_kill(2).

	     The signal	was sent by sigqueue(3RT).

	     The  signal was generated by the expiration of a timer created by

	     The signal	was generated by the  completion  of  an  asynchronous
	     I/O request.

	     The  signal was generated by the arrival of a message on an empty
	     message queue. See	mq_notify(3RT).

       si_value	contains the application specified value, which	is  passed  to
       the  application's  signal-catching  function at	the time of the	signal
       delivery	if  si_code is any  of	SI_QUEUE,  SI_TIMER,  SI_ASYNCHIO,  or

   System Signals
       Non-user	 generated  signals can	arise for a number of reasons. For all
       of these	cases, si_code contains	a positive value reflecting the	reason
       why the system generated	the signal:

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

       Signals can also	be generated  from  the	 resource  control  subsystem.
       Where  these signals do not already possess kernel-level	siginfo	codes,
       the siginfo si_code will	be filled with SI_RCTL to indicate  a  kernel-
       generated signal	from an	established resource control value.

	  Signal	    Code		   Reason
       SIGXRES	      SI_RCTL		 resource-control generated

       The uncatchable signals SIGSTOP	and  SIGKILL  have  undefined  siginfo

       Signals	sent with a siginfo code of SI_RCTL contain code-dependent in-
       formation for kernel-generated signals:

	  Code		    Field		       Value
       SI_RCTL	      hr_time si_entity	  process-model	entity of control

       In addition, the	following signal-dependent  information	 is  available
       for kernel-generated signals:

	  Signal	    Field		       Value
       SIGILL	      caddr_t si_addr	  address of faulting instruction
       SIGSEGV	      caddr_t si_addr	  address  of faulting memory ref-
       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

       _lwp_kill(2), kill(2), setrctl(2), sigaction(2),	sigsend(2), waitid(2),
       abort(3C),  aio_read(3RT),  mq_notify(3RT),  raise(3C),	signal(3HEAD),
       sigqueue(3RT), timer_create(3RT), timer_settime(3RT)

       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 might not be	available;  in
       that case, si_addr is guaranteed	to be on the same page as the faulting
       instruction or memory reference.

SunOS 5.9			  11 Apr 2001			siginfo(3HEAD)


Want to link to this manual page? Use this URL:

home | help