xref: /illumos-gate/usr/src/contrib/ast/src/cmd/ksh93/data/signals.c (revision b30d193948be5a7794d7ae3ba0ed9c2f72c88e0f)
1 /***********************************************************************
2 *                                                                      *
3 *               This software is part of the ast package               *
4 *          Copyright (c) 1982-2012 AT&T Intellectual Property          *
5 *                      and is licensed under the                       *
6 *                 Eclipse Public License, Version 1.0                  *
7 *                    by AT&T Intellectual Property                     *
8 *                                                                      *
9 *                A copy of the License is available at                 *
10 *          http://www.eclipse.org/org/documents/epl-v10.html           *
11 *         (with md5 checksum b35adb5213ca9657e911e9befb180842)         *
12 *                                                                      *
13 *              Information and Software Systems Research               *
14 *                            AT&T Research                             *
15 *                           Florham Park NJ                            *
16 *                                                                      *
17 *                  David Korn <dgk@research.att.com>                   *
18 *                                                                      *
19 ***********************************************************************/
20 #include	"defs.h"
21 
22 #if defined(SIGCLD) && !defined(SIGCHLD)
23 #   define SIGCHLD	SIGCLD
24 #endif
25 
26 #define VAL(sig,mode)	((sig+1)|((mode)<<SH_SIGBITS))
27 #define TRAP(n)		(((n)|SH_TRAP)-1)
28 
29 #ifndef ERROR_dictionary
30 #   define  ERROR_dictionary(s)	(s)
31 #endif
32 #define S(s)		ERROR_dictionary(s)
33 
34 /*
35  * This is a table that gives numbers and default settings to each signal.
36  * The signal numbers go in the low bits and the attributes go in the high bits.
37  * The names must be ASCII sorted lo-hi.
38  */
39 
40 const struct shtable2 shtab_signals[] =
41 {
42 #ifdef SIGABRT
43 	"ABRT",		VAL(SIGABRT,SH_SIGDONE), 			S("Abort"),
44 #endif /*SIGABRT */
45 #ifdef SIGAIO
46 	"AIO",		VAL(SIGAIO,SH_SIGIGNORE), 			S("Asynchronous I/O"),
47 #endif /*SIGAIO */
48 #ifdef SIGALRM
49 	"ALRM",		VAL(SIGALRM,SH_SIGDONE),			S("Alarm call"),
50 #endif /* SIGALRM */
51 #ifdef SIGALRM1
52 	"ALRM1",	VAL(SIGALRM1,SH_SIGDONE),			S("Scheduling - reserved"),
53 #endif /* SIGALRM */
54 #ifdef SIGAPOLLO
55 	"APOLLO",	VAL(SIGAPOLLO,0),				S("SIGAPOLLO"),
56 #endif /* SIGAPOLLO */
57 #ifdef SIGBUS
58 	"BUS",		VAL(SIGBUS,SH_SIGDONE),				S("Bus error"),
59 #endif /* SIGBUS */
60 #ifdef SIGCANCEL
61 	"CANCEL",	VAL(SIGCANCEL,SH_SIGIGNORE), 			S("Thread cancellation"),
62 #endif /*SIGCANCEL */
63 #ifdef SIGCHLD
64 	"CHLD",		VAL(SIGCHLD,SH_SIGFAULT), 			S("Death of Child"),
65 #   ifdef SIGCLD
66 #	if SIGCLD!=SIGCHLD
67 	    "CLD",	VAL(SIGCLD,SH_SIGFAULT),			S("Death of Child"),
68 #	endif
69 #   endif	/* SIGCLD */
70 #else
71 #   ifdef SIGCLD
72 	"CLD",		VAL(SIGCLD,SH_SIGFAULT),			S("Death of Child"),
73 #   endif	/* SIGCLD */
74 #endif	/* SIGCHLD */
75 #ifdef SIGCONT
76 	"CONT",		VAL(SIGCONT,SH_SIGIGNORE),			S("Stopped process continued"),
77 #endif	/* SIGCONT */
78 #ifdef SIGCPUFAIL
79 	"CPUFAIL",	VAL(SIGCPUFAIL,0),				S("Predictive processor deconfiguration"),
80 #endif	/* SIGRETRACT */
81 	"DEBUG",	VAL(TRAP(SH_DEBUGTRAP),0),			"",
82 #ifdef SIGDANGER
83 	"DANGER",	VAL(SIGDANGER,0),				S("System crash soon"),
84 #endif	/* SIGDANGER */
85 #ifdef SIGDIL
86 	"DIL",		VAL(SIGDIL,0),					S("DIL signal"),
87 #endif	/* SIGDIL */
88 #ifdef SIGEMT
89 	"EMT",		VAL(SIGEMT,SH_SIGDONE),				S("EMT trap"),
90 #endif	/* SIGEMT */
91 	"ERR",		VAL(TRAP(SH_ERRTRAP),0),			"",
92 #ifdef SIGERR
93 	"ERR",		VAL(SIGERR,0),					"",
94 #endif /* SIGERR */
95 	"EXIT",		VAL(0,0),					"",
96 	"FPE",		VAL(SIGFPE,SH_SIGDONE),				S("Floating exception"),
97 #ifdef SIGFREEZE
98 	"FREEZE",	VAL(SIGFREEZE,SH_SIGIGNORE),			S("Special signal used by CPR"),
99 #endif	/* SIGFREEZE */
100 #ifdef SIGGRANT
101 	"GRANT",	VAL(SIGGRANT,0),				S("Grant monitor mode"),
102 #endif /* SIGGRANT */
103 	"HUP",		VAL(SIGHUP,SH_SIGDONE),				S("Hangup"),
104 	"ILL",		VAL(SIGILL,SH_SIGDONE),				S("Illegal instruction"),
105 #ifdef SIGINFO
106 	"INFO",         VAL(SIGINFO,SH_SIGIGNORE),                      S("Information request"),
107 #endif /*SIGINFO */
108 #ifdef JOBS
109 	"INT",		VAL(SIGINT,SH_SIGINTERACTIVE),			S("Interrupt"),
110 #else
111 	"INT",		VAL(SIGINT,SH_SIGINTERACTIVE),			"",
112 #endif /* JOBS */
113 #ifdef SIGIO
114 	"IO",		VAL(SIGIO,SH_SIGDONE),				S("IO signal"),
115 #endif	/* SIGIO */
116 #ifdef SIGIOT
117 	"IOT",		VAL(SIGIOT,SH_SIGDONE),				S("Abort"),
118 #endif	/* SIGIOT */
119 #ifdef SIGJVM1
120 	"JVM1",		VAL(SIGJVM1,SH_SIGIGNORE), 			S("Special signal used by Java Virtual Machine"),
121 #endif /*SIGJVM1 */
122 #ifdef SIGJVM2
123 	"JVM2",		VAL(SIGJVM2,SH_SIGIGNORE), 			S("Special signal used by Java Virtual Machine"),
124 #endif /*SIGJVM2 */
125 	"KEYBD",	VAL(TRAP(SH_KEYTRAP),0),			"",
126 #ifdef SIGKILL
127 	"KILL",		VAL(SIGKILL,0),					S("Killed"),
128 #endif /* SIGKILL */
129 #ifdef SIGLAB
130 	"LAB",		VAL(SIGLAB,0),					S("Security label changed"),
131 #endif	/* SIGLAB */
132 #ifdef SIGLOST
133 	"LOST",		VAL(SIGLOST,SH_SIGDONE),			S("Resources lost"),
134 #endif	/* SIGLOST */
135 #ifdef SIGLWP
136 	"LWP",		VAL(SIGLWP,SH_SIGIGNORE),			S("Special signal used by thread library"),
137 #endif	/* SIGLWP */
138 #ifdef SIGMIGRATE
139 	"MIGRATE",	VAL(SIGMIGRATE,0),				S("Migrate process"),
140 #endif	/* SIGMIGRATE */
141 #ifdef SIGMSG
142 	"MSG",		VAL(SIGMSG,0),					S("Ring buffer input data"),
143 #endif	/* SIGMSG */
144 #ifdef SIGPHONE
145 	"PHONE",	VAL(SIGPHONE,0),				S("Phone interrupt"),
146 #endif	/* SIGPHONE */
147 #ifdef SIGPIPE
148 #ifdef JOBS
149 	"PIPE",		VAL(SIGPIPE,SH_SIGDONE),			S("Broken Pipe"),
150 #else
151 	"PIPE",		VAL(SIGPIPE,SH_SIGDONE),	 		"",
152 #endif /* JOBS */
153 #endif /* SIGPIPE */
154 #ifdef SIGPOLL
155 	"POLL",		VAL(SIGPOLL,SH_SIGDONE),			S("Polling alarm"),
156 #endif	/* SIGPOLL */
157 #ifdef SIGPROF
158 	"PROF",		VAL(SIGPROF,SH_SIGDONE), 			S("Profiling time alarm"),
159 #endif	/* SIGPROF */
160 #ifdef SIGPRE
161 	"PRE",		VAL(SIGPRE,SH_SIGDONE), 			S("Programming exception"),
162 #endif	/* SIGPRE */
163 #ifdef SIGPWR
164 #   if SIGPWR>0
165 	"PWR",		VAL(SIGPWR,SH_SIGIGNORE),			S("Power fail"),
166 #   endif
167 #endif	/* SIGPWR */
168 #ifdef SIGQUIT
169 	"QUIT",		VAL(SIGQUIT,SH_SIGDONE|SH_SIGINTERACTIVE),	S("Quit"),
170 #endif	/* SIGQUIT */
171 #ifdef SIGRETRACT
172 	"RETRACT",	VAL(SIGRETRACT,0),				S("Relinquish monitor mode"),
173 #endif	/* SIGRETRACT */
174 #ifdef SIGRTMIN
175 	"RTMIN",	VAL(SH_SIGRTMIN,SH_SIGRUNTIME),			S("Lowest priority realtime signal"),
176 #endif	/* SIGRTMIN */
177 #ifdef SIGRTMAX
178 	"RTMAX",	VAL(SH_SIGRTMAX,SH_SIGRUNTIME),			S("Highest priority realtime signal"),
179 #endif	/* SIGRTMAX */
180 #ifdef SIGSAK
181 	"SAK",		VAL(SIGSAK,0),					S("Secure attention key"),
182 #endif	/* SIGSAK */
183 	"SEGV",		VAL(SIGSEGV,0),					S("Memory fault"),
184 #ifdef SIGSOUND
185 	"SOUND",	VAL(SIGSOUND,0),				S("Sound completed"),
186 #endif	/* SIGSOUND */
187 #ifdef SIGSTOP
188 	"STOP",		VAL(SIGSTOP,0),					S("Stopped (SIGSTOP)"),
189 #endif	/* SIGSTOP */
190 #ifdef SIGSYS
191 	"SYS",		VAL(SIGSYS,SH_SIGDONE),				S("Bad system call"),
192 #endif	/* SIGSYS */
193 #ifdef SIGSTKFLT
194 	"STKFLT",	VAL(SIGSTKFLT,SH_SIGDONE),			S("Stack Fault"),
195 #endif /* SIGSTKFLT */
196 	"TERM",		VAL(SIGTERM,SH_SIGDONE|SH_SIGINTERACTIVE),	S("Terminated"),
197 #ifdef SIGTHAW
198 	"THAW",		VAL(SIGTHAW,SH_SIGIGNORE),			S("Special signal used by CPR"),
199 #endif	/* SIGTHAW */
200 #ifdef SIGTINT
201 #   ifdef JOBS
202 	"TINT",		VAL(SIGTINT,0),					S("Interrupt"),
203 #   else
204 	"TINT",		VAL(SIGTINT,0),					"",
205 #   endif /* JOBS */
206 #endif	/* SIGTINT */
207 #ifdef SIGTRAP
208 	"TRAP",		VAL(SIGTRAP,SH_SIGDONE),			S("Trace/BPT trap"),
209 #endif	/* SIGTRAP */
210 #ifdef SIGTSTP
211 	"TSTP",		VAL(SIGTSTP,0),					S("Stopped"),
212 #endif	/* SIGTSTP */
213 #ifdef SIGTTIN
214 	"TTIN",		VAL(SIGTTIN,0),					S("Stopped (SIGTTIN)"),
215 #endif	/* SIGTTIN */
216 #ifdef SIGTTOU
217 	"TTOU",		VAL(SIGTTOU,0),					S("Stopped (SIGTTOU)"),
218 #endif	/* SIGTTOU */
219 #ifdef SIGURG
220 	"URG",		VAL(SIGURG,SH_SIGIGNORE),			S("Socket interrupt"),
221 #endif	/* SIGURG */
222 #ifdef SIGUSR1
223 	"USR1",		VAL(SIGUSR1,SH_SIGDONE),			S("User signal 1"),
224 #endif	/* SIGUSR1 */
225 #ifdef SIGUSR2
226 	"USR2",		VAL(SIGUSR2,SH_SIGDONE),	 		S("User signal 2"),
227 #endif	/* SIGUSR2 */
228 #ifdef SIGVIRT
229 	"VIRT",		VAL(SIGVIRT,0),					S("Virtual timer alarm"),
230 #endif	/* SIGVIRT */
231 #ifdef SIGVTALRM
232 	"VTALRM",	VAL(SIGVTALRM,SH_SIGDONE),			S("Virtual time alarm"),
233 #endif	/* SIGVTALRM */
234 #ifdef SIGWAITING
235 	"WAITING",	VAL(SIGWAITING,SH_SIGIGNORE),			S("All threads blocked"),
236 #endif	/* SIGWAITING */
237 #ifdef SIGWINCH
238 	"WINCH",	VAL(SIGWINCH,SH_SIGIGNORE),			S("Window size change"),
239 #endif	/* SIGWINCH */
240 #ifdef SIGXCPU
241 	"XCPU",		VAL(SIGXCPU,SH_SIGDONE|SH_SIGINTERACTIVE),	S("Exceeded CPU time limit"),
242 #endif	/* SIGXCPU */
243 #ifdef SIGXFSZ
244 	"XFSZ",		VAL(SIGXFSZ,SH_SIGDONE|SH_SIGINTERACTIVE),	S("Exceeded file size limit"),
245 #endif	/* SIGXFSZ */
246 #ifdef SIGXRES
247 	"XRES",		VAL(SIGXRES,SH_SIGDONE|SH_SIGINTERACTIVE),	S("Exceeded resource control"),
248 #endif	/* SIGRES */
249 	"",	0,	0
250 };
251