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

FreeBSD Manual Pages

  
 
  

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

NAME
       siginfo.h, 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:

       pid_t	    si_pid	/* sending process ID */
       uid_t	    si_uid	/* sending user	ID */
       ctid_t	    si_ctid	/* sending contract ID */
       zoneid_t	    si_zoneid	/* sending zone	ID */S

       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  sig-
		       nal  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 asyn-
		       chronous	 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.h(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.10			  19 Jul 2004		      siginfo.h(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.h&sektion=3head&manpath=SunOS+5.10>

home | help