1 .\" Copyright (c) 2005 David Xu <davidxu@FreeBSD.org>
2 .\" All rights reserved.
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\" notice(s), this list of conditions and the following disclaimer as
9 .\" the first lines of this file unmodified other than the possible
10 .\" addition of one or more copyright notices.
11 .\" 2. Redistributions in binary form must reproduce the above copyright
12 .\" notice(s), this list of conditions and the following disclaimer in
13 .\" the documentation and/or other materials provided with the
16 .\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) ``AS IS'' AND ANY
17 .\" EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 .\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) BE
20 .\" LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 .\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 .\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
23 .\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24 .\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
25 .\" OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26 .\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
35 .Nd "signal generation information"
39 A process may request signal information when it is catching a signal.
40 The information specifies why the system generated that signal.
41 To request signal information in a signal handler, the user can set
48 otherwise the user can use
52 to get signal information.
53 In either case, the system returns the information in a structure of type
55 which includes the following information:
56 .Bl -column ".Vt union signal" ".Va si_overrun"
57 .It Sy Type Ta Sy Member Ta Sy Description
58 .It Vt int Ta Va si_signo Ta
60 .It Vt int Ta Va si_errno Ta
62 .It Vt int Ta Va si_code Ta
64 .It Vt union sigval Ta Va si_value Ta
66 .It Vt pid_t Ta Va si_pid Ta
68 .It Vt uid_t Ta Va si_uid Ta
69 sending process's real user ID
70 .It Vt void Ta Va *si_addr Ta
71 address of faulting instruction
72 .It Vt int Ta Va si_status Ta
74 .It Vt long Ta Va si_band Ta
77 .It Vt int Ta Va si_trapno Ta
79 .It Vt int Ta Va si_timerid Ta
82 .It Vt int Ta Va si_overrun Ta
85 .It Vt int Ta Va si_mqd Ta
92 member contains the signal number.
96 member contains an error number defined in the file
101 member contains a code which describes the cause of the signal.
102 The macros specified in the
104 column of the following table are defined
107 that are signal-specific or non-signal-specific reasons why the signal was
109 .Bl -column ".Dv SIGPOLL" ".Dv CLD_CONTINUED"
110 .It Sy Signal Ta Sy Code Ta Sy Reason
111 .It Dv SIGILL Ta Dv ILL_ILLOPC Ta
113 .It Ta Dv ILL_ILLOPN Ta
115 .It Ta Dv ILL_ILLADR Ta
116 illegal addressing mode
117 .It Ta Dv ILL_ILLTRP Ta
119 .It Ta Dv ILL_PRVOPC Ta
120 illegal privileged opcode
121 .It Ta Dv ILL_PRVREG Ta
122 illegal privileged register
123 .It Ta Dv ILL_COPROC Ta
125 .It Ta Dv ILL_BADSTK Ta
127 .It Dv SIGFPE Ta Dv FPE_INTDIV Ta
128 integer divide by zero
129 .It Ta Dv FPE_INTOVF Ta
131 .It Ta Dv FPE_FLTDIV Ta
132 floating-point divide by zero
133 .It Ta Dv FPE_FLTOVF Ta
134 floating-point overflow
135 .It Ta Dv FPE_FLTUND Ta
136 floating-point underflow
137 .It Ta Dv FPE_FLTRES Ta
138 floating-point inexact result
139 .It Ta Dv FPE_FLTINV Ta
140 invalid floating-point operation
141 .It Ta Dv FPE_FLTSUB Ta
142 subscript out of range
143 .It Dv SIGSEGV Ta Dv SEGV_MAPERR Ta
144 address not mapped to object
145 .It Ta Dv SEGV_ACCERR Ta
146 invalid permissions for mapped object
147 .It Dv SIGBUS Ta Dv BUS_ADRALN Ta
148 invalid address alignment
149 .It Ta Dv BUS_ADRERR Ta
150 nonexistent physical address
151 .It Ta Dv BUS_OBJERR Ta
152 object-specific hardware error
153 .It Dv SIGTRAP Ta Dv TRAP_BRKPT Ta
155 .It Ta Dv TRAP_TRACE Ta
157 .It Ta Dv TRAP_DTRACE Ta
159 .It Ta Dv TRAP_CAP Ta
160 capabilities protective trap
161 .It Dv SIGCHLD Ta Dv CLD_EXITED Ta
163 .It Ta Dv CLD_KILLED Ta
164 child has terminated abnormally and did not create a core file
165 .It Ta Dv CLD_DUMPED Ta
166 child has terminated abnormally and created a core file
167 .It Ta Dv CLD_TRAPPED Ta
168 traced child has trapped
169 .It Ta Dv CLD_STOPPED Ta
171 .It Ta Dv CLD_CONTINUED Ta
172 stopped child has continued
173 .It Dv SIGPOLL Ta Dv POLL_IN Ta
175 .It Ta Dv POLL_OUT Ta
176 output buffers available
177 .It Ta Dv POLL_MSG Ta
178 input message available
179 .It Ta Dv POLL_ERR Ta
181 .It Ta Dv POLL_PRI Ta
182 high priority input available
183 .It Ta Dv POLL_HUP Ta
185 .It Any Ta Dv SI_NOINFO Ta
188 member is meaningful; the value of all other members is unspecified.
192 .It Ta Dv SI_QUEUE Ta
195 .It Ta Dv SI_TIMER Ta
196 signal generated by expiration of a timer set by
198 .It Ta Dv SI_ASYNCIO Ta
199 signal generated by completion of an asynchronous I/O request
200 .It Ta Dv SI_MESGQ Ta
201 signal generated by arrival of a message on an empty message queue
202 .It Ta Dv SI_KERNEL Ta
203 signal generated by miscellaneous parts of the kernel
209 In addition, the following signal-specific information is available:
210 .Bl -column ".Dv SIGPOLL" ".Dv CLD_CONTINUED"
211 .It Sy Signal Ta Sy Member Ta Sy Value
212 .It Dv SIGILL Ta Va si_addr Ta
213 address of faulting instruction
214 .It Ta Va si_trapno Ta
215 machine dependent of trap code
216 .It Dv SIGFPE Ta Va si_addr Ta
217 address of faulting instruction
218 .It Ta Va si_trapno Ta
219 machine dependent of trap code
220 .It Dv SIGSEGV Ta Va si_addr Ta
221 address of faulting memory reference
222 .It Ta Va si_trapno Ta
223 machine dependent of trap code
224 .It Dv SIGBUS Ta Va si_addr Ta
225 address of faulting instruction
226 .It Ta Va si_trapno Ta
227 machine dependent of trap code
228 .It Dv SIGCHLD Ta Va si_pid Ta
230 .It Ta Va si_status Ta
231 exit value or signal; if
235 then it is equal to the exit value of the child process, otherwise,
236 it is equal to a signal that caused the child process to change state.
237 .It Ta Va si_uid Ta "real user ID of the process that sent the signal"
238 .It Dv SIGPOLL Ta Va si_band Ta "band event for"
239 .Dv POLL_IN , POLL_OUT ,
244 Finally, the following code-specific information is available:
245 .Bl -column ".Dv SI_ASYNCIO" ".Va si_overrun"
246 .It Sy Code Ta Sy Member Ta Sy Value
247 .It Dv SI_USER Ta Va si_pid Ta
248 the process ID that sent the signal
250 real user ID of the process that sent the signal
251 .It Dv SI_QUEUE Ta Va si_value Ta
256 the process ID that sent the signal
258 real user ID of the process that sent the signal
259 .It Dv SI_TIMER Ta Va si_value Ta
263 .It Ta Va si_timerid Ta
264 the timer ID returned by
267 .It Ta Va si_overrun Ta
268 timer overrun count corresponding to the signal
269 .It Ta Va si_errno Ta
270 If timer overrun will be
271 .Brq Dv DELAYTIMER_MAX ,
272 an error code defined in
275 .It Dv SI_ASYNCIO Ta Va si_value Ta
276 the value passed to aio system calls
277 .It Dv SI_MESGQ Ta Va si_value Ta
282 the ID of the message queue which generated the signal
283 .It Dv SI_LWP Ta Va si_pid Ta
284 the process ID that sent the signal
286 real user ID of the process that sent the signal
289 Currently, the kernel never generates the
293 signal is queued when a process changed its status or exited.
295 Realtime Extensions like aio, timer, and message queue also queue
302 are only queued if there are sufficient resources;
306 For some hardware architectures, the exact value of
308 might not be available.
317 .Xr timer_settime 2 ,
328 signal information first appeared in
334 can be generated as of
338 can be generated as of
341 This manual page was written by
342 .An David Xu Aq Mt davidxu@FreeBSD.org .