|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /* Copyright (c) 1995 NeXT Computer, Inc. All Rights Reserved */
23: /*
24: * Copyright (c) 1982, 1986, 1989, 1991, 1993
25: * The Regents of the University of California. All rights reserved.
26: * (c) UNIX System Laboratories, Inc.
27: * All or some portions of this file are derived from material licensed
28: * to the University of California by American Telephone and Telegraph
29: * Co. or Unix System Laboratories, Inc. and are reproduced herein with
30: * the permission of UNIX System Laboratories, Inc.
31: *
32: * Redistribution and use in source and binary forms, with or without
33: * modification, are permitted provided that the following conditions
34: * are met:
35: * 1. Redistributions of source code must retain the above copyright
36: * notice, this list of conditions and the following disclaimer.
37: * 2. Redistributions in binary form must reproduce the above copyright
38: * notice, this list of conditions and the following disclaimer in the
39: * documentation and/or other materials provided with the distribution.
40: * 3. All advertising materials mentioning features or use of this software
41: * must display the following acknowledgement:
42: * This product includes software developed by the University of
43: * California, Berkeley and its contributors.
44: * 4. Neither the name of the University nor the names of its contributors
45: * may be used to endorse or promote products derived from this software
46: * without specific prior written permission.
47: *
48: * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
49: * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
50: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
51: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
52: * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
53: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
54: * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
55: * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
56: * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
57: * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
58: * SUCH DAMAGE.
59: *
60: * @(#)signal.h 8.2 (Berkeley) 1/21/94
61: */
62:
63: #ifndef _SYS_SIGNAL_H_
64: #define _SYS_SIGNAL_H_
65:
66: #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
67: #define NSIG 32 /* counting 0; could be 33 (mask is 1-32) */
68: #endif
69:
70: #include <machine/signal.h> /* sigcontext; codes for SIGILL, SIGFPE */
71:
72: #define SIGHUP 1 /* hangup */
73: #define SIGINT 2 /* interrupt */
74: #define SIGQUIT 3 /* quit */
75: #define SIGILL 4 /* illegal instruction (not reset when caught) */
76: #if !defined(_POSIX_SOURCE)
77: #define SIGTRAP 5 /* trace trap (not reset when caught) */
78: #endif
79: #define SIGABRT 6 /* abort() */
80: #if !defined(_POSIX_SOURCE)
81: #define SIGIOT SIGABRT /* compatibility */
82: #define SIGEMT 7 /* EMT instruction */
83: #endif
84: #define SIGFPE 8 /* floating point exception */
85: #define SIGKILL 9 /* kill (cannot be caught or ignored) */
86: #if !defined(_POSIX_SOURCE)
87: #define SIGBUS 10 /* bus error */
88: #endif
89: #define SIGSEGV 11 /* segmentation violation */
90: #if !defined(_POSIX_SOURCE)
91: #define SIGSYS 12 /* bad argument to system call */
92: #endif
93: #define SIGPIPE 13 /* write on a pipe with no one to read it */
94: #define SIGALRM 14 /* alarm clock */
95: #define SIGTERM 15 /* software termination signal from kill */
96: #if !defined(_POSIX_SOURCE)
97: #define SIGURG 16 /* urgent condition on IO channel */
98: #endif
99: #define SIGSTOP 17 /* sendable stop signal not from tty */
100: #define SIGTSTP 18 /* stop signal from tty */
101: #define SIGCONT 19 /* continue a stopped process */
102: #define SIGCHLD 20 /* to parent on child stop or exit */
103: #define SIGTTIN 21 /* to readers pgrp upon background tty read */
104: #define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */
105: #if !defined(_POSIX_SOURCE)
106: #define SIGIO 23 /* input/output possible signal */
107: #define SIGXCPU 24 /* exceeded CPU time limit */
108: #define SIGXFSZ 25 /* exceeded file size limit */
109: #define SIGVTALRM 26 /* virtual time alarm */
110: #define SIGPROF 27 /* profiling time alarm */
111: #define SIGWINCH 28 /* window size changes */
112: #define SIGINFO 29 /* information request */
113: #endif
114: #define SIGUSR1 30 /* user defined signal 1 */
115: #define SIGUSR2 31 /* user defined signal 2 */
116:
117: #if defined(_ANSI_SOURCE) || defined(__cplusplus)
118: /*
119: * Language spec sez we must list exactly one parameter, even though we
120: * actually supply three. Ugh!
121: */
122: #define SIG_DFL (void (*)(int))0
123: #define SIG_IGN (void (*)(int))1
124: #define SIG_ERR (void (*)(int))-1
125: #else
126: #define SIG_DFL (void (*)())0
127: #define SIG_IGN (void (*)())1
128: #define SIG_ERR (void (*)())-1
129: #endif
130:
131: #ifndef _ANSI_SOURCE
132: typedef unsigned int sigset_t;
133:
134: /*
135: * Signal vector "template" used in sigaction call.
136: */
137: struct sigaction {
138: void (*sa_handler)(); /* signal handler */
139: sigset_t sa_mask; /* signal mask to apply */
140: int sa_flags; /* see signal options below */
141: };
142: #if !defined(_POSIX_SOURCE)
143: #define SA_ONSTACK 0x0001 /* take signal on signal stack */
144: #define SA_RESTART 0x0002 /* restart system on signal return */
145: #define SA_DISABLE 0x0004 /* disable taking signals on alternate stack */
146: #define SA_USERTRAMP 0x0100 /* do not bounce off kernel's sigtramp */
147: #endif
148: #define SA_NOCLDSTOP 0x0008 /* do not generate SIGCHLD on child stop */
149:
150: /*
151: * Flags for sigprocmask:
152: */
153: #define SIG_BLOCK 1 /* block specified signal set */
154: #define SIG_UNBLOCK 2 /* unblock specified signal set */
155: #define SIG_SETMASK 3 /* set specified signal set */
156:
157: #if !defined(_POSIX_SOURCE)
158: #include <sys/cdefs.h>
159: typedef void (*sig_t) __P((int)); /* type of signal function */
160:
161: /*
162: * Structure used in sigaltstack call.
163: */
164: struct sigaltstack {
165: char *ss_sp; /* signal stack base */
166: int ss_size; /* signal stack length */
167: int ss_flags; /* SA_DISABLE and/or SA_ONSTACK */
168: };
169: #define MINSIGSTKSZ 8192 /* minimum allowable stack */
170: #define SIGSTKSZ (MINSIGSTKSZ + 32768) /* recommended stack size */
171:
172: /*
173: * 4.3 compatibility:
174: * Signal vector "template" used in sigvec call.
175: */
176: struct sigvec {
177: void (*sv_handler)(); /* signal handler */
178: int sv_mask; /* signal mask to apply */
179: int sv_flags; /* see signal options below */
180: };
181:
182: #define SV_ONSTACK SA_ONSTACK
183: #define SV_INTERRUPT SA_RESTART /* same bit, opposite sense */
184: #define sv_onstack sv_flags /* isn't compatibility wonderful! */
185:
186: /*
187: * Structure used in sigstack call.
188: */
189: struct sigstack {
190: char *ss_sp; /* signal stack pointer */
191: int ss_onstack; /* current status */
192: };
193:
194: /*
195: * Macro for converting signal number to a mask suitable for
196: * sigblock().
197: */
198: #define sigmask(m) (1 << ((m)-1))
199:
200: #ifdef KERNEL
201: /*
202: * signals delivered on a per-thread basis.
203: */
204: #define threadmask (sigmask(SIGILL)|sigmask(SIGTRAP)|\
205: sigmask(SIGIOT)|sigmask(SIGEMT)|\
206: sigmask(SIGFPE)|sigmask(SIGBUS)|\
207: sigmask(SIGSEGV)|sigmask(SIGSYS)|\
208: sigmask(SIGPIPE))
209: #endif /* KERNEL */
210:
211: #define BADSIG SIG_ERR
212:
213: #endif /* !_POSIX_SOURCE */
214: #endif /* !_ANSI_SOURCE */
215:
216: /*
217: * For historical reasons; programs expect signal's return value to be
218: * defined by <sys/signal.h>.
219: */
220: __BEGIN_DECLS
221: void (*signal __P((int, void (*) __P((int))))) __P((int));
222: __END_DECLS
223: #endif /* !_SYS_SIGNAL_H_ */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.