May 21, 2007 SIGINFO 2

### NAME

siginfo - signal information

### SYNOPSIS

### 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 poing inexact result

  FPE_FLTINV
    Invalid Floating poing 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.4 `UNIX`.