xref: /xnu-8796.101.5/bsd/sys/signal.h (revision aca3beaa3dfbd42498b42c5e5ce20a938e6554e5)
1*aca3beaaSApple OSS Distributions /*
2*aca3beaaSApple OSS Distributions  * Copyright (c) 2000-2006 Apple Computer, Inc. All rights reserved.
3*aca3beaaSApple OSS Distributions  *
4*aca3beaaSApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_START@
5*aca3beaaSApple OSS Distributions  *
6*aca3beaaSApple OSS Distributions  * This file contains Original Code and/or Modifications of Original Code
7*aca3beaaSApple OSS Distributions  * as defined in and that are subject to the Apple Public Source License
8*aca3beaaSApple OSS Distributions  * Version 2.0 (the 'License'). You may not use this file except in
9*aca3beaaSApple OSS Distributions  * compliance with the License. The rights granted to you under the License
10*aca3beaaSApple OSS Distributions  * may not be used to create, or enable the creation or redistribution of,
11*aca3beaaSApple OSS Distributions  * unlawful or unlicensed copies of an Apple operating system, or to
12*aca3beaaSApple OSS Distributions  * circumvent, violate, or enable the circumvention or violation of, any
13*aca3beaaSApple OSS Distributions  * terms of an Apple operating system software license agreement.
14*aca3beaaSApple OSS Distributions  *
15*aca3beaaSApple OSS Distributions  * Please obtain a copy of the License at
16*aca3beaaSApple OSS Distributions  * http://www.opensource.apple.com/apsl/ and read it before using this file.
17*aca3beaaSApple OSS Distributions  *
18*aca3beaaSApple OSS Distributions  * The Original Code and all software distributed under the License are
19*aca3beaaSApple OSS Distributions  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
20*aca3beaaSApple OSS Distributions  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
21*aca3beaaSApple OSS Distributions  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
22*aca3beaaSApple OSS Distributions  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
23*aca3beaaSApple OSS Distributions  * Please see the License for the specific language governing rights and
24*aca3beaaSApple OSS Distributions  * limitations under the License.
25*aca3beaaSApple OSS Distributions  *
26*aca3beaaSApple OSS Distributions  * @APPLE_OSREFERENCE_LICENSE_HEADER_END@
27*aca3beaaSApple OSS Distributions  */
28*aca3beaaSApple OSS Distributions /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
29*aca3beaaSApple OSS Distributions /*
30*aca3beaaSApple OSS Distributions  * Copyright (c) 1982, 1986, 1989, 1991, 1993
31*aca3beaaSApple OSS Distributions  *	The Regents of the University of California.  All rights reserved.
32*aca3beaaSApple OSS Distributions  * (c) UNIX System Laboratories, Inc.
33*aca3beaaSApple OSS Distributions  * All or some portions of this file are derived from material licensed
34*aca3beaaSApple OSS Distributions  * to the University of California by American Telephone and Telegraph
35*aca3beaaSApple OSS Distributions  * Co. or Unix System Laboratories, Inc. and are reproduced herein with
36*aca3beaaSApple OSS Distributions  * the permission of UNIX System Laboratories, Inc.
37*aca3beaaSApple OSS Distributions  *
38*aca3beaaSApple OSS Distributions  * Redistribution and use in source and binary forms, with or without
39*aca3beaaSApple OSS Distributions  * modification, are permitted provided that the following conditions
40*aca3beaaSApple OSS Distributions  * are met:
41*aca3beaaSApple OSS Distributions  * 1. Redistributions of source code must retain the above copyright
42*aca3beaaSApple OSS Distributions  *    notice, this list of conditions and the following disclaimer.
43*aca3beaaSApple OSS Distributions  * 2. Redistributions in binary form must reproduce the above copyright
44*aca3beaaSApple OSS Distributions  *    notice, this list of conditions and the following disclaimer in the
45*aca3beaaSApple OSS Distributions  *    documentation and/or other materials provided with the distribution.
46*aca3beaaSApple OSS Distributions  * 3. All advertising materials mentioning features or use of this software
47*aca3beaaSApple OSS Distributions  *    must display the following acknowledgement:
48*aca3beaaSApple OSS Distributions  *	This product includes software developed by the University of
49*aca3beaaSApple OSS Distributions  *	California, Berkeley and its contributors.
50*aca3beaaSApple OSS Distributions  * 4. Neither the name of the University nor the names of its contributors
51*aca3beaaSApple OSS Distributions  *    may be used to endorse or promote products derived from this software
52*aca3beaaSApple OSS Distributions  *    without specific prior written permission.
53*aca3beaaSApple OSS Distributions  *
54*aca3beaaSApple OSS Distributions  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
55*aca3beaaSApple OSS Distributions  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
56*aca3beaaSApple OSS Distributions  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
57*aca3beaaSApple OSS Distributions  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
58*aca3beaaSApple OSS Distributions  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
59*aca3beaaSApple OSS Distributions  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
60*aca3beaaSApple OSS Distributions  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
61*aca3beaaSApple OSS Distributions  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
62*aca3beaaSApple OSS Distributions  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
63*aca3beaaSApple OSS Distributions  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
64*aca3beaaSApple OSS Distributions  * SUCH DAMAGE.
65*aca3beaaSApple OSS Distributions  *
66*aca3beaaSApple OSS Distributions  *	@(#)signal.h	8.2 (Berkeley) 1/21/94
67*aca3beaaSApple OSS Distributions  */
68*aca3beaaSApple OSS Distributions 
69*aca3beaaSApple OSS Distributions #ifndef _SYS_SIGNAL_H_
70*aca3beaaSApple OSS Distributions #define _SYS_SIGNAL_H_
71*aca3beaaSApple OSS Distributions 
72*aca3beaaSApple OSS Distributions #include <sys/cdefs.h>
73*aca3beaaSApple OSS Distributions #include <sys/appleapiopts.h>
74*aca3beaaSApple OSS Distributions #include <Availability.h>
75*aca3beaaSApple OSS Distributions 
76*aca3beaaSApple OSS Distributions #define __DARWIN_NSIG   32      /* counting 0; could be 33 (mask is 1-32) */
77*aca3beaaSApple OSS Distributions 
78*aca3beaaSApple OSS Distributions #if !defined(_ANSI_SOURCE) && (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
79*aca3beaaSApple OSS Distributions #define NSIG    __DARWIN_NSIG
80*aca3beaaSApple OSS Distributions #endif
81*aca3beaaSApple OSS Distributions 
82*aca3beaaSApple OSS Distributions #include <machine/signal.h>     /* sigcontext; codes for SIGILL, SIGFPE */
83*aca3beaaSApple OSS Distributions 
84*aca3beaaSApple OSS Distributions #define SIGHUP  1       /* hangup */
85*aca3beaaSApple OSS Distributions #define SIGINT  2       /* interrupt */
86*aca3beaaSApple OSS Distributions #define SIGQUIT 3       /* quit */
87*aca3beaaSApple OSS Distributions #define SIGILL  4       /* illegal instruction (not reset when caught) */
88*aca3beaaSApple OSS Distributions #define SIGTRAP 5       /* trace trap (not reset when caught) */
89*aca3beaaSApple OSS Distributions #define SIGABRT 6       /* abort() */
90*aca3beaaSApple OSS Distributions #if  (defined(_POSIX_C_SOURCE) && !defined(_DARWIN_C_SOURCE))
91*aca3beaaSApple OSS Distributions #define SIGPOLL 7       /* pollable event ([XSR] generated, not supported) */
92*aca3beaaSApple OSS Distributions #else   /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
93*aca3beaaSApple OSS Distributions #define SIGIOT  SIGABRT /* compatibility */
94*aca3beaaSApple OSS Distributions #define SIGEMT  7       /* EMT instruction */
95*aca3beaaSApple OSS Distributions #endif  /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
96*aca3beaaSApple OSS Distributions #define SIGFPE  8       /* floating point exception */
97*aca3beaaSApple OSS Distributions #define SIGKILL 9       /* kill (cannot be caught or ignored) */
98*aca3beaaSApple OSS Distributions #define SIGBUS  10      /* bus error */
99*aca3beaaSApple OSS Distributions #define SIGSEGV 11      /* segmentation violation */
100*aca3beaaSApple OSS Distributions #define SIGSYS  12      /* bad argument to system call */
101*aca3beaaSApple OSS Distributions #define SIGPIPE 13      /* write on a pipe with no one to read it */
102*aca3beaaSApple OSS Distributions #define SIGALRM 14      /* alarm clock */
103*aca3beaaSApple OSS Distributions #define SIGTERM 15      /* software termination signal from kill */
104*aca3beaaSApple OSS Distributions #define SIGURG  16      /* urgent condition on IO channel */
105*aca3beaaSApple OSS Distributions #define SIGSTOP 17      /* sendable stop signal not from tty */
106*aca3beaaSApple OSS Distributions #define SIGTSTP 18      /* stop signal from tty */
107*aca3beaaSApple OSS Distributions #define SIGCONT 19      /* continue a stopped process */
108*aca3beaaSApple OSS Distributions #define SIGCHLD 20      /* to parent on child stop or exit */
109*aca3beaaSApple OSS Distributions #define SIGTTIN 21      /* to readers pgrp upon background tty read */
110*aca3beaaSApple OSS Distributions #define SIGTTOU 22      /* like TTIN for output if (tp->t_local&LTOSTOP) */
111*aca3beaaSApple OSS Distributions #if  (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
112*aca3beaaSApple OSS Distributions #define SIGIO   23      /* input/output possible signal */
113*aca3beaaSApple OSS Distributions #endif
114*aca3beaaSApple OSS Distributions #define SIGXCPU 24      /* exceeded CPU time limit */
115*aca3beaaSApple OSS Distributions #define SIGXFSZ 25      /* exceeded file size limit */
116*aca3beaaSApple OSS Distributions #define SIGVTALRM 26    /* virtual time alarm */
117*aca3beaaSApple OSS Distributions #define SIGPROF 27      /* profiling time alarm */
118*aca3beaaSApple OSS Distributions #if  (!defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE))
119*aca3beaaSApple OSS Distributions #define SIGWINCH 28     /* window size changes */
120*aca3beaaSApple OSS Distributions #define SIGINFO 29      /* information request */
121*aca3beaaSApple OSS Distributions #endif
122*aca3beaaSApple OSS Distributions #define SIGUSR1 30      /* user defined signal 1 */
123*aca3beaaSApple OSS Distributions #define SIGUSR2 31      /* user defined signal 2 */
124*aca3beaaSApple OSS Distributions 
125*aca3beaaSApple OSS Distributions #if defined(_ANSI_SOURCE) || __DARWIN_UNIX03 || defined(__cplusplus)
126*aca3beaaSApple OSS Distributions /*
127*aca3beaaSApple OSS Distributions  * Language spec sez we must list exactly one parameter, even though we
128*aca3beaaSApple OSS Distributions  * actually supply three.  Ugh!
129*aca3beaaSApple OSS Distributions  * SIG_HOLD is chosen to avoid KERN_SIG_* values in <sys/signalvar.h>
130*aca3beaaSApple OSS Distributions  */
131*aca3beaaSApple OSS Distributions #define SIG_DFL         (void (*)(int))0
132*aca3beaaSApple OSS Distributions #define SIG_IGN         (void (*)(int))1
133*aca3beaaSApple OSS Distributions #define SIG_HOLD        (void (*)(int))5
134*aca3beaaSApple OSS Distributions #define SIG_ERR         ((void (*)(int))-1)
135*aca3beaaSApple OSS Distributions #else
136*aca3beaaSApple OSS Distributions /* DO NOT REMOVE THE COMMENTED OUT int: fixincludes needs to see them */
137*aca3beaaSApple OSS Distributions #define SIG_DFL         (void (*)( /*int*/ ))0
138*aca3beaaSApple OSS Distributions #define SIG_IGN         (void (*)( /*int*/ ))1
139*aca3beaaSApple OSS Distributions #define SIG_HOLD        (void (*)( /*int*/ ))5
140*aca3beaaSApple OSS Distributions #define SIG_ERR         ((void (*)( /*int*/ ))-1)
141*aca3beaaSApple OSS Distributions #endif
142*aca3beaaSApple OSS Distributions 
143*aca3beaaSApple OSS Distributions #ifndef _ANSI_SOURCE
144*aca3beaaSApple OSS Distributions #include <sys/_types.h>
145*aca3beaaSApple OSS Distributions 
146*aca3beaaSApple OSS Distributions #include <machine/_mcontext.h>
147*aca3beaaSApple OSS Distributions 
148*aca3beaaSApple OSS Distributions #ifndef KERNEL
149*aca3beaaSApple OSS Distributions #include <sys/_pthread/_pthread_attr_t.h>
150*aca3beaaSApple OSS Distributions #endif /* KERNEL */
151*aca3beaaSApple OSS Distributions 
152*aca3beaaSApple OSS Distributions #include <sys/_types/_sigaltstack.h>
153*aca3beaaSApple OSS Distributions #include <sys/_types/_ucontext.h>
154*aca3beaaSApple OSS Distributions 
155*aca3beaaSApple OSS Distributions #include <sys/_types/_pid_t.h>
156*aca3beaaSApple OSS Distributions #include <sys/_types/_sigset_t.h>
157*aca3beaaSApple OSS Distributions #include <sys/_types/_size_t.h>
158*aca3beaaSApple OSS Distributions #include <sys/_types/_uid_t.h>
159*aca3beaaSApple OSS Distributions 
160*aca3beaaSApple OSS Distributions union sigval {
161*aca3beaaSApple OSS Distributions 	/* Members as suggested by Annex C of POSIX 1003.1b. */
162*aca3beaaSApple OSS Distributions 	int     sival_int;
163*aca3beaaSApple OSS Distributions 	void    *sival_ptr;
164*aca3beaaSApple OSS Distributions };
165*aca3beaaSApple OSS Distributions 
166*aca3beaaSApple OSS Distributions #define SIGEV_NONE      0       /* No async notification */
167*aca3beaaSApple OSS Distributions #define SIGEV_SIGNAL    1       /* aio - completion notification */
168*aca3beaaSApple OSS Distributions #define SIGEV_THREAD    3       /* [NOTIMP] [RTS] call notification function */
169*aca3beaaSApple OSS Distributions 
170*aca3beaaSApple OSS Distributions #ifndef KERNEL
171*aca3beaaSApple OSS Distributions struct sigevent {
172*aca3beaaSApple OSS Distributions 	int                             sigev_notify;                           /* Notification type */
173*aca3beaaSApple OSS Distributions 	int                             sigev_signo;                            /* Signal number */
174*aca3beaaSApple OSS Distributions 	union sigval    sigev_value;                            /* Signal value */
175*aca3beaaSApple OSS Distributions 	void                    (*sigev_notify_function)(union sigval);   /* Notification function */
176*aca3beaaSApple OSS Distributions 	pthread_attr_t  *sigev_notify_attributes;       /* Notification attributes */
177*aca3beaaSApple OSS Distributions };
178*aca3beaaSApple OSS Distributions #endif /* KERNEL */
179*aca3beaaSApple OSS Distributions 
180*aca3beaaSApple OSS Distributions #ifdef BSD_KERNEL_PRIVATE
181*aca3beaaSApple OSS Distributions 
182*aca3beaaSApple OSS Distributions union user64_sigval {
183*aca3beaaSApple OSS Distributions 	struct {
184*aca3beaaSApple OSS Distributions 		uint32_t                pad;    /* assumes Motorola byte order */
185*aca3beaaSApple OSS Distributions 		int32_t                 sival_int;
186*aca3beaaSApple OSS Distributions 	} size_equivalent;
187*aca3beaaSApple OSS Distributions 	user64_addr_t   sival_ptr;
188*aca3beaaSApple OSS Distributions };
189*aca3beaaSApple OSS Distributions 
190*aca3beaaSApple OSS Distributions union user32_sigval {
191*aca3beaaSApple OSS Distributions 	/* Members as suggested by Annex C of POSIX 1003.1b. */
192*aca3beaaSApple OSS Distributions 	int32_t sival_int;
193*aca3beaaSApple OSS Distributions 	user32_addr_t sival_ptr;
194*aca3beaaSApple OSS Distributions };
195*aca3beaaSApple OSS Distributions 
196*aca3beaaSApple OSS Distributions union user_sigval {
197*aca3beaaSApple OSS Distributions 	struct {
198*aca3beaaSApple OSS Distributions 		uint32_t                pad;    /* assumes Motorola byte order */
199*aca3beaaSApple OSS Distributions 		int32_t                 sival_int;
200*aca3beaaSApple OSS Distributions 	} size_equivalent;
201*aca3beaaSApple OSS Distributions 	user_addr_t sival_ptr;
202*aca3beaaSApple OSS Distributions };
203*aca3beaaSApple OSS Distributions 
204*aca3beaaSApple OSS Distributions struct user64_sigevent {
205*aca3beaaSApple OSS Distributions 	int             sigev_notify;                   /* Notification type */
206*aca3beaaSApple OSS Distributions 	int             sigev_signo;                    /* Signal number */
207*aca3beaaSApple OSS Distributions 	union user64_sigval sigev_value;                        /* Signal value */
208*aca3beaaSApple OSS Distributions 	user64_addr_t   sigev_notify_function;          /* Notify function */
209*aca3beaaSApple OSS Distributions 	user64_addr_t   sigev_notify_attributes;        /* Notify attributes */
210*aca3beaaSApple OSS Distributions };
211*aca3beaaSApple OSS Distributions 
212*aca3beaaSApple OSS Distributions struct user32_sigevent {
213*aca3beaaSApple OSS Distributions 	int             sigev_notify;                   /* Notification type */
214*aca3beaaSApple OSS Distributions 	int             sigev_signo;                    /* Signal number */
215*aca3beaaSApple OSS Distributions 	union user32_sigval sigev_value;                        /* Signal value */
216*aca3beaaSApple OSS Distributions 	user32_addr_t   sigev_notify_function;          /* Notify function */
217*aca3beaaSApple OSS Distributions 	user32_addr_t   sigev_notify_attributes;        /* Notify attributes */
218*aca3beaaSApple OSS Distributions };
219*aca3beaaSApple OSS Distributions 
220*aca3beaaSApple OSS Distributions struct user_sigevent {
221*aca3beaaSApple OSS Distributions 	int             sigev_notify;                   /* Notification type */
222*aca3beaaSApple OSS Distributions 	int             sigev_signo;                    /* Signal number */
223*aca3beaaSApple OSS Distributions 	union user_sigval sigev_value;                  /* Signal value */
224*aca3beaaSApple OSS Distributions 	user_addr_t     sigev_notify_function;          /* Notify function */
225*aca3beaaSApple OSS Distributions 	user_addr_t     sigev_notify_attributes;        /* Notify attributes */
226*aca3beaaSApple OSS Distributions };
227*aca3beaaSApple OSS Distributions 
228*aca3beaaSApple OSS Distributions #endif  /* BSD_KERNEL_PRIVATE */
229*aca3beaaSApple OSS Distributions 
230*aca3beaaSApple OSS Distributions typedef struct __siginfo {
231*aca3beaaSApple OSS Distributions 	int     si_signo;               /* signal number */
232*aca3beaaSApple OSS Distributions 	int     si_errno;               /* errno association */
233*aca3beaaSApple OSS Distributions 	int     si_code;                /* signal code */
234*aca3beaaSApple OSS Distributions 	pid_t   si_pid;                 /* sending process */
235*aca3beaaSApple OSS Distributions 	uid_t   si_uid;                 /* sender's ruid */
236*aca3beaaSApple OSS Distributions 	int     si_status;              /* exit value */
237*aca3beaaSApple OSS Distributions 	void    *si_addr;               /* faulting instruction */
238*aca3beaaSApple OSS Distributions 	union sigval si_value;          /* signal value */
239*aca3beaaSApple OSS Distributions 	long    si_band;                /* band event for SIGPOLL */
240*aca3beaaSApple OSS Distributions 	unsigned long   __pad[7];       /* Reserved for Future Use */
241*aca3beaaSApple OSS Distributions } siginfo_t;
242*aca3beaaSApple OSS Distributions 
243*aca3beaaSApple OSS Distributions #ifdef BSD_KERNEL_PRIVATE
244*aca3beaaSApple OSS Distributions 
245*aca3beaaSApple OSS Distributions typedef struct user_siginfo {
246*aca3beaaSApple OSS Distributions 	int             si_signo;       /* signal number */
247*aca3beaaSApple OSS Distributions 	int             si_errno;       /* errno association */
248*aca3beaaSApple OSS Distributions 	int             si_code;        /* signal code */
249*aca3beaaSApple OSS Distributions 	pid_t           si_pid;         /* sending process */
250*aca3beaaSApple OSS Distributions 	uid_t           si_uid;         /* sender's ruid */
251*aca3beaaSApple OSS Distributions 	int             si_status;      /* exit value */
252*aca3beaaSApple OSS Distributions 	user_addr_t     si_addr;        /* faulting instruction (see below) */
253*aca3beaaSApple OSS Distributions 	union user_sigval si_value;     /* signal value */
254*aca3beaaSApple OSS Distributions 	user_long_t     si_band;        /* band event for SIGPOLL */
255*aca3beaaSApple OSS Distributions 	user_ulong_t    pad[7];         /* Reserved for Future Use */
256*aca3beaaSApple OSS Distributions } user_siginfo_t;
257*aca3beaaSApple OSS Distributions 
258*aca3beaaSApple OSS Distributions typedef struct user64_siginfo {
259*aca3beaaSApple OSS Distributions 	int             si_signo;       /* signal number */
260*aca3beaaSApple OSS Distributions 	int             si_errno;       /* errno association */
261*aca3beaaSApple OSS Distributions 	int             si_code;        /* signal code */
262*aca3beaaSApple OSS Distributions 	pid_t           si_pid;         /* sending process */
263*aca3beaaSApple OSS Distributions 	uid_t           si_uid;         /* sender's ruid */
264*aca3beaaSApple OSS Distributions 	int             si_status;      /* exit value */
265*aca3beaaSApple OSS Distributions 	user64_addr_t   si_addr;        /* faulting instruction (see below) */
266*aca3beaaSApple OSS Distributions 	union user64_sigval si_value;   /* signal value */
267*aca3beaaSApple OSS Distributions 	user64_long_t   si_band;        /* band event for SIGPOLL */
268*aca3beaaSApple OSS Distributions 	user64_ulong_t  __pad[7];               /* Reserved for Future Use */
269*aca3beaaSApple OSS Distributions } user64_siginfo_t;
270*aca3beaaSApple OSS Distributions 
271*aca3beaaSApple OSS Distributions typedef struct user32_siginfo {
272*aca3beaaSApple OSS Distributions 	int             si_signo;       /* signal number */
273*aca3beaaSApple OSS Distributions 	int             si_errno;       /* errno association */
274*aca3beaaSApple OSS Distributions 	int             si_code;        /* signal code */
275*aca3beaaSApple OSS Distributions 	pid_t           si_pid;         /* sending process */
276*aca3beaaSApple OSS Distributions 	uid_t           si_uid;         /* sender's ruid */
277*aca3beaaSApple OSS Distributions 	int             si_status;      /* exit value */
278*aca3beaaSApple OSS Distributions 	user32_addr_t   si_addr;        /* faulting instruction (see below) */
279*aca3beaaSApple OSS Distributions 	union user32_sigval     si_value;       /* signal value */
280*aca3beaaSApple OSS Distributions 	user32_long_t   si_band;        /* band event for SIGPOLL */
281*aca3beaaSApple OSS Distributions 	user32_ulong_t  __pad[7];               /* Reserved for Future Use */
282*aca3beaaSApple OSS Distributions } user32_siginfo_t;
283*aca3beaaSApple OSS Distributions 
284*aca3beaaSApple OSS Distributions void siginfo_user_to_user32(user_siginfo_t *, user32_siginfo_t *);
285*aca3beaaSApple OSS Distributions void siginfo_user_to_user64(user_siginfo_t *, user64_siginfo_t *);
286*aca3beaaSApple OSS Distributions 
287*aca3beaaSApple OSS Distributions #endif  /* BSD_KERNEL_PRIVATE */
288*aca3beaaSApple OSS Distributions 
289*aca3beaaSApple OSS Distributions /*
290*aca3beaaSApple OSS Distributions  * When the signal is SIGILL or SIGFPE, si_addr contains the address of
291*aca3beaaSApple OSS Distributions  * the faulting instruction.
292*aca3beaaSApple OSS Distributions  * When the signal is SIGSEGV or SIGBUS, si_addr contains the address of
293*aca3beaaSApple OSS Distributions  * the faulting memory reference. Although for x86 there are cases of SIGSEGV
294*aca3beaaSApple OSS Distributions  * for which si_addr cannot be determined and is NULL.
295*aca3beaaSApple OSS Distributions  * If the signal is SIGCHLD, the si_pid field will contain the child process ID,
296*aca3beaaSApple OSS Distributions  *  si_status contains the exit value or signal and
297*aca3beaaSApple OSS Distributions  *  si_uid contains the real user ID of the process that sent the signal.
298*aca3beaaSApple OSS Distributions  */
299*aca3beaaSApple OSS Distributions 
300*aca3beaaSApple OSS Distributions /* Values for si_code */
301*aca3beaaSApple OSS Distributions 
302*aca3beaaSApple OSS Distributions /* Codes for SIGILL */
303*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
304*aca3beaaSApple OSS Distributions #define ILL_NOOP        0       /* if only I knew... */
305*aca3beaaSApple OSS Distributions #endif
306*aca3beaaSApple OSS Distributions #define ILL_ILLOPC      1       /* [XSI] illegal opcode */
307*aca3beaaSApple OSS Distributions #define ILL_ILLTRP      2       /* [XSI] illegal trap */
308*aca3beaaSApple OSS Distributions #define ILL_PRVOPC      3       /* [XSI] privileged opcode */
309*aca3beaaSApple OSS Distributions #define ILL_ILLOPN      4       /* [XSI] illegal operand -NOTIMP */
310*aca3beaaSApple OSS Distributions #define ILL_ILLADR      5       /* [XSI] illegal addressing mode -NOTIMP */
311*aca3beaaSApple OSS Distributions #define ILL_PRVREG      6       /* [XSI] privileged register -NOTIMP */
312*aca3beaaSApple OSS Distributions #define ILL_COPROC      7       /* [XSI] coprocessor error -NOTIMP */
313*aca3beaaSApple OSS Distributions #define ILL_BADSTK      8       /* [XSI] internal stack error -NOTIMP */
314*aca3beaaSApple OSS Distributions 
315*aca3beaaSApple OSS Distributions /* Codes for SIGFPE */
316*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
317*aca3beaaSApple OSS Distributions #define FPE_NOOP        0       /* if only I knew... */
318*aca3beaaSApple OSS Distributions #endif
319*aca3beaaSApple OSS Distributions #define FPE_FLTDIV      1       /* [XSI] floating point divide by zero */
320*aca3beaaSApple OSS Distributions #define FPE_FLTOVF      2       /* [XSI] floating point overflow */
321*aca3beaaSApple OSS Distributions #define FPE_FLTUND      3       /* [XSI] floating point underflow */
322*aca3beaaSApple OSS Distributions #define FPE_FLTRES      4       /* [XSI] floating point inexact result */
323*aca3beaaSApple OSS Distributions #define FPE_FLTINV      5       /* [XSI] invalid floating point operation */
324*aca3beaaSApple OSS Distributions #define FPE_FLTSUB      6       /* [XSI] subscript out of range -NOTIMP */
325*aca3beaaSApple OSS Distributions #define FPE_INTDIV      7       /* [XSI] integer divide by zero */
326*aca3beaaSApple OSS Distributions #define FPE_INTOVF      8       /* [XSI] integer overflow */
327*aca3beaaSApple OSS Distributions 
328*aca3beaaSApple OSS Distributions /* Codes for SIGSEGV */
329*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
330*aca3beaaSApple OSS Distributions #define SEGV_NOOP       0       /* if only I knew... */
331*aca3beaaSApple OSS Distributions #endif
332*aca3beaaSApple OSS Distributions #define SEGV_MAPERR     1       /* [XSI] address not mapped to object */
333*aca3beaaSApple OSS Distributions #define SEGV_ACCERR     2       /* [XSI] invalid permission for mapped object */
334*aca3beaaSApple OSS Distributions 
335*aca3beaaSApple OSS Distributions /* Codes for SIGBUS */
336*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
337*aca3beaaSApple OSS Distributions #define BUS_NOOP        0       /* if only I knew... */
338*aca3beaaSApple OSS Distributions #endif
339*aca3beaaSApple OSS Distributions #define BUS_ADRALN      1       /* [XSI] Invalid address alignment */
340*aca3beaaSApple OSS Distributions #define BUS_ADRERR      2       /* [XSI] Nonexistent physical address -NOTIMP */
341*aca3beaaSApple OSS Distributions #define BUS_OBJERR      3       /* [XSI] Object-specific HW error - NOTIMP */
342*aca3beaaSApple OSS Distributions 
343*aca3beaaSApple OSS Distributions /* Codes for SIGTRAP */
344*aca3beaaSApple OSS Distributions #define TRAP_BRKPT      1       /* [XSI] Process breakpoint -NOTIMP */
345*aca3beaaSApple OSS Distributions #define TRAP_TRACE      2       /* [XSI] Process trace trap -NOTIMP */
346*aca3beaaSApple OSS Distributions 
347*aca3beaaSApple OSS Distributions /* Codes for SIGCHLD */
348*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
349*aca3beaaSApple OSS Distributions #define CLD_NOOP        0       /* if only I knew... */
350*aca3beaaSApple OSS Distributions #endif
351*aca3beaaSApple OSS Distributions #define CLD_EXITED      1       /* [XSI] child has exited */
352*aca3beaaSApple OSS Distributions #define CLD_KILLED      2       /* [XSI] terminated abnormally, no core file */
353*aca3beaaSApple OSS Distributions #define CLD_DUMPED      3       /* [XSI] terminated abnormally, core file */
354*aca3beaaSApple OSS Distributions #define CLD_TRAPPED     4       /* [XSI] traced child has trapped */
355*aca3beaaSApple OSS Distributions #define CLD_STOPPED     5       /* [XSI] child has stopped */
356*aca3beaaSApple OSS Distributions #define CLD_CONTINUED   6       /* [XSI] stopped child has continued */
357*aca3beaaSApple OSS Distributions 
358*aca3beaaSApple OSS Distributions /* Codes for SIGPOLL */
359*aca3beaaSApple OSS Distributions #define POLL_IN         1       /* [XSR] Data input available */
360*aca3beaaSApple OSS Distributions #define POLL_OUT        2       /* [XSR] Output buffers available */
361*aca3beaaSApple OSS Distributions #define POLL_MSG        3       /* [XSR] Input message available */
362*aca3beaaSApple OSS Distributions #define POLL_ERR        4       /* [XSR] I/O error */
363*aca3beaaSApple OSS Distributions #define POLL_PRI        5       /* [XSR] High priority input available */
364*aca3beaaSApple OSS Distributions #define POLL_HUP        6       /* [XSR] Device disconnected */
365*aca3beaaSApple OSS Distributions 
366*aca3beaaSApple OSS Distributions /* union for signal handlers */
367*aca3beaaSApple OSS Distributions union __sigaction_u {
368*aca3beaaSApple OSS Distributions 	void    (*__sa_handler)(int);
369*aca3beaaSApple OSS Distributions 	void    (*__sa_sigaction)(int, struct __siginfo *,
370*aca3beaaSApple OSS Distributions 	    void *);
371*aca3beaaSApple OSS Distributions };
372*aca3beaaSApple OSS Distributions 
373*aca3beaaSApple OSS Distributions /* Signal vector template for Kernel user boundary */
374*aca3beaaSApple OSS Distributions struct  __sigaction {
375*aca3beaaSApple OSS Distributions 	union __sigaction_u __sigaction_u;  /* signal handler */
376*aca3beaaSApple OSS Distributions 	void    (*sa_tramp)(void *, int, int, siginfo_t *, void *);
377*aca3beaaSApple OSS Distributions 	sigset_t sa_mask;               /* signal mask to apply */
378*aca3beaaSApple OSS Distributions 	int     sa_flags;               /* see signal options below */
379*aca3beaaSApple OSS Distributions };
380*aca3beaaSApple OSS Distributions 
381*aca3beaaSApple OSS Distributions /*
382*aca3beaaSApple OSS Distributions  * Signal vector "template" used in sigaction call.
383*aca3beaaSApple OSS Distributions  */
384*aca3beaaSApple OSS Distributions struct  sigaction {
385*aca3beaaSApple OSS Distributions 	union __sigaction_u __sigaction_u;  /* signal handler */
386*aca3beaaSApple OSS Distributions 	sigset_t sa_mask;               /* signal mask to apply */
387*aca3beaaSApple OSS Distributions 	int     sa_flags;               /* see signal options below */
388*aca3beaaSApple OSS Distributions };
389*aca3beaaSApple OSS Distributions 
390*aca3beaaSApple OSS Distributions #ifdef  BSD_KERNEL_PRIVATE
391*aca3beaaSApple OSS Distributions #include <machine/types.h>
392*aca3beaaSApple OSS Distributions 
393*aca3beaaSApple OSS Distributions union __user32_sigaction_u {
394*aca3beaaSApple OSS Distributions 	user32_addr_t __sa_handler;
395*aca3beaaSApple OSS Distributions 	user32_addr_t __sa_sigaction;
396*aca3beaaSApple OSS Distributions };
397*aca3beaaSApple OSS Distributions 
398*aca3beaaSApple OSS Distributions struct  user32_sigaction {
399*aca3beaaSApple OSS Distributions 	union __user32_sigaction_u __sigaction_u;  /* signal handler */
400*aca3beaaSApple OSS Distributions 	sigset_t sa_mask;               /* signal mask to apply */
401*aca3beaaSApple OSS Distributions 	int     sa_flags;               /* see signal options below */
402*aca3beaaSApple OSS Distributions };
403*aca3beaaSApple OSS Distributions 
404*aca3beaaSApple OSS Distributions struct  __user32_sigaction {
405*aca3beaaSApple OSS Distributions 	union __user32_sigaction_u __sigaction_u;  /* signal handler */
406*aca3beaaSApple OSS Distributions 	user32_addr_t sa_tramp;
407*aca3beaaSApple OSS Distributions 	sigset_t sa_mask;               /* signal mask to apply */
408*aca3beaaSApple OSS Distributions 	int     sa_flags;               /* see signal options below */
409*aca3beaaSApple OSS Distributions };
410*aca3beaaSApple OSS Distributions 
411*aca3beaaSApple OSS Distributions union __user64_sigaction_u {
412*aca3beaaSApple OSS Distributions 	user64_addr_t   __sa_handler;
413*aca3beaaSApple OSS Distributions 	user64_addr_t   __sa_sigaction;
414*aca3beaaSApple OSS Distributions };
415*aca3beaaSApple OSS Distributions 
416*aca3beaaSApple OSS Distributions struct  user64_sigaction {
417*aca3beaaSApple OSS Distributions 	union __user64_sigaction_u __sigaction_u;  /* signal handler */
418*aca3beaaSApple OSS Distributions 	sigset_t sa_mask;               /* signal mask to apply */
419*aca3beaaSApple OSS Distributions 	int     sa_flags;               /* see signal options below */
420*aca3beaaSApple OSS Distributions };
421*aca3beaaSApple OSS Distributions 
422*aca3beaaSApple OSS Distributions struct  __user64_sigaction {
423*aca3beaaSApple OSS Distributions 	union __user64_sigaction_u __sigaction_u;  /* signal handler */
424*aca3beaaSApple OSS Distributions 	user64_addr_t   sa_tramp;       /* signal mask to apply */
425*aca3beaaSApple OSS Distributions 	sigset_t sa_mask;               /* signal mask to apply */
426*aca3beaaSApple OSS Distributions 	int     sa_flags;               /* see signal options below */
427*aca3beaaSApple OSS Distributions };
428*aca3beaaSApple OSS Distributions 
429*aca3beaaSApple OSS Distributions union __kern_sigaction_u {
430*aca3beaaSApple OSS Distributions 	user_addr_t     __sa_handler;
431*aca3beaaSApple OSS Distributions 	user_addr_t     __sa_sigaction;
432*aca3beaaSApple OSS Distributions };
433*aca3beaaSApple OSS Distributions 
434*aca3beaaSApple OSS Distributions struct  kern_sigaction {
435*aca3beaaSApple OSS Distributions 	union __kern_sigaction_u __sigaction_u;  /* signal handler */
436*aca3beaaSApple OSS Distributions 	sigset_t sa_mask;               /* signal mask to apply */
437*aca3beaaSApple OSS Distributions 	int     sa_flags;               /* see signal options below */
438*aca3beaaSApple OSS Distributions };
439*aca3beaaSApple OSS Distributions 
440*aca3beaaSApple OSS Distributions struct  __kern_sigaction {
441*aca3beaaSApple OSS Distributions 	union __kern_sigaction_u __sigaction_u;  /* signal handler */
442*aca3beaaSApple OSS Distributions 	user_addr_t     sa_tramp;       /* signal mask to apply */
443*aca3beaaSApple OSS Distributions 	sigset_t sa_mask;               /* signal mask to apply */
444*aca3beaaSApple OSS Distributions 	int     sa_flags;               /* see signal options below */
445*aca3beaaSApple OSS Distributions };
446*aca3beaaSApple OSS Distributions 
447*aca3beaaSApple OSS Distributions #undef SIG_DFL
448*aca3beaaSApple OSS Distributions #undef SIG_IGN
449*aca3beaaSApple OSS Distributions #undef SIG_ERR
450*aca3beaaSApple OSS Distributions #define  SIG_DFL        ((user_addr_t)0LL)
451*aca3beaaSApple OSS Distributions #define  SIG_IGN        ((user_addr_t)1LL)
452*aca3beaaSApple OSS Distributions #define  SIG_ERR        ((user_addr_t)-1LL)
453*aca3beaaSApple OSS Distributions 
454*aca3beaaSApple OSS Distributions #endif  /* BSD_KERNEL_PRIVATE */
455*aca3beaaSApple OSS Distributions 
456*aca3beaaSApple OSS Distributions 
457*aca3beaaSApple OSS Distributions /* if SA_SIGINFO is set, sa_sigaction is to be used instead of sa_handler. */
458*aca3beaaSApple OSS Distributions #define sa_handler      __sigaction_u.__sa_handler
459*aca3beaaSApple OSS Distributions #define sa_sigaction    __sigaction_u.__sa_sigaction
460*aca3beaaSApple OSS Distributions 
461*aca3beaaSApple OSS Distributions #define SA_ONSTACK      0x0001  /* take signal on signal stack */
462*aca3beaaSApple OSS Distributions #define SA_RESTART      0x0002  /* restart system on signal return */
463*aca3beaaSApple OSS Distributions #ifdef  BSD_KERNEL_PRIVATE
464*aca3beaaSApple OSS Distributions #define SA_DISABLE      0x0004  /* disable taking signals on alternate stack - for user_sigaltstack.ss_flags only */
465*aca3beaaSApple OSS Distributions #endif  /* BSD_KERNEL_PRIVATE */
466*aca3beaaSApple OSS Distributions #define SA_RESETHAND    0x0004  /* reset to SIG_DFL when taking signal */
467*aca3beaaSApple OSS Distributions #define SA_NOCLDSTOP    0x0008  /* do not generate SIGCHLD on child stop */
468*aca3beaaSApple OSS Distributions #define SA_NODEFER      0x0010  /* don't mask the signal we're delivering */
469*aca3beaaSApple OSS Distributions #define SA_NOCLDWAIT    0x0020  /* don't keep zombies around */
470*aca3beaaSApple OSS Distributions #define SA_SIGINFO      0x0040  /* signal handler with SA_SIGINFO args */
471*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
472*aca3beaaSApple OSS Distributions #define SA_USERTRAMP    0x0100  /* do not bounce off kernel's sigtramp */
473*aca3beaaSApple OSS Distributions /* This will provide 64bit register set in a 32bit user address space */
474*aca3beaaSApple OSS Distributions #define SA_64REGSET     0x0200  /* signal handler with SA_SIGINFO args with 64bit regs information */
475*aca3beaaSApple OSS Distributions #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
476*aca3beaaSApple OSS Distributions #ifdef  BSD_KERNEL_PRIVATE
477*aca3beaaSApple OSS Distributions #define SA_VALIDATE_SIGRETURN_FROM_SIGTRAMP     0x0400  /* use token to validate sigreturn was called from matching sigtramp */
478*aca3beaaSApple OSS Distributions #endif  /* BSD_KERNEL_PRIVATE */
479*aca3beaaSApple OSS Distributions 
480*aca3beaaSApple OSS Distributions /* the following are the only bits we support from user space, the
481*aca3beaaSApple OSS Distributions  * rest are for kernel use only.
482*aca3beaaSApple OSS Distributions  */
483*aca3beaaSApple OSS Distributions #define SA_USERSPACE_MASK (SA_ONSTACK | SA_RESTART | SA_RESETHAND | SA_NOCLDSTOP | SA_NODEFER | SA_NOCLDWAIT | SA_SIGINFO)
484*aca3beaaSApple OSS Distributions 
485*aca3beaaSApple OSS Distributions /*
486*aca3beaaSApple OSS Distributions  * Flags for sigprocmask:
487*aca3beaaSApple OSS Distributions  */
488*aca3beaaSApple OSS Distributions #define SIG_BLOCK       1       /* block specified signal set */
489*aca3beaaSApple OSS Distributions #define SIG_UNBLOCK     2       /* unblock specified signal set */
490*aca3beaaSApple OSS Distributions #define SIG_SETMASK     3       /* set specified signal set */
491*aca3beaaSApple OSS Distributions 
492*aca3beaaSApple OSS Distributions /* POSIX 1003.1b required values. */
493*aca3beaaSApple OSS Distributions #define SI_USER         0x10001 /* [CX] signal from kill() */
494*aca3beaaSApple OSS Distributions #define SI_QUEUE        0x10002 /* [CX] signal from sigqueue() */
495*aca3beaaSApple OSS Distributions #define SI_TIMER        0x10003 /* [CX] timer expiration */
496*aca3beaaSApple OSS Distributions #define SI_ASYNCIO      0x10004 /* [CX] aio request completion */
497*aca3beaaSApple OSS Distributions #define SI_MESGQ        0x10005 /* [CX]	from message arrival on empty queue */
498*aca3beaaSApple OSS Distributions 
499*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
500*aca3beaaSApple OSS Distributions typedef void (*sig_t)(int);     /* type of signal function */
501*aca3beaaSApple OSS Distributions #endif
502*aca3beaaSApple OSS Distributions 
503*aca3beaaSApple OSS Distributions /*
504*aca3beaaSApple OSS Distributions  * Structure used in sigaltstack call.
505*aca3beaaSApple OSS Distributions  */
506*aca3beaaSApple OSS Distributions #ifdef  BSD_KERNEL_PRIVATE
507*aca3beaaSApple OSS Distributions 
508*aca3beaaSApple OSS Distributions struct  user32_sigaltstack {
509*aca3beaaSApple OSS Distributions 	user32_addr_t   ss_sp;          /* signal stack base */
510*aca3beaaSApple OSS Distributions 	user32_size_t   ss_size;        /* signal stack length */
511*aca3beaaSApple OSS Distributions 	int                 ss_flags;   /* SA_DISABLE and/or SA_ONSTACK */
512*aca3beaaSApple OSS Distributions };
513*aca3beaaSApple OSS Distributions 
514*aca3beaaSApple OSS Distributions struct  user64_sigaltstack {
515*aca3beaaSApple OSS Distributions 	user64_addr_t   ss_sp;          /* signal stack base */
516*aca3beaaSApple OSS Distributions 	user64_size_t   ss_size;        /* signal stack length */
517*aca3beaaSApple OSS Distributions 	int             ss_flags;       /* SA_DISABLE and/or SA_ONSTACK */
518*aca3beaaSApple OSS Distributions };
519*aca3beaaSApple OSS Distributions 
520*aca3beaaSApple OSS Distributions struct  kern_sigaltstack {
521*aca3beaaSApple OSS Distributions 	user_addr_t     ss_sp;          /* signal stack base */
522*aca3beaaSApple OSS Distributions 	user_size_t     ss_size;        /* signal stack length */
523*aca3beaaSApple OSS Distributions 	int             ss_flags;       /* SA_DISABLE and/or SA_ONSTACK */
524*aca3beaaSApple OSS Distributions };
525*aca3beaaSApple OSS Distributions 
526*aca3beaaSApple OSS Distributions #endif  /* BSD_KERNEL_PRIVATE */
527*aca3beaaSApple OSS Distributions 
528*aca3beaaSApple OSS Distributions #define SS_ONSTACK      0x0001  /* take signal on signal stack */
529*aca3beaaSApple OSS Distributions #define SS_DISABLE      0x0004  /* disable taking signals on alternate stack */
530*aca3beaaSApple OSS Distributions #define MINSIGSTKSZ     32768   /* (32K)minimum allowable stack */
531*aca3beaaSApple OSS Distributions #define SIGSTKSZ        131072  /* (128K)recommended stack size */
532*aca3beaaSApple OSS Distributions 
533*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
534*aca3beaaSApple OSS Distributions /*
535*aca3beaaSApple OSS Distributions  * 4.3 compatibility:
536*aca3beaaSApple OSS Distributions  * Signal vector "template" used in sigvec call.
537*aca3beaaSApple OSS Distributions  */
538*aca3beaaSApple OSS Distributions struct  sigvec {
539*aca3beaaSApple OSS Distributions 	void    (*sv_handler)(int);     /* signal handler */
540*aca3beaaSApple OSS Distributions 	int     sv_mask;                /* signal mask to apply */
541*aca3beaaSApple OSS Distributions 	int     sv_flags;               /* see signal options below */
542*aca3beaaSApple OSS Distributions };
543*aca3beaaSApple OSS Distributions 
544*aca3beaaSApple OSS Distributions #define SV_ONSTACK      SA_ONSTACK
545*aca3beaaSApple OSS Distributions #define SV_INTERRUPT    SA_RESTART      /* same bit, opposite sense */
546*aca3beaaSApple OSS Distributions #define SV_RESETHAND    SA_RESETHAND
547*aca3beaaSApple OSS Distributions #define SV_NODEFER      SA_NODEFER
548*aca3beaaSApple OSS Distributions #define SV_NOCLDSTOP    SA_NOCLDSTOP
549*aca3beaaSApple OSS Distributions #define SV_SIGINFO      SA_SIGINFO
550*aca3beaaSApple OSS Distributions 
551*aca3beaaSApple OSS Distributions #define sv_onstack sv_flags     /* isn't compatibility wonderful! */
552*aca3beaaSApple OSS Distributions #endif /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
553*aca3beaaSApple OSS Distributions 
554*aca3beaaSApple OSS Distributions /*
555*aca3beaaSApple OSS Distributions  * Structure used in sigstack call.
556*aca3beaaSApple OSS Distributions  */
557*aca3beaaSApple OSS Distributions struct  sigstack {
558*aca3beaaSApple OSS Distributions 	char    *ss_sp;                 /* signal stack pointer */
559*aca3beaaSApple OSS Distributions 	int     ss_onstack;             /* current status */
560*aca3beaaSApple OSS Distributions };
561*aca3beaaSApple OSS Distributions 
562*aca3beaaSApple OSS Distributions #if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
563*aca3beaaSApple OSS Distributions /*
564*aca3beaaSApple OSS Distributions  * Macro for converting signal number to a mask suitable for
565*aca3beaaSApple OSS Distributions  * sigblock().
566*aca3beaaSApple OSS Distributions  */
567*aca3beaaSApple OSS Distributions #define sigmask(m)      (1 << ((m)-1))
568*aca3beaaSApple OSS Distributions 
569*aca3beaaSApple OSS Distributions #ifdef  KERNEL_PRIVATE
570*aca3beaaSApple OSS Distributions /*
571*aca3beaaSApple OSS Distributions  *	signals delivered on a per-thread basis.
572*aca3beaaSApple OSS Distributions  */
573*aca3beaaSApple OSS Distributions #define threadmask (sigmask(SIGILL)|sigmask(SIGTRAP)|\
574*aca3beaaSApple OSS Distributions 	            sigmask(SIGABRT)|sigmask(SIGEMT)|\
575*aca3beaaSApple OSS Distributions 	            sigmask(SIGFPE)|sigmask(SIGBUS)|\
576*aca3beaaSApple OSS Distributions 	            sigmask(SIGSEGV)|sigmask(SIGSYS)|\
577*aca3beaaSApple OSS Distributions 	            sigmask(SIGPIPE)|sigmask(SIGKILL))
578*aca3beaaSApple OSS Distributions 
579*aca3beaaSApple OSS Distributions #define workq_threadmask ((threadmask | sigcantmask | sigmask(SIGPROF)) & ~sigmask(SIGABRT))
580*aca3beaaSApple OSS Distributions 
581*aca3beaaSApple OSS Distributions /*
582*aca3beaaSApple OSS Distributions  * Signals carried across exec.
583*aca3beaaSApple OSS Distributions  */
584*aca3beaaSApple OSS Distributions #define execmask   (sigmask(SIGHUP)|sigmask(SIGINT)|\
585*aca3beaaSApple OSS Distributions 	            sigmask(SIGQUIT)|sigmask(SIGKILL)|\
586*aca3beaaSApple OSS Distributions 	            sigmask(SIGTERM)|sigmask(SIGSTOP)|\
587*aca3beaaSApple OSS Distributions 	            sigmask(SIGTSTP)|sigmask(SIGCONT)|\
588*aca3beaaSApple OSS Distributions 	            sigmask(SIGTTIN)|sigmask(SIGTTOU)|\
589*aca3beaaSApple OSS Distributions 	            sigmask(SIGUSR1)|sigmask(SIGUSR2))
590*aca3beaaSApple OSS Distributions 
591*aca3beaaSApple OSS Distributions #endif  /* KERNEL_PRIVATE */
592*aca3beaaSApple OSS Distributions 
593*aca3beaaSApple OSS Distributions #define BADSIG          SIG_ERR
594*aca3beaaSApple OSS Distributions 
595*aca3beaaSApple OSS Distributions #endif  /* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */
596*aca3beaaSApple OSS Distributions #endif  /* !_ANSI_SOURCE */
597*aca3beaaSApple OSS Distributions 
598*aca3beaaSApple OSS Distributions /*
599*aca3beaaSApple OSS Distributions  * For historical reasons; programs expect signal's return value to be
600*aca3beaaSApple OSS Distributions  * defined by <sys/signal.h>.
601*aca3beaaSApple OSS Distributions  */
602*aca3beaaSApple OSS Distributions __BEGIN_DECLS
603*aca3beaaSApple OSS Distributions     void(*signal(int, void (*)(int)))(int);
604*aca3beaaSApple OSS Distributions __END_DECLS
605*aca3beaaSApple OSS Distributions #endif  /* !_SYS_SIGNAL_H_ */
606