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