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

FreeBSD Manual Pages

  
 
  

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

NAME
       siginfo - signal	generation information

SYNOPSIS
       #include	<siginfo.h>

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

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

       SI_LWP
	     The signal	was sent by _lwp_kill(2).

       SI_QUEUE
	     The signal	was sent by sigqueue(3RT).

       SI_TIMER
	     The  signal was generated by the expiration of a timer created by
	     timer_settime(3RT).

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

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

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

       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
					 signal
       SIGHUP
       SIGTERM

       The uncatchable signals SIGSTOP	and  SIGKILL  have  undefined  siginfo
       codes.

       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
       SIGFPE
       SIGSEGV	      caddr_t si_addr	  address  of faulting memory ref-
					  erence
       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
       _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)

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

NAME | SYNOPSIS | DESCRIPTION | SEE ALSO | NOTES

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=siginfo&sektion=3head&manpath=SunOS+5.9>

home | help