siginfo man page on FreeBSD

Man page or keyword search:  
man Server   9747 pages
apropos Keyword Search (all sections)
Output format
FreeBSD logo
[printable version]

SIGINFO(3)		 BSD Library Functions Manual		    SIGINFO(3)

     siginfo — signal generation information

     #include <signal.h>

     A process may request signal information when it is catching a signal.
     The information specifies why the system generated that signal.  To
     request signal information in a signal handler, the user can set
     SA_SIGINFO in sa_flags before sigaction(2) is called, otherwise the user
     can use sigwaitinfo(2) and sigtimedwait(2) to get signal information.  In
     either case, the system returns the information in a structure of type
     siginfo_t, which includes the following information:

     Type	     Member	   Description
     int	     si_signo	   signal number
     int	     si_errno	   error number
     int	     si_code	   signal code
     union sigval    si_value	   signal value
     pid_t	     si_pid	   sending process ID
     uid_t	     si_uid	   sending process's real user ID
     void	     *si_addr	   address of faulting instruction
     int	     si_status	   exit value or signal
     long	     si_band	   band event for SIGPOLL
     int	     si_trapno	   machine trap code
     int	     si_timerid	   POSIX timer ID
     int	     si_overrun	   POSIX timer overrun count
     int	     si_mqd	   POSIX message queue ID

     The si_signo member contains the signal number.

     The si_errno member contains an error number defined in the file

     The si_code member contains a code which describes the cause of the sig‐
     nal.  The macros specified in the Code column of the following table are
     defined for use as values of si_code that are signal-specific or non-sig‐
     nal-specific reasons why the signal was generated:

     Signal	Code		 Reason
     SIGILL	ILL_ILLOPC	 illegal opcode
		ILL_ILLOPN	 illegal operand
		ILL_ILLADR	 illegal addressing mode
		ILL_ILLTRP	 illegal trap
		ILL_PRVOPC	 illegal privileged opcode
		ILL_PRVREG	 illegal 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	 nonexistent 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 has terminated abnormally and did not
				 create a core file
		CLD_DUMPED	 child has terminated abnormally and created a
				 core file
		CLD_TRAPPED	 traced child has trapped
		CLD_STOPPED	 child has stopped
		CLD_CONTINUED	 stopped child has 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
     Any	SI_NOINFO	 Only the si_signo member is meaningful; the
				 value of all other members is unspecified.
		SI_USER		 signal sent by kill(2)
		SI_QUEUE	 signal sent by sigqueue(2)
		SI_TIMER	 signal generated by expiration of a timer set
				 by timer_settime(2)
		SI_ASYNCIO	 signal generated by completion of an asyn‐
				 chronous I/O request
		SI_MESGQ	 signal generated by arrival of a message on
				 an empty message queue

     In addition, the following signal-specific information is available:

     Signal	Member		 Value
     SIGILL	si_addr		 address of faulting instruction
		si_trapno	 machine dependent of trap code
     SIGFPE	si_addr		 address of faulting instruction
		si_trapno	 machine dependent of trap code
     SIGSEGV	si_addr		 address of faulting memory reference
		si_trapno	 machine dependent of trap code
     SIGBUS	si_addr		 address of faulting instruction
		si_trapno	 machine dependent of trap code
     SIGCHLD	si_pid		 child process ID
		si_status	 exit value or signal; if si_code is equal to
				 CLD_EXITED, then it is equal to the exit
				 value of the child process, otherwise, it is
				 equal to a signal that caused the child
				 process to change state.
		si_uid		 real user ID of the process that sent the
     SIGPOLL	si_band		 band event for POLL_IN, POLL_OUT, or POLL_MSG

     Finally, the following code-specific information is available:

     Code	 Member	       Value
     SI_QUEUE	 si_value      the value passed to sigqueue(2) system call
		 si_pid	       the process ID that sent the signal
		 si_uid	       real user ID of the process that sent the sig‐
     SI_TIMER	 si_value      the value passed to timer_create(2) system call
		 si_timerid    the timer ID returned by timer_create(2) system
		 si_overrun    timer overrun count corresponding to the signal
		 si_errno      If timer overrun will be {DELAYTIMER_MAX}, an
			       error code defined in <errno.h> is set
     SI_ASYNCIO	 si_value      the value passed to aio system calls
     SI_MESGQ	 si_value      the value passed to mq_notify(2) system call
		 si_mqd	       the ID of the message queue which generated the

     Currently, the kernel never generates the SIGPOLL signal.	Also, the
     kill(2) system call does not queue signals, so you will not get code
     SI_USER.  SIGCHLD signal is queued when a process changed its status or
     exited.  POSIX Realtime Extensions like aio, timer, and message queue
     also queue signals.  For some hardware architectures, the exact value of
     si_addr might not be available.

     aio_read(2), kill(2), mq_notify(2), sigaction(2), sigqueue(2),
     sigwaitinfo(2), timer_create(2), timer_settime(2), waitpid(2)

     The siginfo_t type conforms to IEEE Std 1003.1-2004 (“POSIX.1”).

     Full support for POSIX signal information first appeared in FreeBSD 7.0.

     This manual page was written by David Xu ⟨⟩.

BSD			       December 8, 2005				   BSD

List of man pages available for FreeBSD

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
Vote for polarhome
Free Shell Accounts :: the biggest list on the net