SIGINFO(2)

SIGINFO(2) | NetBSD System Calls Manual | SIGINFO(2)

# 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_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.

If si_code is positive, then it contains a signal specific reason why the signal was generated:

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
    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
    Non-existant 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 but 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

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 SIGPOLL 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 a status code described in 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”).

# HISTORY

The siginfo functionality first appeared in AT&T System V Release 4 UNIX.

July 26, 2010 | NetBSD 5.99