NAME
siginfo
—
signal 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 containPOLLPRI
|POLLRDBAND
; on a normal write it will containPOLLOUT
|POLLWRNORM
; on an out-of-band write it will containPOLLPRI
|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_SCE
- Process syscall entry trap
- TRAP_SCX
- Process syscall exit 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
, 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 instruction or data and si_trap contains a hardware specific reason.
For SIGTRAP
and
TRAP_BRKPT
, TRAP_TRACE
or
TRAP_DBREG
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 SIGTRAP
and
TRAP_SCE
or TRAP_SCX
the
siginfo
structure contains the following additional
members:
int si_sysnum; int si_retval[2]; int si_error; uint64_t si_args[8];
si_sysnum contains the syscall number,
si_retval contains the syscall return value
(meaningful for TRAP_SCX
only),
si_error contains the syscall error value (meaningful
for TRAP_SCX
only) and
si_args[8] contains the syscall arguments,
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
,
TRAP_LWP
, TRAP_SCE
and
TRAP_SCX
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
,
TRAP_LWP
, TRAP_SCE
and
TRAP_SCX
first appeared in NetBSD
8.
The additional parameters with syscall information in
TRAP_SCE
and TRAP_SCX
first
appeared in NetBSD 9.