1 /* $Header: /src/pub/tcsh/sh.init.c,v 3.55 2005/01/18 20:43:31 christos Exp $ */
3 * sh.init.c: Function and signal tables
6 * Copyright (c) 1980, 1991 The Regents of the University of California.
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
12 * 1. Redistributions of source code must retain the above copyright
13 * notice, this list of conditions and the following disclaimer.
14 * 2. Redistributions in binary form must reproduce the above copyright
15 * notice, this list of conditions and the following disclaimer in the
16 * documentation and/or other materials provided with the distribution.
17 * 3. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35 RCSID("$Id: sh.init.c,v 3.55 2005/01/18 20:43:31 christos Exp $")
44 #define INF 0x7fffffff
46 struct biltins bfunc[] = {
47 { ":", dozip, 0, INF },
48 { "@", dolet, 0, INF },
49 { "alias", doalias, 0, INF },
51 { "aliases", doaliases, 0, 1, },
53 { "alloc", showall, 0, 1 },
55 { "att", doatt, 0, INF },
57 { "bg", dobg, 0, INF },
59 { "bind", dobind, 0, 2 },
61 { "bindkey", dobindkey, 0, 8 },
62 { "break", dobreak, 0, 0 },
63 { "breaksw", doswbrk, 0, 0 },
65 { "bs2cmd", dobs2cmd, 1, INF },
67 { "builtins", dobuiltins, 0, 0 },
69 { "bye", goodbye, 0, 0 },
71 { "case", dozip, 0, 1 },
72 { "cd", dochngd, 0, INF },
73 { "chdir", dochngd, 0, INF },
74 { "complete", docomplete, 0, INF },
75 { "continue", docontin, 0, 0 },
76 { "default", dozip, 0, 0 },
77 { "dirs", dodirs, 0, INF },
78 #if defined(_CRAY) && !defined(_CRAYMPP)
79 { "dmmode", dodmmode, 0, 1 },
80 #endif /* _CRAY && !_CRAYMPP */
81 { "echo", doecho, 0, INF },
82 { "echotc", doechotc, 0, INF },
83 { "else", doelse, 0, INF },
84 { "end", doend, 0, 0 },
85 { "endif", dozip, 0, 0 },
86 { "endsw", dozip, 0, 0 },
87 { "eval", doeval, 0, INF },
88 { "exec", execash, 1, INF },
89 { "exit", doexit, 0, INF },
90 { "fg", dofg, 0, INF },
91 { "filetest", dofiletest, 2, INF },
92 { "foreach", doforeach, 3, INF },
94 { "getspath", dogetspath, 0, 0 },
95 { "getxvers", dogetxvers, 0, 0 },
97 { "glob", doglob, 0, INF },
98 { "goto", dogoto, 1, 1 },
99 { "hashstat", hashstat, 0, 0 },
100 { "history", dohist, 0, 2 },
101 { "hup", dohup, 0, INF },
102 { "if", doif, 1, INF },
104 { "inlib", doinlib, 1, INF },
106 { "jobs", dojobs, 0, 1 },
107 { "kill", dokill, 1, INF },
109 { "limit", dolimit, 0, 3 },
110 #endif /* !HAVENOLIMIT */
112 { "linedit", doecho, 0, INF },
113 #endif /* OBSOLETE */
114 #if !defined(HAVENOUTMP) && !defined(KAI)
115 { "log", dolog, 0, 0 },
116 #endif /* !HAVENOUTMP && !KAI */
117 { "login", dologin, 0, 1 },
118 { "logout", dologout, 0, 0 },
119 { "ls-F", dolist, 0, INF },
121 { "migrate", domigrate, 1, INF },
124 { "newgrp", donewgrp, 0, 2 },
126 { "nice", donice, 0, INF },
127 { "nohup", donohup, 0, INF },
128 { "notify", donotify, 0, INF },
129 { "onintr", doonintr, 0, 2 },
130 { "popd", dopopd, 0, INF },
131 { "printenv", doprintenv, 0, 1 },
132 { "pushd", dopushd, 0, INF },
133 { "rehash", dohash, 0, 3 },
134 { "repeat", dorepeat, 2, INF },
136 { "rootnode", dorootnode, 1, 1 },
138 { "sched", dosched, 0, INF },
139 { "set", doset, 0, INF },
140 { "setenv", dosetenv, 0, 2 },
142 { "setpath", dosetpath, 0, INF },
145 { "setspath", dosetspath, 1, INF },
147 { "settc", dosettc, 2, 2 },
148 { "setty", dosetty, 0, INF },
150 { "setxvers", dosetxvers, 0, 1 },
152 { "shift", shift, 0, 1 },
153 { "source", dosource, 1, INF },
154 { "stop", dostop, 1, INF },
155 { "suspend", dosuspend, 0, 0 },
156 { "switch", doswitch, 1, INF },
157 { "telltc", dotelltc, 0, INF },
159 { "termname", dotermname, 0, 1 },
161 { "time", dotime, 0, INF },
163 { "ucb", doucb, 0, INF },
165 { "umask", doumask, 0, 1 },
166 { "unalias", unalias, 1, INF },
167 { "uncomplete", douncomplete, 1, INF },
168 { "unhash", dounhash, 0, 0 },
169 #if defined(masscomp) || defined(_CX_UX)
170 { "universe", douniverse, 0, INF },
171 #endif /* masscomp || _CX_UX */
173 { "unlimit", dounlimit, 0, INF },
174 #endif /* !HAVENOLIMIT */
175 { "unset", unset, 1, INF },
176 { "unsetenv", dounsetenv, 1, INF },
178 { "ver", dover, 0, INF },
180 { "wait", dowait, 0, 0 },
182 { "warp", dowarp, 0, 2 },
184 #if !defined(HAVENOUTMP) && defined(KAI)
185 { "watchlog", dolog, 0, 0 },
186 #endif /* !HAVENOUTMP && KAI */
187 { "where", dowhere, 1, INF },
188 { "which", dowhich, 1, INF },
189 { "while", dowhile, 1, INF }
191 int nbfunc = sizeof bfunc / sizeof *bfunc;
193 struct srch srchn[] = {
195 { "break", TC_BREAK },
196 { "breaksw", TC_BRKSW },
198 { "default", TC_DEFAULT },
201 { "endif", TC_ENDIF },
202 { "endsw", TC_ENDSW },
204 { "foreach", TC_FOREACH },
207 { "label", TC_LABEL },
209 { "switch", TC_SWITCH },
210 { "while", TC_WHILE }
212 int nsrchn = sizeof srchn / sizeof *srchn;
216 * Note: For some machines, (hpux eg.)
217 * NSIG = number of signals + 1...
218 * so we define 33 or 65 (POSIX) signals for
222 /* We define NUMSIG to avoid changing NSIG or MAXSIG */
223 #if defined(POSIX) && !defined(__CYGWIN__)
229 int nsig = NUMSIG - 1; /* This should be the number of real signals */
230 /* not counting signal 0 */
231 struct mesg mesg[NUMSIG]; /* Arrays start at [0] so we initialize from */
232 /* 0 to 32 or 64, the max real signal number */
241 for (i = 0; i < NUMSIG; i++) {
242 xfree((ptr_t) mesg[i].pname);
243 mesg[i].pname = NULL;
245 #endif /* NLS_CATALOGS */
247 #if defined(SIGNULL) || defined(DECOSF1)
250 # endif /* !SIGNULL */
251 if (mesg[SIGNULL].pname == NULL) {
252 mesg[SIGNULL].iname = "NULL";
253 mesg[SIGNULL].pname = CSAVS(2, 1, "Null signal");
255 #endif /* SIGNULL || DECOSF1 */
258 if (mesg[SIGHUP].pname == NULL) {
259 mesg[SIGHUP].iname = "HUP";
260 mesg[SIGHUP].pname = CSAVS(2, 2, "Hangup");
265 if (mesg[SIGINT].pname == NULL) {
266 mesg[SIGINT].iname = "INT";
267 mesg[SIGINT].pname = CSAVS(2, 3, "Interrupt");
272 if (mesg[SIGQUIT].pname == NULL) {
273 mesg[SIGQUIT].iname = "QUIT";
274 mesg[SIGQUIT].pname = CSAVS(2, 4, "Quit");
279 if (mesg[SIGILL].pname == NULL) {
280 mesg[SIGILL].iname = "ILL";
281 mesg[SIGILL].pname = CSAVS(2, 5, "Illegal instruction");
286 if (mesg[SIGTRAP].pname == NULL) {
287 mesg[SIGTRAP].iname = "TRAP";
288 mesg[SIGTRAP].pname = CSAVS(2, 6, "Trace/BPT trap");
293 if (mesg[SIGABRT].pname == NULL) {
294 mesg[SIGABRT].iname = "ABRT";
295 mesg[SIGABRT].pname = CSAVS(2, 7, "Abort");
300 if (mesg[SIGIOT].pname == NULL) {
301 mesg[SIGIOT].iname = "IOT";
302 mesg[SIGIOT].pname = CSAVS(2, 8, "IOT trap");
308 if (mesg[SIGDANGER].pname == NULL) {
309 mesg[SIGDANGER].iname = "DANGER";
310 mesg[SIGDANGER].pname = CSAVS(2, 9, "System Crash Imminent");
312 #endif /* SIGDANGER */
316 if (mesg[SIGERR].pname == NULL) {
317 mesg[SIGERR].iname = "ERR";
318 mesg[SIGERR].pname = CSAVS(2, 10, "Error exit");
323 if (mesg[SIGEMT].pname == NULL) {
324 mesg[SIGEMT].iname = "EMT";
325 mesg[SIGEMT].pname = CSAVS(2, 11, "EMT trap");
330 if (mesg[SIGFPE].pname == NULL) {
331 mesg[SIGFPE].iname = "FPE";
332 mesg[SIGFPE].pname = CSAVS(2, 12, "Floating exception");
337 if (mesg[SIGKILL].pname == NULL) {
338 mesg[SIGKILL].iname = "KILL";
339 mesg[SIGKILL].pname = CSAVS(2, 13, "Killed");
344 if (mesg[SIGUSR1].pname == NULL) {
345 mesg[SIGUSR1].iname = "USR1";
346 mesg[SIGUSR1].pname = CSAVS(2, 14, "User signal 1");
351 if (mesg[SIGUSR2].pname == NULL) {
352 mesg[SIGUSR2].iname = "USR2";
353 mesg[SIGUSR2].pname = CSAVS(2, 15, "User signal 2");
358 if (mesg[SIGSEGV].pname == NULL) {
359 mesg[SIGSEGV].iname = "SEGV";
360 mesg[SIGSEGV].pname = CSAVS(2, 16, "Segmentation fault");
365 if (mesg[SIGBUS].pname == NULL) {
366 mesg[SIGBUS].iname = "BUS";
367 mesg[SIGBUS].pname = CSAVS(2, 17, "Bus error");
372 /* _CRAY || IBMAIX */
373 if (mesg[SIGPRE].pname == NULL) {
374 mesg[SIGPRE].iname = "PRE";
375 mesg[SIGPRE].pname = CSAVS(2, 18, "Program range error");
381 if (mesg[SIGORE].pname == NULL) {
382 mesg[SIGORE].iname = "ORE";
383 mesg[SIGORE].pname = CSAVS(2, 19, "Operand range error");
388 if (mesg[SIGSYS].pname == NULL) {
389 mesg[SIGSYS].iname = "SYS";
390 mesg[SIGSYS].pname = CSAVS(2, 20, "Bad system call");
395 if (mesg[SIGPIPE].pname == NULL) {
396 mesg[SIGPIPE].iname = "PIPE";
397 mesg[SIGPIPE].pname = CSAVS(2, 21, "Broken pipe");
402 if (mesg[SIGALRM].pname == NULL) {
403 mesg[SIGALRM].iname = "ALRM";
404 mesg[SIGALRM].pname = CSAVS(2, 22, "Alarm clock");
409 if (mesg[SIGTERM].pname == NULL) {
410 mesg[SIGTERM].iname = "TERM";
411 mesg[SIGTERM].pname = CSAVS(2, 23, "Terminated");
415 /* SIGCLD vs SIGCHLD */
416 #if !defined(SIGCHLD) || defined(SOLARIS2) || defined(apollo) || defined(__EMX__)
417 /* If we don't define SIGCHLD, or our OS prefers SIGCLD to SIGCHLD, */
418 /* check for SIGCLD */
420 if (mesg[SIGCLD].pname == NULL) {
421 mesg[SIGCLD].iname = "CLD";
423 mesg[SIGCLD].pname = CSAVS(2, 24, "Child status change");
424 # else /* !BSDJOBS */
425 mesg[SIGCLD].pname = CSAVS(2, 25, "Death of child");
426 # endif /* BSDJOBS */
429 #else /* !(!SIGCHLD || SOLARIS2 || apollo || __EMX__) */
430 /* We probably define SIGCHLD */
432 if (mesg[SIGCHLD].pname == NULL) {
433 mesg[SIGCHLD].iname = "CHLD";
435 mesg[SIGCHLD].pname = CSAVS(2, 27, "Child stopped or exited");
436 # else /* !BSDJOBS */
437 mesg[SIGCHLD].pname = CSAVS(2, 28, "Child exited");
438 # endif /* BSDJOBS */
440 # endif /* SIGCHLD */
441 #endif /* !SIGCHLD || SOLARIS2 || apollo || __EMX__ */
445 if (mesg[SIGAPOLLO].pname == NULL) {
446 mesg[SIGAPOLLO].iname = "APOLLO";
447 mesg[SIGAPOLLO].pname = CSAVS(2, 26, "Apollo-specific fault");
449 #endif /* SIGAPOLLO */
452 if (mesg[SIGPWR].pname == NULL) {
453 mesg[SIGPWR].iname = "PWR";
454 mesg[SIGPWR].pname = CSAVS(2, 29, "Power failure");
459 if (mesg[SIGLOST].pname == NULL) {
460 mesg[SIGLOST].iname = "LOST";
461 mesg[SIGLOST].pname = CSAVS(2, 30, "Resource Lost");
467 if (mesg[SIGBREAK].pname == NULL) {
468 mesg[SIGBREAK].iname = "BREAK";
469 mesg[SIGBREAK].pname = CSAVS(2, 31, "Break (Ctrl-Break)");
471 #endif /* SIGBREAK */
474 # if !defined(SIGPOLL) || SIGPOLL != SIGIO
475 if (mesg[SIGIO].pname == NULL) {
476 mesg[SIGIO].iname = "IO";
478 mesg[SIGIO].pname = CSAVS(2, 32, "Input/output possible signal");
480 mesg[SIGIO].pname = CSAVS(2, 33, "Asynchronous I/O (select)");
483 # endif /* !SIGPOLL || SIGPOLL != SIGIO */
487 if (mesg[SIGURG].pname == NULL) {
488 mesg[SIGURG].iname = "URG";
489 mesg[SIGURG].pname = CSAVS(2, 34, "Urgent condition on I/O channel");
495 if (mesg[SIGMT].pname == NULL) {
496 mesg[SIGMT].iname = "MT";
497 mesg[SIGMT].pname = CSAVS(2, 35, "Multitasking wake-up");
503 if (mesg[SIGMTKILL].pname == NULL) {
504 mesg[SIGMTKILL].iname = "MTKILL";
505 mesg[SIGMTKILL].pname = CSAVS(2, 36, "Multitasking kill");
507 #endif /* SIGMTKILL */
511 if (mesg[SIGBUFIO].pname == NULL) {
512 mesg[SIGBUFIO].iname = "BUFIO";
513 mesg[SIGBUFIO].pname = CSAVS(2, 37,
514 "Fortran asynchronous I/O completion");
516 #endif /* SIGBUFIO */
520 if (mesg[SIGRECOVERY].pname == NULL) {
521 mesg[SIGRECOVERY].iname = "RECOVERY";
522 mesg[SIGRECOVERY].pname = CSAVS(2, 38, "Recovery");
524 #endif /* SIGRECOVERY */
528 if (mesg[SIGUME].pname == NULL) {
529 mesg[SIGUME].iname = "UME";
530 mesg[SIGUME].pname = CSAVS(2, 39, "Uncorrectable memory error");
536 if (mesg[SIGCPULIM].pname == NULL) {
537 mesg[SIGCPULIM].iname = "CPULIM";
538 mesg[SIGCPULIM].pname = CSAVS(2, 40, "CPU time limit exceeded");
540 #endif /* SIGCPULIM */
544 if (mesg[SIGSHUTDN].pname == NULL) {
545 mesg[SIGSHUTDN].iname = "SHUTDN";
546 mesg[SIGSHUTDN].pname = CSAVS(2, 41, "System shutdown imminent");
548 #endif /* SIGSHUTDN */
552 if (mesg[SIGNOWAK].pname == NULL) {
553 mesg[SIGNOWAK].iname = "NOWAK";
554 mesg[SIGNOWAK].pname = CSAVS(2, 42,
555 "Micro-tasking group-no wakeup flag set");
557 #endif /* SIGNOWAK */
561 if (mesg[SIGTHERR].pname == NULL) {
562 mesg[SIGTHERR].iname = "THERR";
563 mesg[SIGTHERR].pname = CSAVS(2, 43,
564 "Thread error - (use cord -T for detailed info)");
566 #endif /* SIGTHERR */
570 if (mesg[SIGRPE].pname == NULL) {
571 mesg[SIGRPE].pname = CSAVS(2, 44, "CRAY Y-MP register parity error");
572 mesg[SIGRPE].iname = "RPE";
577 if (mesg[SIGINFO].pname == NULL) {
578 mesg[SIGINFO].iname = "INFO";
579 mesg[SIGINFO].pname = CSAVS(2, 45, "Information request");
584 if (mesg[SIGSTOP].pname == NULL) {
585 mesg[SIGSTOP].iname = "STOP";
587 mesg[SIGSTOP].pname = CSAVS(2, 46, "Suspended (signal)");
588 # else /* !SUSPENDED */
589 mesg[SIGSTOP].pname = CSAVS(2, 47, "Stopped (signal)");
590 # endif /* SUSPENDED */
595 if (mesg[SIGTSTP].pname == NULL) {
596 mesg[SIGTSTP].iname = "TSTP";
598 mesg[SIGTSTP].pname = CSAVS(2, 48, "Suspended");
599 # else /* !SUSPENDED */
600 mesg[SIGTSTP].pname = CSAVS(2, 49, "Stopped");
601 # endif /* SUSPENDED */
606 if (mesg[SIGCONT].pname == NULL) {
607 mesg[SIGCONT].iname = "CONT";
608 mesg[SIGCONT].pname = CSAVS(2, 50, "Continued");
613 if (mesg[SIGTTIN].pname == NULL) {
614 mesg[SIGTTIN].iname = "TTIN";
616 mesg[SIGTTIN].pname = CSAVS(2, 51, "Suspended (tty input)");
617 # else /* !SUSPENDED */
618 mesg[SIGTTIN].pname = CSAVS(2, 52, "Stopped (tty input)");
619 # endif /* SUSPENDED */
624 if (mesg[SIGTTOU].pname == NULL) {
625 mesg[SIGTTOU].iname = "TTOU";
627 mesg[SIGTTOU].pname = CSAVS(2, 53, "Suspended (tty output)");
628 # else /* SUSPENDED */
629 mesg[SIGTTOU].pname = CSAVS(2, 54, "Stopped (tty output)");
630 # endif /* SUSPENDED */
636 if (mesg[SIGWIND].pname == NULL) {
637 mesg[SIGWIND].iname = "WIND";
638 mesg[SIGWIND].pname = CSAVS(2, 55, "Window status changed");
643 if (mesg[SIGWINDOW].pname == NULL) {
644 mesg[SIGWINDOW].iname = "WINDOW";
645 mesg[SIGWINDOW].pname = CSAVS(2, 56, "Window size changed");
647 #endif /* SIGWINDOW */
650 if (mesg[SIGWINCH].pname == NULL) {
651 mesg[SIGWINCH].iname = "WINCH";
652 mesg[SIGWINCH].pname = CSAVS(2, 56, "Window size changed");
654 #endif /* SIGWINCH */
658 if (mesg[SIGPHONE].pname == NULL) {
659 mesg[SIGPHONE].iname = "PHONE";
660 mesg[SIGPHONE].pname = CSAVS(2, 57, "Phone status changed");
662 # endif /* SIGPHONE */
665 if (mesg[SIGXCPU].pname == NULL) {
666 mesg[SIGXCPU].iname = "XCPU";
667 mesg[SIGXCPU].pname = CSAVS(2, 58, "Cputime limit exceeded");
672 if (mesg[SIGXFSZ].pname == NULL) {
673 mesg[SIGXFSZ].iname = "XFSZ";
674 mesg[SIGXFSZ].pname = CSAVS(2, 59, "Filesize limit exceeded");
679 if (mesg[SIGVTALRM].pname == NULL) {
680 mesg[SIGVTALRM].iname = "VTALRM";
681 mesg[SIGVTALRM].pname = CSAVS(2, 60, "Virtual time alarm");
683 #endif /* SIGVTALRM */
686 if (mesg[SIGPROF].pname == NULL) {
687 mesg[SIGPROF].iname = "PROF";
688 mesg[SIGPROF].pname = CSAVS(2, 61, "Profiling time alarm");
694 if (mesg[SIGDIL].pname == NULL) {
695 mesg[SIGDIL].iname = "DIL";
696 mesg[SIGDIL].pname = CSAVS(2, 62, "DIL signal");
701 if (mesg[SIGPOLL].pname == NULL) {
702 mesg[SIGPOLL].iname = "POLL";
703 mesg[SIGPOLL].pname = CSAVS(2, 63, "Pollable event occured");
709 if (mesg[SIGWAITING].pname == NULL) {
710 mesg[SIGWAITING].iname = "WAITING";
711 mesg[SIGWAITING].pname = CSAVS(2, 64, "Process's lwps are blocked");
713 #endif /* SIGWAITING */
717 if (mesg[SIGLWP].pname == NULL) {
718 mesg[SIGLWP].iname = "LWP";
719 mesg[SIGLWP].pname = CSAVS(2, 65, "Special LWP signal");
725 if (mesg[SIGFREEZE].pname == NULL) {
726 mesg[SIGFREEZE].iname = "FREEZE";
727 mesg[SIGFREEZE].pname = CSAVS(2, 66, "Special CPR Signal");
729 #endif /* SIGFREEZE */
733 if (mesg[SIGTHAW].pname == NULL) {
734 mesg[SIGTHAW].iname = "THAW";
735 mesg[SIGTHAW].pname = CSAVS(2, 67, "Special CPR Signal");
741 if (mesg[SIGCANCEL].pname == NULL) {
742 mesg[SIGCANCEL].iname = "CANCEL";
743 mesg[SIGCANCEL].pname = CSAVS(2, 109,
744 "Thread cancellation signal used by libthread");
746 #endif /* SIGCANCEL */
749 * Careful, some OS's (HP/UX 10.0) define these as -1
753 * Cannot do this at compile time; Solaris2 uses _sysconf for these
755 if (SIGRTMIN > 0 && SIGRTMIN < NUMSIG) {
756 if (mesg[SIGRTMIN].pname == NULL) {
757 mesg[SIGRTMIN].iname = "RTMIN";
758 mesg[SIGRTMIN].pname = CSAVS(2, 68, "First Realtime Signal");
761 if (mesg[SIGRTMIN+1].pname == NULL) {
762 mesg[SIGRTMIN+1].iname = "RTMIN+1";
763 mesg[SIGRTMIN+1].pname = CSAVS(2, 69, "Second Realtime Signal");
766 if (mesg[SIGRTMIN+2].pname == NULL) {
767 mesg[SIGRTMIN+2].iname = "RTMIN+2";
768 mesg[SIGRTMIN+2].pname = CSAVS(2, 70, "Third Realtime Signal");
771 if (mesg[SIGRTMIN+3].pname == NULL) {
772 mesg[SIGRTMIN+3].iname = "RTMIN+3";
773 mesg[SIGRTMIN+3].pname = CSAVS(2, 71, "Fourth Realtime Signal");
776 #endif /* SIGRTMIN */
780 * Cannot do this at compile time; Solaris2 uses _sysconf for these
782 if (SIGRTMAX > 0 && SIGRTMAX < NUMSIG) {
783 if (mesg[SIGRTMAX-3].pname == NULL) {
784 mesg[SIGRTMAX-3].iname = "RTMAX-3";
785 mesg[SIGRTMAX-3].pname = CSAVS(2, 72,
786 "Fourth Last Realtime Signal");
789 if (mesg[SIGRTMAX-2].pname == NULL) {
790 mesg[SIGRTMAX-2].iname = "RTMAX-2";
791 mesg[SIGRTMAX-2].pname = CSAVS(2, 73,
792 "Third Last Realtime Signal");
795 if (mesg[SIGRTMAX-1].pname == NULL) {
796 mesg[SIGRTMAX-1].iname = "RTMAX-1";
797 mesg[SIGRTMAX-1].pname = CSAVS(2, 74,
798 "Second Last Realtime Signal");
801 if (mesg[SIGRTMAX].pname == NULL) {
802 mesg[SIGRTMAX].iname = "RTMAX";
803 mesg[SIGRTMAX].pname = CSAVS(2, 75,
804 "Last Realtime Signal");
807 #endif /* SIGRTMAX */
812 if (mesg[SIGAIO].pname == NULL) {
813 mesg[SIGAIO].iname = "AIO";
814 mesg[SIGAIO].pname = CSAVS(2, 76, "LAN Asyncronous I/O");
820 if (mesg[SIGPTY].pname == NULL) {
821 mesg[SIGPTY].iname = "PTY";
822 mesg[SIGPTY].pname = CSAVS(2, 77, "PTY read/write availability");
828 if (mesg[SIGIOINT].pname == NULL) {
829 mesg[SIGIOINT].iname = "IOINT";
830 mesg[SIGIOINT].pname = CSAVS(2, 78, "I/O intervention required");
832 #endif /* SIGIOINT */
836 if (mesg[SIGGRANT].pname == NULL) {
837 mesg[SIGGRANT].iname = "GRANT";
838 mesg[SIGGRANT].pname = CSAVS(2, 79, "HFT monitor mode granted");
840 #endif /* SIGGRANT */
844 if (mesg[SIGRETRACT].pname == NULL) {
845 mesg[SIGRETRACT].iname = "RETRACT";
846 mesg[SIGRETRACT].pname = CSAVS(2, 80,
847 "HFT monitor mode should be relinguished");
849 #endif /* SIGRETRACT */
853 if (mesg[SIGSOUND].pname == NULL) {
854 mesg[SIGSOUND].iname = "SOUND";
855 mesg[SIGSOUND].pname = CSAVS(2, 81, "HFT sound control has completed");
857 #endif /* SIGSOUND */
861 if (mesg[SIGSMSG].pname == NULL) {
862 mesg[SIGSMSG].iname = "SMSG";
863 mesg[SIGSMSG].pname = CSAVS(2, 82, "Data in HFT ring buffer");
869 if (mesg[SIGMIGRATE].pname == NULL) {
870 mesg[SIGMIGRATE].iname = "MIGRATE";
871 mesg[SIGMIGRATE].pname = CSAVS(2, 83, "Migrate process");
873 #endif /* SIGMIGRATE */
877 if (mesg[SIGSAK].pname == NULL) {
878 mesg[SIGSAK].iname = "SAK";
879 mesg[SIGSAK].pname = CSAVS(2, 84, "Secure attention key");
885 if (mesg[SIGRESCHED].pname == NULL) {
886 mesg[SIGRESCHED].iname = "RESCHED";
887 mesg[SIGRESCHED].pname = CSAVS(2, 85, "Reschedule");
889 #endif /* SIGRESCHED */
893 if (mesg[SIGDEBUG].pname == NULL) {
894 mesg[SIGDEBUG].iname = "DEBUG";
895 mesg[SIGDEBUG].pname = CSAVS(2, 86, "Signaling SS$_DEBUG");
897 #endif /* SIGDEBUG */
901 if (mesg[SIGPRIO].pname == NULL) {
902 mesg[SIGPRIO].iname = "PRIO";
903 mesg[SIGPRIO].pname = CSAVS(2, 87, "Priority changed");
909 if (mesg[SIGDLK].pname == NULL) {
910 mesg[SIGDLK].iname = "DLK";
911 mesg[SIGDLK].pname = CSAVS(2, 88, "True deadlock detected");
917 if (mesg[SIGTINT].pname == NULL) {
918 mesg[SIGTINT].iname = "TINT";
919 mesg[SIGTINT].pname = CSAVS(2, 89, "New input character");
924 if (mesg[SIGSTKFLT].pname == NULL) {
925 mesg[SIGSTKFLT].iname = "STKFLT";
926 mesg[SIGSTKFLT].pname = CSAVS(2, 90, "Stack limit exceeded");
928 #endif /* SIGSTKFLT */
931 if (mesg[SIGUNUSED].pname == NULL) {
932 mesg[SIGUNUSED].iname = "UNUSED";
933 mesg[SIGUNUSED].pname = CSAVS(2, 91, "Unused signal");
935 #endif /* SIGUNUSED */
939 if (mesg[SIGOVLY].pname == NULL) {
940 mesg[SIGOVLY].iname = "OVLY";
941 mesg[SIGOVLY].pname = CSAVS(2, 92, "LM overlay");
947 if (mesg[SIGFRZ].pname == NULL) {
948 mesg[SIGFRZ].iname = "FRZ";
949 mesg[SIGFRZ].pname = CSAVS(2, 93, "system freeze");
955 if (mesg[SIGDFRZ].pname == NULL) {
956 mesg[SIGDFRZ].iname = "DFRZ";
957 mesg[SIGDFRZ].pname = CSAVS(2, 94, "system defreeze");
963 if (mesg[SIGDEAD].pname == NULL) {
964 mesg[SIGDEAD].iname = "DEAD";
965 mesg[SIGDEAD].pname = CSAVS(2, 95, "dead lock");
971 if (mesg[SIGXMEM].pname == NULL) {
972 mesg[SIGXMEM].iname = "XMEM";
973 mesg[SIGXMEM].pname = CSAVS(2, 96, "exceeded memory size limit");
979 if (mesg[SIGXDSZ].pname == NULL) {
980 mesg[SIGXDSZ].iname = "XDSZ";
981 mesg[SIGXDSZ].pname = CSAVS(2, 97, "exceeded data size limit");
987 if (mesg[SIGMEM32].pname == NULL) {
988 mesg[SIGMEM32].iname = "MEM32";
989 mesg[SIGMEM32].pname = CSAVS(2, 98, "exceeded memory size limit of 32KB");
991 #endif /* SIGMEM32 */
995 if (mesg[SIGNMEM].pname == NULL) {
996 mesg[SIGNMEM].iname = "NMEM";
997 mesg[SIGNMEM].pname = CSAVS(2, 99, "exce error for no memory");
1003 if (mesg[SIGCHKP].pname == NULL) {
1004 mesg[SIGCHKP].iname = "CHKP";
1005 mesg[SIGCHKP].pname = CSAVS(2, 100, "check point start");
1007 #endif /* SIGCHKP */
1012 if (mesg[SIGKCHKP].pname == NULL) {
1013 mesg[SIGKCHKP].iname = "KCHKP";
1014 mesg[SIGKCHKP].pname = CSAVS(2, 101, "check point start of kernel");
1017 #endif /* SIGKCHKP */
1021 if (mesg[SIGRSTA].pname == NULL) {
1022 mesg[SIGRSTA].iname = "RSTA";
1023 mesg[SIGRSTA].pname = CSAVS(2, 102, "restart start");
1025 #endif /* SIGRSTA */
1030 if (mesg[SIGKRSTA].pname == NULL) {
1031 mesg[SIGKRSTA].iname = "KRSTA";
1032 mesg[SIGKRSTA].pname = CSAVS(2, 103, "restart of kernel");
1035 #endif /* SIGKRSTA */
1039 if (mesg[SIGXXMU].pname == NULL) {
1040 mesg[SIGXXMU].iname = "XXMU";
1041 mesg[SIGXXMU].pname = CSAVS(2, 104, "exeeded XMU size limit");
1043 #endif /* SIGXXMU */
1047 if (mesg[SIGXRLG0].pname == NULL) {
1048 mesg[SIGXRLG0].iname = "XRLG0";
1049 mesg[SIGXRLG0].pname = CSAVS(2, 105, "exeeded RLG0 limit");
1051 #endif /* SIGXRLG0 */
1055 if (mesg[SIGXRLG1].pname == NULL) {
1056 mesg[SIGXRLG1].iname = "XRLG1";
1057 mesg[SIGXRLG1].pname = CSAVS(2, 106, "exeeded RLG1 limit");
1059 #endif /* SIGXRLG1 */
1063 if (mesg[SIGXRLG2].pname == NULL) {
1064 mesg[SIGXRLG2].iname = "XRLG2";
1065 mesg[SIGXRLG2].pname = CSAVS(2, 107, "exeeded RLG2 limit");
1067 #endif /* SIGXRLG2 */
1071 if (mesg[SIGXRLG3].pname == NULL) {
1072 mesg[SIGXRLG3].iname = "XRLG3";
1073 mesg[SIGXRLG3].pname = CSAVS(2, 108, "exeeded RLG3 limit");
1075 #endif /* SIGXRLG3 */