SIGINFO(2) System Calls Manual SIGINFO(2)

NAME

siginfosignal information

SYNOPSIS

#include <signal.h>

DESCRIPTION

siginfo is a structure type which contains information about a signal delivered to a process.
siginfo includes the following members:
int si_signo; 
int si_errno; 
int si_code;
si_signo contains the signal number generated by the system.
If si_errno is non-zero, then it contains a system specific error number associated with this signal. This number is defined in errno(2).
If si_code is less than or equal to zero, the signal was generated by a user process or a user requested service:
 
 
SI_USER
The signal was generated via kill(2). The siginfo structure contains the following additional members:
pid_t si_pid; 
uid_t si_uid;
    
The si_pid field contains the pid of the sending process and the si_uid field contains the user id of the sending process.
 
 
SI_QUEUE
The signal was generated via sigqueue(2). The siginfo structure contains the following additional members:
pid_t si_pid; 
uid_t si_uid; 
sigval_t si_value;
    
The si_pid field contains the pid of the sending process and the si_uid field contains the user id of the sending process. Finally, the si_value field contains the value sent via sigqueue(2).
 
 
SI_TIMER
The signal was generated because a timer set by timer_settime(2) has expired. The siginfo structure contains the following additional members:
sigval_t si_value;
    
The si_value field contains the value set via timer_create(2).
 
 
SI_ASYNCIO
The signal was generated by completion of an asynchronous I/O operation. The siginfo structure contains the following additional members:
int si_fd; 
long si_band;
    
The si_fd argument contains the file descriptor number on which the operation was completed and the si_band field contains the side and priority of the operation. If the operation was a normal read, si_band will contain POLLIN | POLLRDNORM; on an out-of-band read it will contain POLLPRI | POLLRDBAND; on a normal write it will contain POLLOUT | POLLWRNORM; on an out-of-band write it will contain POLLPRI | POLLWRBAND.
 
 
SI_MESGQ
The signal was generated because of the arrival of a message on an empty message queue. See mq_notify(3).
 
 
SI_LWP
The signal was generated via _lwp_kill(2). The siginfo structure contains the following additional members:
pid_t si_pid; 
uid_t si_uid;
    
The si_pid field contains the pid of the sending process and the si_uid field contains the user id of the sending process.
 
 
SI_NOINFO
The signal was generated without specific info available.
If si_code is positive, then it contains a signal specific reason why the signal was generated:
 
 
SIGILL
 
 
ILL_BADSTK
Internal stack error
 
 
ILL_COPROC
Coprocessor error
 
 
ILL_ILLADR
Illegal addressing mode
 
 
ILL_ILLOPC
Illegal opcode
 
 
ILL_ILLOPN
Illegal operand
 
 
ILL_ILLTRP
Illegal trap
 
 
ILL_PRVOPC
Privileged opcode
 
 
ILL_PRVREG
Privileged register
 
 
SIGFPE
 
 
FPE_FLTDIV
Floating-point divide by zero
 
 
FPE_FLTINV
Invalid floating-point operation
 
 
FPE_FLTOVF
Floating-point overflow
 
 
FPE_FLTRES
Floating-point inexact result
 
 
FPE_FLTUND
Floating-point underflow
 
 
FPE_FLTSUB
Subscript out of range
 
 
FPE_INTDIV
Integer divide by zero
 
 
FPE_INTOVF
Integer overflow
 
 
SIGSEGV
 
 
SEGV_ACCERR
Invalid permissions for mapped object
 
 
SEGV_MAPERR
Address not mapped to object
 
 
SIGBUS
 
 
BUS_ADRALN
Invalid address alignment
 
 
BUS_ADRERR
Nonexistent physical address
 
 
BUS_OBJERR
Object-specific hardware error
 
 
SIGTRAP
 
 
TRAP_BRKPT
Process breakpoint
 
 
TRAP_CHLD
Process child trap
 
 
TRAP_DBREG
Process hardware debug register trap
 
 
TRAP_EXEC
Process exec trap
 
 
TRAP_LWP
Process LWP trap
 
 
TRAP_TRACE
Process trace trap
 
 
SIGCHLD
 
 
CLD_CONTINUED
Stopped child has continued
 
 
CLD_DUMPED
Child has terminated abnormally and created a core file
 
 
CLD_EXITED
Child has exited
 
 
CLD_KILLED
Child has terminated abnormally but did not create a core file
 
 
CLD_STOPPED
Child has stopped
 
 
CLD_TRAPPED
Traced child has trapped
 
 
SIGIO
 
 
POLL_ERR
I/O error
 
 
POLL_HUP
Device disconnected
 
 
POLL_IN
Data input available
 
 
POLL_MSG
Input message available
 
 
POLL_OUT
Output buffers available
 
 
POLL_PRI
High priority input available
For SIGILL, SIGFPE, and SIGTRAP the siginfo structure contains the following additional members:
void *si_addr; 
int si_trap;
si_addr contains the address of the faulting instruction and si_trap contains a hardware specific reason.
For SIGBUS and SIGSEGV the siginfo structure contains the following additional members:
void *si_addr; 
int si_trap;
si_addr contains the address of the faulting data and si_trap contains a hardware specific reason.
For some architectures the value of si_addr may be inaccurate.
For SIGIO the siginfo structure contains the following additional members:
int si_fd; 
long si_band;
The si_fd argument contains the file descriptor number on which the operation was completed and the si_band field contains the side and priority of the operation as described above.
Finally, for SIGCHLD the siginfo structure contains the following additional members:
pid_t si_pid; 
uid_t si_uid; 
int si_status; 
clock_t	si_utime; 
clock_t	si_stime;
The si_pid field contains the pid of the process who's status changed, the si_uid field contains the user id of the that process, the si_status field contains either the exit code of the process (for CLD_EXITED), or the signal number received by the process. waitid(2), waitpid(2), and the si_utime and si_stime fields contain the user and system process accounting time.

STANDARDS

The siginfo type conforms to X/Open System Interfaces and Headers Issue 5 (“XSH5”).
Signals specifying SI_LWP or SI_NOINFO are NetBSD extensions.
The TRAP_CHLD, TRAP_DBREG, TRAP_EXEC and TRAP_LWP signal specific reasons of SIGTRAP are NetBSD extensions.

HISTORY

The siginfo functionality first appeared in AT&T System V Release 4 UNIX.
TRAP_CHLD, TRAP_DBREG, TRAP_EXEC and TRAP_LWP first appeared in NetBSD 8.
January 14, 2017 NetBSD 8.2