signal.d revision 333617
1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License").  You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 *
22 * Portions Copyright 2008 John Birrell jb@freebsd.org
23 * Portions Copyright 2018 Devin Teske dteske@freebsd.org
24 *
25 * $FreeBSD: stable/11/cddl/lib/libdtrace/signal.d 333617 2018-05-15 00:00:44Z dteske $
26 */
27
28inline int SIGHUP = 1;
29#pragma D binding "1.0" SIGHUP
30inline int SIGINT = 2;
31#pragma D binding "1.0" SIGINT
32inline int SIGQUIT = 3;
33#pragma D binding "1.0" SIGQUIT
34inline int SIGILL = 4;
35#pragma D binding "1.0" SIGILL
36inline int SIGTRAP = 5;
37#pragma D binding "1.0" SIGTRAP
38inline int SIGABRT = 6;
39#pragma D binding "1.0" SIGABRT
40inline int SIGEMT = 7;
41#pragma D binding "1.0" SIGEMT
42inline int SIGFPE = 8;
43#pragma D binding "1.0" SIGFPE
44inline int SIGKILL = 9;
45#pragma D binding "1.0" SIGKILL
46inline int SIGBUS = 10;
47#pragma D binding "1.0" SIGBUS
48inline int SIGSEGV = 11;
49#pragma D binding "1.0" SIGSEGV
50inline int SIGSYS = 12;
51#pragma D binding "1.0" SIGSYS
52inline int SIGPIPE = 13;
53#pragma D binding "1.0" SIGPIPE
54inline int SIGALRM = 14;
55#pragma D binding "1.0" SIGALRM
56inline int SIGTERM = 15;
57#pragma D binding "1.0" SIGTERM
58inline int SIGURG = 16;
59#pragma D binding "1.0" SIGURG
60inline int SIGSTOP = 17;
61#pragma D binding "1.0" SIGSTOP
62inline int SIGTSTP = 18;
63#pragma D binding "1.0" SIGTSTP
64inline int SIGCONT = 19;
65#pragma D binding "1.0" SIGCONT
66inline int SIGCHLD = 20;
67#pragma D binding "1.0" SIGCHLD
68inline int SIGTTIN = 21;
69#pragma D binding "1.0" SIGTTIN
70inline int SIGTTOU = 22;
71#pragma D binding "1.0" SIGTTOU
72inline int SIGIO = 23;
73#pragma D binding "1.0" SIGIO
74inline int SIGXCPU = 24;
75#pragma D binding "1.0" SIGXCPU
76inline int SIGXFSZ = 25;
77#pragma D binding "1.0" SIGXFSZ
78inline int SIGVTALRM = 26;
79#pragma D binding "1.0" SIGVTALRM
80inline int SIGPROF = 27;
81#pragma D binding "1.0" SIGPROF
82inline int SIGWINCH = 28;
83#pragma D binding "1.0" SIGWINCH
84inline int SIGINFO = 29;
85#pragma D binding "1.0" SIGINFO
86inline int SIGUSR1 = 30;
87#pragma D binding "1.0" SIGUSR1
88inline int SIGUSR2 = 31;
89#pragma D binding "1.0" SIGUSR2
90inline int SIGTHR = 32;
91#pragma D binding "1.13" SIGTHR
92inline int SIGLIBRT = 33;
93#pragma D binding "1.13" SIGLIBRT
94
95#pragma D binding "1.13" signal_string
96inline string signal_string[int signal] =
97	signal == SIGHUP ?	"SIGHUP" :
98	signal == SIGINT ?	"SIGINT" :
99	signal == SIGQUIT ?	"SIGQUIT" :
100	signal == SIGILL ?	"SIGILL":
101	signal == SIGTRAP ?	"SIGTRAP" :
102	signal == SIGABRT ?	"SIGABRT" :
103	signal == SIGEMT ?	"SIGEMT" :
104	signal == SIGFPE ?	"SIGFPE" :
105	signal == SIGKILL ?	"SIGKILL" :
106	signal == SIGBUS ?	"SIGBUS" :
107	signal == SIGSEGV ?	"SIGSEGV" :
108	signal == SIGSYS ?	"SIGSYS" :
109	signal == SIGPIPE ?	"SIGPIPE" :
110	signal == SIGALRM ?	"SIGALRM" :
111	signal == SIGTERM ?	"SIGTERM" :
112	signal == SIGURG ?	"SIGURG" :
113	signal == SIGSTOP ?	"SIGSTOP" :
114	signal == SIGTSTP ?	"SIGTSTP" :
115	signal == SIGCONT ?	"SIGCONT" :
116	signal == SIGCHLD ?	"SIGCHLD" :
117	signal == SIGTTIN ?	"SIGTTIN" :
118	signal == SIGTTOU ?	"SIGTTOU" :
119	signal == SIGIO ?	"SIGIO" :
120	signal == SIGXCPU ?	"SIGXCPU" :
121	signal == SIGXFSZ ?	"SIGXFSZ" :
122	signal == SIGVTALRM ?	"SIGVTALRM" :
123	signal == SIGPROF ?	"SIGPROF" :
124	signal == SIGWINCH ?	"SIGWINCH" :
125	signal == SIGINFO ?	"SIGINFO" :
126	signal == SIGUSR1 ?	"SIGUSR1" :
127	signal == SIGUSR2 ?	"SIGUSR2" :
128	signal == SIGTHR ?	"SIGTHR" :
129	signal == SIGLIBRT ?	"SIGLIBRT" :
130	"UNKNOWN";
131
132inline int CLD_EXITED = 1;
133#pragma D binding "1.0" CLD_EXITED
134inline int CLD_KILLED = 2;
135#pragma D binding "1.0" CLD_KILLED
136inline int CLD_DUMPED = 3;
137#pragma D binding "1.0" CLD_DUMPED
138inline int CLD_TRAPPED = 4;
139#pragma D binding "1.0" CLD_TRAPPED
140inline int CLD_STOPPED = 5;
141#pragma D binding "1.0" CLD_STOPPED
142inline int CLD_CONTINUED = 6;
143#pragma D binding "1.0" CLD_CONTINUED
144
145#pragma D binding "1.13" child_signal_string
146inline string child_signal_string[int child_signal] =
147	child_signal == CLD_EXITED ?	"child exited" :
148	child_signal == CLD_KILLED ?	"child terminated abnormally" :
149	child_signal == CLD_DUMPED ?	"child core dumped" :
150	child_signal == CLD_TRAPPED ?	"traced child trapped" :
151	child_signal == CLD_STOPPED ?	"child stopped" :
152	child_signal == CLD_CONTINUED ?	"stopped child continued" :
153	strjoin("unknown SIGCHLD code (", strjoin(lltostr(child_signal), ")"));
154