sdt_subr.c revision 5647:738702b10756
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 (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21/*
22 * Copyright 2007 Sun Microsystems, Inc.  All rights reserved.
23 * Use is subject to license terms.
24 */
25
26#pragma ident	"%Z%%M%	%I%	%E% SMI"
27
28#include <sys/sdt_impl.h>
29
30static dtrace_pattr_t vtrace_attr = {
31{ DTRACE_STABILITY_UNSTABLE, DTRACE_STABILITY_UNSTABLE, DTRACE_CLASS_ISA },
32{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
33{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
34{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
35{ DTRACE_STABILITY_UNSTABLE, DTRACE_STABILITY_UNSTABLE, DTRACE_CLASS_ISA },
36};
37
38static dtrace_pattr_t info_attr = {
39{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
40{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
41{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
42{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
43{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_ISA },
44};
45
46static dtrace_pattr_t fpu_attr = {
47{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
48{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
49{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
50{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_CPU },
51{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_ISA },
52};
53
54static dtrace_pattr_t fsinfo_attr = {
55{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
56{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
57{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
58{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
59{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
60};
61
62static dtrace_pattr_t nfsv4_attr = {
63{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
64{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
65{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
66{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
67{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
68};
69
70static dtrace_pattr_t stab_attr = {
71{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
72{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
73{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
74{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
75{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
76};
77
78static dtrace_pattr_t sdt_attr = {
79{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
80{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
81{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
82{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_ISA },
83{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_ISA },
84};
85
86static dtrace_pattr_t xpv_attr = {
87{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_PLATFORM },
88{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
89{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_UNKNOWN },
90{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_PLATFORM },
91{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_PLATFORM },
92};
93
94sdt_provider_t sdt_providers[] = {
95	{ "vtrace", "__vtrace_", &vtrace_attr, 0 },
96	{ "sysinfo", "__cpu_sysinfo_", &info_attr, 0 },
97	{ "vminfo", "__cpu_vminfo_", &info_attr, 0 },
98	{ "fpuinfo", "__fpuinfo_", &fpu_attr, 0 },
99	{ "sched", "__sched_", &stab_attr, 0 },
100	{ "proc", "__proc_", &stab_attr, 0 },
101	{ "io", "__io_", &stab_attr, 0 },
102	{ "mib", "__mib_", &stab_attr, 0 },
103	{ "fsinfo", "__fsinfo_", &fsinfo_attr, 0 },
104	{ "nfsv4", "__nfsv4_", &nfsv4_attr, 0 },
105	{ "xpv", "__xpv_", &xpv_attr, 0 },
106	{ "sysevent", "__sysevent_", &stab_attr, 0 },
107	{ "sdt", NULL, &sdt_attr, 0 },
108	{ NULL }
109};
110
111sdt_argdesc_t sdt_args[] = {
112	{ "sched", "wakeup", 0, 0, "kthread_t *", "lwpsinfo_t *" },
113	{ "sched", "wakeup", 1, 0, "kthread_t *", "psinfo_t *" },
114	{ "sched", "dequeue", 0, 0, "kthread_t *", "lwpsinfo_t *" },
115	{ "sched", "dequeue", 1, 0, "kthread_t *", "psinfo_t *" },
116	{ "sched", "dequeue", 2, 1, "disp_t *", "cpuinfo_t *" },
117	{ "sched", "enqueue", 0, 0, "kthread_t *", "lwpsinfo_t *" },
118	{ "sched", "enqueue", 1, 0, "kthread_t *", "psinfo_t *" },
119	{ "sched", "enqueue", 2, 1, "disp_t *", "cpuinfo_t *" },
120	{ "sched", "enqueue", 3, 2, "int" },
121	{ "sched", "off-cpu", 0, 0, "kthread_t *", "lwpsinfo_t *" },
122	{ "sched", "off-cpu", 1, 0, "kthread_t *", "psinfo_t *" },
123	{ "sched", "tick", 0, 0, "kthread_t *", "lwpsinfo_t *" },
124	{ "sched", "tick", 1, 0, "kthread_t *", "psinfo_t *" },
125	{ "sched", "change-pri", 0, 0, "kthread_t *", "lwpsinfo_t *" },
126	{ "sched", "change-pri", 1, 0, "kthread_t *", "psinfo_t *" },
127	{ "sched", "change-pri", 2, 1, "pri_t" },
128	{ "sched", "schedctl-nopreempt", 0, 0, "kthread_t *", "lwpsinfo_t *" },
129	{ "sched", "schedctl-nopreempt", 1, 0, "kthread_t *", "psinfo_t *" },
130	{ "sched", "schedctl-nopreempt", 2, 1, "int" },
131	{ "sched", "schedctl-preempt", 0, 0, "kthread_t *", "lwpsinfo_t *" },
132	{ "sched", "schedctl-preempt", 1, 0, "kthread_t *", "psinfo_t *" },
133	{ "sched", "schedctl-yield", 0, 0, "int" },
134	{ "sched", "surrender", 0, 0, "kthread_t *", "lwpsinfo_t *" },
135	{ "sched", "surrender", 1, 0, "kthread_t *", "psinfo_t *" },
136	{ "sched", "cpucaps-sleep", 0, 0, "kthread_t *", "lwpsinfo_t *" },
137	{ "sched", "cpucaps-sleep", 1, 0, "kthread_t *", "psinfo_t *" },
138	{ "sched", "cpucaps-wakeup", 0, 0, "kthread_t *", "lwpsinfo_t *" },
139	{ "sched", "cpucaps-wakeup", 1, 0, "kthread_t *", "psinfo_t *" },
140
141	{ "proc", "create", 0, 0, "proc_t *", "psinfo_t *" },
142	{ "proc", "exec", 0, 0, "string" },
143	{ "proc", "exec-failure", 0, 0, "int" },
144	{ "proc", "exit", 0, 0, "int" },
145	{ "proc", "fault", 0, 0, "int" },
146	{ "proc", "fault", 1, 1, "siginfo_t *" },
147	{ "proc", "lwp-create", 0, 0, "kthread_t *", "lwpsinfo_t *" },
148	{ "proc", "lwp-create", 1, 0, "kthread_t *", "psinfo_t *" },
149	{ "proc", "signal-clear", 0, 0, "int" },
150	{ "proc", "signal-clear", 1, 1, "siginfo_t *" },
151	{ "proc", "signal-discard", 0, 0, "kthread_t *", "lwpsinfo_t *" },
152	{ "proc", "signal-discard", 1, 1, "proc_t *", "psinfo_t *" },
153	{ "proc", "signal-discard", 2, 2, "int" },
154	{ "proc", "signal-handle", 0, 0, "int" },
155	{ "proc", "signal-handle", 1, 1, "siginfo_t *" },
156	{ "proc", "signal-handle", 2, 2, "void (*)(void)" },
157	{ "proc", "signal-send", 0, 0, "kthread_t *", "lwpsinfo_t *" },
158	{ "proc", "signal-send", 1, 0, "kthread_t *", "psinfo_t *" },
159	{ "proc", "signal-send", 2, 1, "int" },
160
161	{ "io", "start", 0, 0, "buf_t *", "bufinfo_t *" },
162	{ "io", "start", 1, 0, "buf_t *", "devinfo_t *" },
163	{ "io", "start", 2, 0, "buf_t *", "fileinfo_t *" },
164	{ "io", "done", 0, 0, "buf_t *", "bufinfo_t *" },
165	{ "io", "done", 1, 0, "buf_t *", "devinfo_t *" },
166	{ "io", "done", 2, 0, "buf_t *", "fileinfo_t *" },
167	{ "io", "wait-start", 0, 0, "buf_t *", "bufinfo_t *" },
168	{ "io", "wait-start", 1, 0, "buf_t *", "devinfo_t *" },
169	{ "io", "wait-start", 2, 0, "buf_t *", "fileinfo_t *" },
170	{ "io", "wait-done", 0, 0, "buf_t *", "bufinfo_t *" },
171	{ "io", "wait-done", 1, 0, "buf_t *", "devinfo_t *" },
172	{ "io", "wait-done", 2, 0, "buf_t *", "fileinfo_t *" },
173
174	{ "mib", NULL, 0, 0, "int" },
175
176	{ "fsinfo", NULL, 0, 0, "vnode_t *", "fileinfo_t *" },
177	{ "fsinfo", NULL, 1, 1, "int", "int" },
178
179	{ "nfsv4", "null-start", 0, 0, "struct svc_req *", "conninfo_t *" },
180	{ "nfsv4", "null-done", 0, 0, "struct svc_req *", "conninfo_t *" },
181	{ "nfsv4", "compound-start", 0, 0, "struct compound_state *",
182	    "conninfo_t *" },
183	{ "nfsv4", "compound-start", 1, 0, "struct compound_state *",
184	    "nfsv4opinfo_t *" },
185	{ "nfsv4", "compound-start", 2, 1, "COMPOUND4args *" },
186	{ "nfsv4", "compound-done", 0, 0, "struct compound_state *",
187	    "conninfo_t *" },
188	{ "nfsv4", "compound-done", 1, 0, "struct compound_state *",
189	    "nfsv4opinfo_t *" },
190	{ "nfsv4", "compound-done", 2, 1, "COMPOUND4res *" },
191	{ "nfsv4", "op-access-start", 0, 0, "struct compound_state *",
192	    "conninfo_t *"},
193	{ "nfsv4", "op-access-start", 1, 0, "struct compound_state *",
194	    "nfsv4opinfo_t *" },
195	{ "nfsv4", "op-access-start", 2, 1, "ACCESS4args *" },
196	{ "nfsv4", "op-access-done", 0, 0, "struct compound_state *",
197	    "conninfo_t *" },
198	{ "nfsv4", "op-access-done", 1, 0, "struct compound_state *",
199	    "nfsv4opinfo_t *" },
200	{ "nfsv4", "op-access-done", 2, 1, "ACCESS4res *" },
201	{ "nfsv4", "op-close-start", 0, 0, "struct compound_state *",
202	    "conninfo_t *" },
203	{ "nfsv4", "op-close-start", 1, 0, "struct compound_state *",
204	    "nfsv4opinfo_t *" },
205	{ "nfsv4", "op-close-start", 2, 1, "CLOSE4args *" },
206	{ "nfsv4", "op-close-done", 0, 0, "struct compound_state *",
207	    "conninfo_t *" },
208	{ "nfsv4", "op-close-done", 1, 0, "struct compound_state *",
209	    "nfsv4opinfo_t *" },
210	{ "nfsv4", "op-close-done", 2, 1, "CLOSE4res *" },
211	{ "nfsv4", "op-commit-start", 0, 0, "struct compound_state *",
212	    "conninfo_t *" },
213	{ "nfsv4", "op-commit-start", 1, 0, "struct compound_state *",
214	    "nfsv4opinfo_t *" },
215	{ "nfsv4", "op-commit-start", 2, 1, "COMMIT4args *" },
216	{ "nfsv4", "op-commit-done", 0, 0, "struct compound_state *",
217	    "conninfo_t *" },
218	{ "nfsv4", "op-commit-done", 1, 0, "struct compound_state *",
219	    "nfsv4opinfo_t *" },
220	{ "nfsv4", "op-commit-done", 2, 1, "COMMIT4res *" },
221	{ "nfsv4", "op-create-start", 0, 0, "struct compound_state *",
222	    "conninfo_t *" },
223	{ "nfsv4", "op-create-start", 1, 0, "struct compound_state *",
224	    "nfsv4opinfo_t *" },
225	{ "nfsv4", "op-create-start", 2, 1, "CREATE4args *" },
226	{ "nfsv4", "op-create-done", 0, 0, "struct compound_state *",
227	    "conninfo_t *" },
228	{ "nfsv4", "op-create-done", 1, 0, "struct compound_state *",
229	    "nfsv4opinfo_t *" },
230	{ "nfsv4", "op-create-done", 2, 1, "CREATE4res *" },
231	{ "nfsv4", "op-delegpurge-start", 0, 0, "struct compound_state *",
232	    "conninfo_t *" },
233	{ "nfsv4", "op-delegpurge-start", 1, 0, "struct compound_state *",
234	    "nfsv4opinfo_t *" },
235	{ "nfsv4", "op-delegpurge-start", 2, 1, "DELEGPURGE4args *" },
236	{ "nfsv4", "op-delegpurge-done", 0, 0, "struct compound_state *",
237	    "conninfo_t *" },
238	{ "nfsv4", "op-delegpurge-done", 1, 0, "struct compound_state *",
239	    "nfsv4opinfo_t *" },
240	{ "nfsv4", "op-delegpurge-done", 2, 1, "DELEGPURGE4res *" },
241	{ "nfsv4", "op-delegreturn-start", 0, 0, "struct compound_state *",
242	    "conninfo_t *" },
243	{ "nfsv4", "op-delegreturn-start", 1, 0, "struct compound_state *",
244	    "nfsv4opinfo_t *" },
245	{ "nfsv4", "op-delegreturn-start", 2, 1, "DELEGRETURN4args *" },
246	{ "nfsv4", "op-delegreturn-done", 0, 0, "struct compound_state *",
247	    "conninfo_t *" },
248	{ "nfsv4", "op-delegreturn-done", 1, 0, "struct compound_state *",
249	    "nfsv4opinfo_t *" },
250	{ "nfsv4", "op-delegreturn-done", 2, 1, "DELEGRETURN4res *" },
251	{ "nfsv4", "op-getattr-start", 0, 0, "struct compound_state *",
252	    "conninfo_t *" },
253	{ "nfsv4", "op-getattr-start", 1, 0, "struct compound_state *",
254	    "nfsv4opinfo_t *" },
255	{ "nfsv4", "op-getattr-start", 2, 1, "GETATTR4args *" },
256	{ "nfsv4", "op-getattr-done", 0, 0, "struct compound_state *",
257	    "conninfo_t *" },
258	{ "nfsv4", "op-getattr-done", 1, 0, "struct compound_state *",
259	    "nfsv4opinfo_t *" },
260	{ "nfsv4", "op-getattr-done", 2, 1, "GETATTR4res *" },
261	{ "nfsv4", "op-getfh-start", 0, 0, "struct compound_state *",
262	    "conninfo_t *" },
263	{ "nfsv4", "op-getfh-start", 1, 0, "struct compound_state *",
264	    "nfsv4opinfo_t *" },
265	{ "nfsv4", "op-getfh-done", 0, 0, "struct compound_state *",
266	    "conninfo_t *" },
267	{ "nfsv4", "op-getfh-done", 1, 0, "struct compound_state *",
268	    "nfsv4opinfo_t *" },
269	{ "nfsv4", "op-getfh-done", 2, 1, "GETFH4res *" },
270	{ "nfsv4", "op-link-start", 0, 0, "struct compound_state *",
271	    "conninfo_t *" },
272	{ "nfsv4", "op-link-start", 1, 0, "struct compound_state *",
273	    "nfsv4opinfo_t *" },
274	{ "nfsv4", "op-link-start", 2, 1, "LINK4args *" },
275	{ "nfsv4", "op-link-done", 0, 0, "struct compound_state *",
276	    "conninfo_t *" },
277	{ "nfsv4", "op-link-done", 1, 0, "struct compound_state *",
278	    "nfsv4opinfo_t *" },
279	{ "nfsv4", "op-link-done", 2, 1, "LINK4res *" },
280	{ "nfsv4", "op-lock-start", 0, 0, "struct compound_state *",
281	    "conninfo_t *" },
282	{ "nfsv4", "op-lock-start", 1, 0, "struct compound_state *",
283	    "nfsv4opinfo_t *" },
284	{ "nfsv4", "op-lock-start", 2, 1, "LOCK4args *" },
285	{ "nfsv4", "op-lock-done", 0, 0, "struct compound_state *",
286	    "conninfo_t *" },
287	{ "nfsv4", "op-lock-done", 1, 0, "struct compound_state *",
288	    "nfsv4opinfo_t *" },
289	{ "nfsv4", "op-lock-done", 2, 1, "LOCK4res *" },
290	{ "nfsv4", "op-lockt-start", 0, 0, "struct compound_state *",
291	    "conninfo_t *" },
292	{ "nfsv4", "op-lockt-start", 1, 0, "struct compound_state *",
293	    "nfsv4opinfo_t *" },
294	{ "nfsv4", "op-lockt-start", 2, 1, "LOCKT4args *" },
295	{ "nfsv4", "op-lockt-done", 0, 0, "struct compound_state *",
296	    "conninfo_t *" },
297	{ "nfsv4", "op-lockt-done", 1, 0, "struct compound_state *",
298	    "nfsv4opinfo_t *" },
299	{ "nfsv4", "op-lockt-done", 2, 1, "LOCKT4res *" },
300	{ "nfsv4", "op-locku-start", 0, 0, "struct compound_state *",
301	    "conninfo_t *" },
302	{ "nfsv4", "op-locku-start", 1, 0, "struct compound_state *",
303	    "nfsv4opinfo_t *" },
304	{ "nfsv4", "op-locku-start", 2, 1, "LOCKU4args *" },
305	{ "nfsv4", "op-locku-done", 0, 0, "struct compound_state *",
306	    "conninfo_t *" },
307	{ "nfsv4", "op-locku-done", 1, 0, "struct compound_state *",
308	    "nfsv4opinfo_t *" },
309	{ "nfsv4", "op-locku-done", 2, 1, "LOCKU4res *" },
310	{ "nfsv4", "op-lookup-start", 0, 0, "struct compound_state *",
311	    "conninfo_t *" },
312	{ "nfsv4", "op-lookup-start", 1, 0, "struct compound_state *",
313	    "nfsv4opinfo_t *" },
314	{ "nfsv4", "op-lookup-start", 2, 1, "LOOKUP4args *" },
315	{ "nfsv4", "op-lookup-done", 0, 0, "struct compound_state *",
316	    "conninfo_t *" },
317	{ "nfsv4", "op-lookup-done", 1, 0, "struct compound_state *",
318	    "nfsv4opinfo_t *" },
319	{ "nfsv4", "op-lookup-done", 2, 1, "LOOKUP4res *" },
320	{ "nfsv4", "op-lookupp-start", 0, 0, "struct compound_state *",
321	    "conninfo_t *" },
322	{ "nfsv4", "op-lookupp-start", 1, 0, "struct compound_state *",
323	    "nfsv4opinfo_t *" },
324	{ "nfsv4", "op-lookupp-done", 0, 0, "struct compound_state *",
325	    "conninfo_t *" },
326	{ "nfsv4", "op-lookupp-done", 1, 0, "struct compound_state *",
327	    "nfsv4opinfo_t *" },
328	{ "nfsv4", "op-lookupp-done", 2, 1, "LOOKUPP4res *" },
329	{ "nfsv4", "op-nverify-start", 0, 0, "struct compound_state *",
330	    "conninfo_t *" },
331	{ "nfsv4", "op-nverify-start", 1, 0, "struct compound_state *",
332	    "nfsv4opinfo_t *" },
333	{ "nfsv4", "op-nverify-start", 2, 1, "NVERIFY4args *" },
334	{ "nfsv4", "op-nverify-done", 0, 0, "struct compound_state *",
335	    "conninfo_t *" },
336	{ "nfsv4", "op-nverify-done", 1, 0, "struct compound_state *",
337	    "nfsv4opinfo_t *" },
338	{ "nfsv4", "op-nverify-done", 2, 1, "NVERIFY4res *" },
339	{ "nfsv4", "op-open-start", 0, 0, "struct compound_state *",
340	    "conninfo_t *" },
341	{ "nfsv4", "op-open-start", 1, 0, "struct compound_state *",
342	    "nfsv4opinfo_t *" },
343	{ "nfsv4", "op-open-start", 2, 1, "OPEN4args *" },
344	{ "nfsv4", "op-open-done", 0, 0, "struct compound_state *",
345	    "conninfo_t *" },
346	{ "nfsv4", "op-open-done", 1, 0, "struct compound_state *",
347	    "nfsv4opinfo_t *" },
348	{ "nfsv4", "op-open-done", 2, 1, "OPEN4res *" },
349	{ "nfsv4", "op-open-confirm-start", 0, 0, "struct compound_state *",
350	    "conninfo_t *" },
351	{ "nfsv4", "op-open-confirm-start", 1, 0, "struct compound_state *",
352	    "nfsv4opinfo_t *" },
353	{ "nfsv4", "op-open-confirm-start", 2, 1, "OPEN_CONFIRM4args *" },
354	{ "nfsv4", "op-open-confirm-done", 0, 0, "struct compound_state *",
355	    "conninfo_t *" },
356	{ "nfsv4", "op-open-confirm-done", 1, 0, "struct compound_state *",
357	    "nfsv4opinfo_t *" },
358	{ "nfsv4", "op-open-confirm-done", 2, 1, "OPEN_CONFIRM4res *" },
359	{ "nfsv4", "op-open-downgrade-start", 0, 0, "struct compound_state *",
360	    "conninfo_t *" },
361	{ "nfsv4", "op-open-downgrade-start", 1, 0, "struct compound_state *",
362	    "nfsv4opinfo_t *" },
363	{ "nfsv4", "op-open-downgrade-start", 2, 1, "OPEN_DOWNGRADE4args *" },
364	{ "nfsv4", "op-open-downgrade-done", 0, 0, "struct compound_state *",
365	    "conninfo_t *" },
366	{ "nfsv4", "op-open-downgrade-done", 1, 0, "struct compound_state *",
367	    "nfsv4opinfo_t *" },
368	{ "nfsv4", "op-open-downgrade-done", 2, 1, "OPEN_DOWNGRADE4res *" },
369	{ "nfsv4", "op-openattr-start", 0, 0, "struct compound_state *",
370	    "conninfo_t *" },
371	{ "nfsv4", "op-openattr-start", 1, 0, "struct compound_state *",
372	    "nfsv4opinfo_t *" },
373	{ "nfsv4", "op-openattr-start", 2, 1, "OPENATTR4args *" },
374	{ "nfsv4", "op-openattr-done", 0, 0, "struct compound_state *",
375	    "conninfo_t *" },
376	{ "nfsv4", "op-openattr-done", 1, 0, "struct compound_state *",
377	    "nfsv4opinfo_t *" },
378	{ "nfsv4", "op-openattr-done", 2, 1, "OPENATTR4res *" },
379	{ "nfsv4", "op-putfh-start", 0, 0, "struct compound_state *",
380	    "conninfo_t *" },
381	{ "nfsv4", "op-putfh-start", 1, 0, "struct compound_state *",
382	    "nfsv4opinfo_t *" },
383	{ "nfsv4", "op-putfh-start", 2, 1, "PUTFH4args *" },
384	{ "nfsv4", "op-putfh-done", 0, 0, "struct compound_state *",
385	    "conninfo_t *" },
386	{ "nfsv4", "op-putfh-done", 1, 0, "struct compound_state *",
387	    "nfsv4opinfo_t *" },
388	{ "nfsv4", "op-putfh-done", 2, 1, "PUTFH4res *" },
389	{ "nfsv4", "op-putpubfh-start", 0, 0, "struct compound_state *",
390	    "conninfo_t *" },
391	{ "nfsv4", "op-putpubfh-start", 1, 0, "struct compound_state *",
392	    "nfsv4opinfo_t *" },
393	{ "nfsv4", "op-putpubfh-done", 0, 0, "struct compound_state *",
394	    "conninfo_t *" },
395	{ "nfsv4", "op-putpubfh-done", 1, 0, "struct compound_state *",
396	    "nfsv4opinfo_t *" },
397	{ "nfsv4", "op-putpubfh-done", 2, 1, "PUTPUBFH4res *" },
398	{ "nfsv4", "op-putrootfh-start", 0, 0, "struct compound_state *",
399	    "conninfo_t *" },
400	{ "nfsv4", "op-putrootfh-start", 1, 0, "struct compound_state *",
401	    "nfsv4opinfo_t *" },
402	{ "nfsv4", "op-putrootfh-done", 0, 0, "struct compound_state *",
403	    "conninfo_t *" },
404	{ "nfsv4", "op-putrootfh-done", 1, 0, "struct compound_state *",
405	    "nfsv4opinfo_t *" },
406	{ "nfsv4", "op-putrootfh-done", 2, 1, "PUTROOTFH4res *" },
407	{ "nfsv4", "op-read-start", 0, 0, "struct compound_state *",
408	    "conninfo_t *" },
409	{ "nfsv4", "op-read-start", 1, 0, "struct compound_state *",
410	    "nfsv4opinfo_t *" },
411	{ "nfsv4", "op-read-start", 2, 1, "READ4args *" },
412	{ "nfsv4", "op-read-done", 0, 0, "struct compound_state *",
413	    "conninfo_t *" },
414	{ "nfsv4", "op-read-done", 1, 0, "struct compound_state *",
415	    "nfsv4opinfo_t *" },
416	{ "nfsv4", "op-read-done", 2, 1, "READ4res *" },
417	{ "nfsv4", "op-readdir-start", 0, 0, "struct compound_state *",
418	    "conninfo_t *" },
419	{ "nfsv4", "op-readdir-start", 1, 0, "struct compound_state *",
420	    "nfsv4opinfo_t *" },
421	{ "nfsv4", "op-readdir-start", 2, 1, "READDIR4args *" },
422	{ "nfsv4", "op-readdir-done", 0, 0, "struct compound_state *",
423	    "conninfo_t *" },
424	{ "nfsv4", "op-readdir-done", 1, 0, "struct compound_state *",
425	    "nfsv4opinfo_t *" },
426	{ "nfsv4", "op-readdir-done", 2, 1, "READDIR4res *" },
427	{ "nfsv4", "op-readlink-start", 0, 0, "struct compound_state *",
428	    "conninfo_t *" },
429	{ "nfsv4", "op-readlink-start", 1, 0, "struct compound_state *",
430	    "nfsv4opinfo_t *" },
431	{ "nfsv4", "op-readlink-done", 0, 0, "struct compound_state *",
432	    "conninfo_t *" },
433	{ "nfsv4", "op-readlink-done", 1, 0, "struct compound_state *",
434	    "nfsv4opinfo_t *" },
435	{ "nfsv4", "op-readlink-done", 2, 1, "READLINK4res *" },
436	{ "nfsv4", "op-release-lockowner-start", 0, 0,
437	    "struct compound_state *", "conninfo_t *" },
438	{ "nfsv4", "op-release-lockowner-start", 1, 0,
439	    "struct compound_state *", "nfsv4opinfo_t *" },
440	{ "nfsv4", "op-release-lockowner-start", 2, 1,
441	    "RELEASE_LOCKOWNER4args *" },
442	{ "nfsv4", "op-release-lockowner-done", 0, 0,
443	    "struct compound_state *", "conninfo_t *" },
444	{ "nfsv4", "op-release-lockowner-done", 1, 0,
445	    "struct compound_state *", "nfsv4opinfo_t *" },
446	{ "nfsv4", "op-release-lockowner-done", 2, 1,
447	    "RELEASE_LOCKOWNER4res *" },
448	{ "nfsv4", "op-remove-start", 0, 0, "struct compound_state *",
449	    "conninfo_t *" },
450	{ "nfsv4", "op-remove-start", 1, 0, "struct compound_state *",
451	    "nfsv4opinfo_t *" },
452	{ "nfsv4", "op-remove-start", 2, 1, "REMOVE4args *" },
453	{ "nfsv4", "op-remove-done", 0, 0, "struct compound_state *",
454	    "conninfo_t *" },
455	{ "nfsv4", "op-remove-done", 1, 0, "struct compound_state *",
456	    "nfsv4opinfo_t *" },
457	{ "nfsv4", "op-remove-done", 2, 1, "REMOVE4res *" },
458	{ "nfsv4", "op-rename-start", 0, 0, "struct compound_state *",
459	    "conninfo_t *" },
460	{ "nfsv4", "op-rename-start", 1, 0, "struct compound_state *",
461	    "nfsv4opinfo_t *" },
462	{ "nfsv4", "op-rename-start", 2, 1, "RENAME4args *" },
463	{ "nfsv4", "op-rename-done", 0, 0, "struct compound_state *",
464	    "conninfo_t *" },
465	{ "nfsv4", "op-rename-done", 1, 0, "struct compound_state *",
466	    "nfsv4opinfo_t *" },
467	{ "nfsv4", "op-rename-done", 2, 1, "RENAME4res *" },
468	{ "nfsv4", "op-renew-start", 0, 0, "struct compound_state *",
469	    "conninfo_t *" },
470	{ "nfsv4", "op-renew-start", 1, 0, "struct compound_state *",
471	    "nfsv4opinfo_t *" },
472	{ "nfsv4", "op-renew-start", 2, 1, "RENEW4args *" },
473	{ "nfsv4", "op-renew-done", 0, 0, "struct compound_state *",
474	    "conninfo_t *" },
475	{ "nfsv4", "op-renew-done", 1, 0, "struct compound_state *",
476	    "nfsv4opinfo_t *" },
477	{ "nfsv4", "op-renew-done", 2, 1, "RENEW4res *" },
478	{ "nfsv4", "op-restorefh-start", 0, 0, "struct compound_state *",
479	    "conninfo_t *" },
480	{ "nfsv4", "op-restorefh-start", 1, 0, "struct compound_state *",
481	    "nfsv4opinfo_t *" },
482	{ "nfsv4", "op-restorefh-done", 0, 0, "struct compound_state *",
483	    "conninfo_t *" },
484	{ "nfsv4", "op-restorefh-done", 1, 0, "struct compound_state *",
485	    "nfsv4opinfo_t *" },
486	{ "nfsv4", "op-restorefh-done", 2, 1, "RESTOREFH4res *" },
487	{ "nfsv4", "op-savefh-start", 0, 0, "struct compound_state *",
488	    "conninfo_t *" },
489	{ "nfsv4", "op-savefh-start", 1, 0, "struct compound_state *",
490	    "nfsv4opinfo_t *" },
491	{ "nfsv4", "op-savefh-done", 0, 0, "struct compound_state *",
492	    "conninfo_t *" },
493	{ "nfsv4", "op-savefh-done", 1, 0, "struct compound_state *",
494	    "nfsv4opinfo_t *" },
495	{ "nfsv4", "op-savefh-done", 2, 1, "SAVEFH4res *" },
496	{ "nfsv4", "op-secinfo-start", 0, 0, "struct compound_state *",
497	    "conninfo_t *" },
498	{ "nfsv4", "op-secinfo-start", 1, 0, "struct compound_state *",
499	    "nfsv4opinfo_t *" },
500	{ "nfsv4", "op-secinfo-start", 2, 1, "SECINFO4args *" },
501	{ "nfsv4", "op-secinfo-done", 0, 0, "struct compound_state *",
502	    "conninfo_t *" },
503	{ "nfsv4", "op-secinfo-done", 1, 0, "struct compound_state *",
504	    "nfsv4opinfo_t *" },
505	{ "nfsv4", "op-secinfo-done", 2, 1, "SECINFO4res *" },
506	{ "nfsv4", "op-setattr-start", 0, 0, "struct compound_state *",
507	    "conninfo_t *" },
508	{ "nfsv4", "op-setattr-start", 1, 0, "struct compound_state *",
509	    "nfsv4opinfo_t *" },
510	{ "nfsv4", "op-setattr-start", 2, 1, "SETATTR4args *" },
511	{ "nfsv4", "op-setattr-done", 0, 0, "struct compound_state *",
512	    "conninfo_t *" },
513	{ "nfsv4", "op-setattr-done", 1, 0, "struct compound_state *",
514	    "nfsv4opinfo_t *" },
515	{ "nfsv4", "op-setattr-done", 2, 1, "SETATTR4res *" },
516	{ "nfsv4", "op-setclientid-start", 0, 0, "struct compound_state *",
517	    "conninfo_t *" },
518	{ "nfsv4", "op-setclientid-start", 1, 0, "struct compound_state *",
519	    "nfsv4opinfo_t *" },
520	{ "nfsv4", "op-setclientid-start", 2, 1, "SETCLIENTID4args *" },
521	{ "nfsv4", "op-setclientid-done", 0, 0, "struct compound_state *",
522	    "conninfo_t *" },
523	{ "nfsv4", "op-setclientid-done", 1, 0, "struct compound_state *",
524	    "nfsv4opinfo_t *" },
525	{ "nfsv4", "op-setclientid-done", 2, 1, "SETCLIENTID4res *" },
526	{ "nfsv4", "op-setclientid-confirm-start", 0, 0,
527	    "struct compound_state *", "conninfo_t *" },
528	{ "nfsv4", "op-setclientid-confirm-start", 1, 0,
529	    "struct compound_state *", "nfsv4opinfo_t *" },
530	{ "nfsv4", "op-setclientid-confirm-start", 2, 1,
531	    "SETCLIENTID_CONFIRM4args *" },
532	{ "nfsv4", "op-setclientid-confirm-done", 0, 0,
533	    "struct compound_state *", "conninfo_t *" },
534	{ "nfsv4", "op-setclientid-confirm-done", 1, 0,
535	    "struct compound_state *", "nfsv4opinfo_t *" },
536	{ "nfsv4", "op-setclientid-confirm-done", 2, 1,
537	    "SETCLIENTID_CONFIRM4res *" },
538	{ "nfsv4", "op-verify-start", 0, 0, "struct compound_state *",
539	    "conninfo_t *" },
540	{ "nfsv4", "op-verify-start", 1, 0, "struct compound_state *",
541	    "nfsv4opinfo_t *" },
542	{ "nfsv4", "op-verify-start", 2, 1, "VERIFY4args *" },
543	{ "nfsv4", "op-verify-done", 0, 0, "struct compound_state *",
544	    "conninfo_t *" },
545	{ "nfsv4", "op-verify-done", 1, 0, "struct compound_state *",
546	    "nfsv4opinfo_t *" },
547	{ "nfsv4", "op-verify-done", 2, 1, "VERIFY4res *" },
548	{ "nfsv4", "op-write-start", 0, 0, "struct compound_state *",
549	    "conninfo_t *" },
550	{ "nfsv4", "op-write-start", 1, 0, "struct compound_state *",
551	    "nfsv4opinfo_t *" },
552	{ "nfsv4", "op-write-start", 2, 1, "WRITE4args *" },
553	{ "nfsv4", "op-write-done", 0, 0, "struct compound_state *",
554	    "conninfo_t *" },
555	{ "nfsv4", "op-write-done", 1, 0, "struct compound_state *",
556	    "nfsv4opinfo_t *" },
557	{ "nfsv4", "op-write-done", 2, 1, "WRITE4res *" },
558	{ "nfsv4", "cb-recall-start", 0, 0, "rfs4_client_t *",
559	    "conninfo_t *" },
560	{ "nfsv4", "cb-recall-start", 1, 1, "rfs4_deleg_state_t *",
561	    "nfsv4cbinfo_t *" },
562	{ "nfsv4", "cb-recall-start", 2, 2, "CB_RECALL4args *" },
563	{ "nfsv4", "cb-recall-done", 0, 0, "rfs4_client_t *",
564	    "conninfo_t *" },
565	{ "nfsv4", "cb-recall-done", 1, 1, "rfs4_deleg_state_t *",
566	    "nfsv4cbinfo_t *" },
567	{ "nfsv4", "cb-recall-done", 2, 2, "CB_RECALL4res *" },
568
569	{ "sysevent", "post", 0, 0, "evch_bind_t *", "syseventchaninfo_t *" },
570	{ "sysevent", "post", 1, 1, "sysevent_impl_t *", "syseventinfo_t *" },
571
572	{ "xpv", "add-to-physmap-end", 0, 0, "int" },
573	{ "xpv", "add-to-physmap-start", 0, 0, "domid_t" },
574	{ "xpv", "add-to-physmap-start", 1, 1, "uint_t" },
575	{ "xpv", "add-to-physmap-start", 2, 2, "ulong_t" },
576	{ "xpv", "add-to-physmap-start", 3, 3, "ulong_t" },
577	{ "xpv", "decrease-reservation-end", 0, 0, "int" },
578	{ "xpv", "decrease-reservation-start", 0, 0, "domid_t" },
579	{ "xpv", "decrease-reservation-start", 1, 1, "ulong_t" },
580	{ "xpv", "decrease-reservation-start", 2, 2, "uint_t" },
581	{ "xpv", "decrease-reservation-start", 3, 3, "ulong_t *" },
582	{ "xpv", "dom-create-start", 0, 0, "xen_domctl_t *" },
583	{ "xpv", "dom-destroy-start", 0, 0, "domid_t" },
584	{ "xpv", "dom-pause-start", 0, 0, "domid_t" },
585	{ "xpv", "dom-unpause-start", 0, 0, "domid_t" },
586	{ "xpv", "dom-create-end", 0, 0, "int" },
587	{ "xpv", "dom-destroy-end", 0, 0, "int" },
588	{ "xpv", "dom-pause-end", 0, 0, "int" },
589	{ "xpv", "dom-unpause-end", 0, 0, "int" },
590	{ "xpv", "evtchn-op-end", 0, 0, "int" },
591	{ "xpv", "evtchn-op-start", 0, 0, "int" },
592	{ "xpv", "evtchn-op-start", 1, 1, "void *" },
593	{ "xpv", "increase-reservation-end", 0, 0, "int" },
594	{ "xpv", "increase-reservation-start", 0, 0, "domid_t" },
595	{ "xpv", "increase-reservation-start", 1, 1, "ulong_t" },
596	{ "xpv", "increase-reservation-start", 2, 2, "uint_t" },
597	{ "xpv", "increase-reservation-start", 3, 3, "ulong_t *" },
598	{ "xpv", "mmap-end", 0, 0, "int" },
599	{ "xpv", "mmap-entry", 0, 0, "ulong_t" },
600	{ "xpv", "mmap-entry", 1, 1, "ulong_t" },
601	{ "xpv", "mmap-entry", 2, 2, "ulong_t" },
602	{ "xpv", "mmap-start", 0, 0, "domid_t" },
603	{ "xpv", "mmap-start", 1, 1, "int" },
604	{ "xpv", "mmap-start", 2, 2, "privcmd_mmap_entry_t *" },
605	{ "xpv", "mmapbatch-end", 0, 0, "int" },
606	{ "xpv", "mmapbatch-end", 1, 1, "struct seg *" },
607	{ "xpv", "mmapbatch-end", 2, 2, "caddr_t" },
608	{ "xpv", "mmapbatch-start", 0, 0, "domid_t" },
609	{ "xpv", "mmapbatch-start", 1, 1, "int" },
610	{ "xpv", "mmapbatch-start", 2, 2, "caddr_t" },
611	{ "xpv", "mmu-ext-op-end", 0, 0, "int" },
612	{ "xpv", "mmu-ext-op-start", 0, 0, "int" },
613	{ "xpv", "mmu-ext-op-start", 1, 1, "struct mmuext_op *" },
614	{ "xpv", "mmu-update-start", 0, 0, "int" },
615	{ "xpv", "mmu-update-start", 1, 1, "int" },
616	{ "xpv", "mmu-update-start", 2, 2, "mmu_update_t *" },
617	{ "xpv", "mmu-update-end", 0, 0, "int" },
618	{ "xpv", "populate-physmap-end", 0, 0, "int" },
619	{ "xpv", "populate-physmap-start", 0, 0, "domid_t" },
620	{ "xpv", "populate-physmap-start", 1, 1, "ulong_t" },
621	{ "xpv", "populate-physmap-start", 2, 2, "ulong_t *" },
622	{ "xpv", "set-memory-map-end", 0, 0, "int" },
623	{ "xpv", "set-memory-map-start", 0, 0, "domid_t" },
624	{ "xpv", "set-memory-map-start", 1, 1, "int" },
625	{ "xpv", "set-memory-map-start", 2, 2, "struct xen_memory_map *" },
626	{ "xpv", "setvcpucontext-end", 0, 0, "int" },
627	{ "xpv", "setvcpucontext-start", 0, 0, "domid_t" },
628	{ "xpv", "setvcpucontext-start", 1, 1, "vcpu_guest_context_t *" },
629	{ NULL }
630};
631
632/*ARGSUSED*/
633void
634sdt_getargdesc(void *arg, dtrace_id_t id, void *parg, dtrace_argdesc_t *desc)
635{
636	sdt_probe_t *sdp = parg;
637	int i;
638
639	desc->dtargd_native[0] = '\0';
640	desc->dtargd_xlate[0] = '\0';
641
642	for (i = 0; sdt_args[i].sda_provider != NULL; i++) {
643		sdt_argdesc_t *a = &sdt_args[i];
644
645		if (strcmp(sdp->sdp_provider->sdtp_name, a->sda_provider) != 0)
646			continue;
647
648		if (a->sda_name != NULL &&
649		    strcmp(sdp->sdp_name, a->sda_name) != 0)
650			continue;
651
652		if (desc->dtargd_ndx != a->sda_ndx)
653			continue;
654
655		if (a->sda_native != NULL)
656			(void) strcpy(desc->dtargd_native, a->sda_native);
657
658		if (a->sda_xlate != NULL)
659			(void) strcpy(desc->dtargd_xlate, a->sda_xlate);
660
661		desc->dtargd_mapping = a->sda_mapping;
662		return;
663	}
664
665	desc->dtargd_ndx = DTRACE_ARGNONE;
666}
667