SIGINFO(2) | System Calls Manual | SIGINFO(2) |
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:
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.
sigval_t si_value;
The si_value field contains the value set via timer_create(2).
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:
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.
July 26, 2010 | NetBSD 6.1 |