sdt_subr.c revision 179193
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 2008 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 stab_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_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
67{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_ISA },
68};
69
70static dtrace_pattr_t sdt_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_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_ISA },
75{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_ISA },
76};
77
78static dtrace_pattr_t xpv_attr = {
79{ DTRACE_STABILITY_EVOLVING, DTRACE_STABILITY_EVOLVING, DTRACE_CLASS_PLATFORM },
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_PLATFORM },
83{ DTRACE_STABILITY_PRIVATE, DTRACE_STABILITY_PRIVATE, DTRACE_CLASS_PLATFORM },
84};
85
86sdt_provider_t sdt_providers[] = {
87	{ "vtrace", "__vtrace_", &vtrace_attr, 0 },
88	{ "sysinfo", "__cpu_sysinfo_", &info_attr, 0 },
89	{ "vminfo", "__cpu_vminfo_", &info_attr, 0 },
90	{ "fpuinfo", "__fpuinfo_", &fpu_attr, 0 },
91	{ "sched", "__sched_", &stab_attr, 0 },
92	{ "proc", "__proc_", &stab_attr, 0 },
93	{ "io", "__io_", &stab_attr, 0 },
94	{ "mib", "__mib_", &stab_attr, 0 },
95	{ "fsinfo", "__fsinfo_", &fsinfo_attr, 0 },
96	{ "nfsv3", "__nfsv3_", &stab_attr, 0 },
97	{ "nfsv4", "__nfsv4_", &stab_attr, 0 },
98	{ "xpv", "__xpv_", &xpv_attr, 0 },
99	{ "sysevent", "__sysevent_", &stab_attr, 0 },
100	{ "sdt", NULL, &sdt_attr, 0 },
101	{ NULL }
102};
103
104sdt_argdesc_t sdt_args[] = {
105	{ "sched", "wakeup", 0, 0, "kthread_t *", "lwpsinfo_t *" },
106	{ "sched", "wakeup", 1, 0, "kthread_t *", "psinfo_t *" },
107	{ "sched", "dequeue", 0, 0, "kthread_t *", "lwpsinfo_t *" },
108	{ "sched", "dequeue", 1, 0, "kthread_t *", "psinfo_t *" },
109	{ "sched", "dequeue", 2, 1, "disp_t *", "cpuinfo_t *" },
110	{ "sched", "enqueue", 0, 0, "kthread_t *", "lwpsinfo_t *" },
111	{ "sched", "enqueue", 1, 0, "kthread_t *", "psinfo_t *" },
112	{ "sched", "enqueue", 2, 1, "disp_t *", "cpuinfo_t *" },
113	{ "sched", "enqueue", 3, 2, "int" },
114	{ "sched", "off-cpu", 0, 0, "kthread_t *", "lwpsinfo_t *" },
115	{ "sched", "off-cpu", 1, 0, "kthread_t *", "psinfo_t *" },
116	{ "sched", "tick", 0, 0, "kthread_t *", "lwpsinfo_t *" },
117	{ "sched", "tick", 1, 0, "kthread_t *", "psinfo_t *" },
118	{ "sched", "change-pri", 0, 0, "kthread_t *", "lwpsinfo_t *" },
119	{ "sched", "change-pri", 1, 0, "kthread_t *", "psinfo_t *" },
120	{ "sched", "change-pri", 2, 1, "pri_t" },
121	{ "sched", "schedctl-nopreempt", 0, 0, "kthread_t *", "lwpsinfo_t *" },
122	{ "sched", "schedctl-nopreempt", 1, 0, "kthread_t *", "psinfo_t *" },
123	{ "sched", "schedctl-nopreempt", 2, 1, "int" },
124	{ "sched", "schedctl-preempt", 0, 0, "kthread_t *", "lwpsinfo_t *" },
125	{ "sched", "schedctl-preempt", 1, 0, "kthread_t *", "psinfo_t *" },
126	{ "sched", "schedctl-yield", 0, 0, "int" },
127	{ "sched", "surrender", 0, 0, "kthread_t *", "lwpsinfo_t *" },
128	{ "sched", "surrender", 1, 0, "kthread_t *", "psinfo_t *" },
129	{ "sched", "cpucaps-sleep", 0, 0, "kthread_t *", "lwpsinfo_t *" },
130	{ "sched", "cpucaps-sleep", 1, 0, "kthread_t *", "psinfo_t *" },
131	{ "sched", "cpucaps-wakeup", 0, 0, "kthread_t *", "lwpsinfo_t *" },
132	{ "sched", "cpucaps-wakeup", 1, 0, "kthread_t *", "psinfo_t *" },
133
134	{ "proc", "create", 0, 0, "proc_t *", "psinfo_t *" },
135	{ "proc", "exec", 0, 0, "string" },
136	{ "proc", "exec-failure", 0, 0, "int" },
137	{ "proc", "exit", 0, 0, "int" },
138	{ "proc", "fault", 0, 0, "int" },
139	{ "proc", "fault", 1, 1, "siginfo_t *" },
140	{ "proc", "lwp-create", 0, 0, "kthread_t *", "lwpsinfo_t *" },
141	{ "proc", "lwp-create", 1, 0, "kthread_t *", "psinfo_t *" },
142	{ "proc", "signal-clear", 0, 0, "int" },
143	{ "proc", "signal-clear", 1, 1, "siginfo_t *" },
144	{ "proc", "signal-discard", 0, 0, "kthread_t *", "lwpsinfo_t *" },
145	{ "proc", "signal-discard", 1, 1, "proc_t *", "psinfo_t *" },
146	{ "proc", "signal-discard", 2, 2, "int" },
147	{ "proc", "signal-handle", 0, 0, "int" },
148	{ "proc", "signal-handle", 1, 1, "siginfo_t *" },
149	{ "proc", "signal-handle", 2, 2, "void (*)(void)" },
150	{ "proc", "signal-send", 0, 0, "kthread_t *", "lwpsinfo_t *" },
151	{ "proc", "signal-send", 1, 0, "kthread_t *", "psinfo_t *" },
152	{ "proc", "signal-send", 2, 1, "int" },
153
154	{ "io", "start", 0, 0, "buf_t *", "bufinfo_t *" },
155	{ "io", "start", 1, 0, "buf_t *", "devinfo_t *" },
156	{ "io", "start", 2, 0, "buf_t *", "fileinfo_t *" },
157	{ "io", "done", 0, 0, "buf_t *", "bufinfo_t *" },
158	{ "io", "done", 1, 0, "buf_t *", "devinfo_t *" },
159	{ "io", "done", 2, 0, "buf_t *", "fileinfo_t *" },
160	{ "io", "wait-start", 0, 0, "buf_t *", "bufinfo_t *" },
161	{ "io", "wait-start", 1, 0, "buf_t *", "devinfo_t *" },
162	{ "io", "wait-start", 2, 0, "buf_t *", "fileinfo_t *" },
163	{ "io", "wait-done", 0, 0, "buf_t *", "bufinfo_t *" },
164	{ "io", "wait-done", 1, 0, "buf_t *", "devinfo_t *" },
165	{ "io", "wait-done", 2, 0, "buf_t *", "fileinfo_t *" },
166
167	{ "mib", NULL, 0, 0, "int" },
168
169	{ "fsinfo", NULL, 0, 0, "vnode_t *", "fileinfo_t *" },
170	{ "fsinfo", NULL, 1, 1, "int", "int" },
171
172	{ "nfsv3", "op-getattr-start", 0, 0, "struct svc_req *",
173	    "conninfo_t *" },
174	{ "nfsv3", "op-getattr-start", 1, 1, "nfsv3oparg_t *",
175	    "nfsv3opinfo_t *" },
176	{ "nfsv3", "op-getattr-start", 2, 3, "GETATTR3args *" },
177	{ "nfsv3", "op-getattr-done", 0, 0, "struct svc_req *",
178	    "conninfo_t *" },
179	{ "nfsv3", "op-getattr-done", 1, 1, "nfsv3oparg_t *",
180	    "nfsv3opinfo_t *" },
181	{ "nfsv3", "op-getattr-done", 2, 3, "GETATTR3res *" },
182	{ "nfsv3", "op-setattr-start", 0, 0, "struct svc_req *",
183	    "conninfo_t *" },
184	{ "nfsv3", "op-setattr-start", 1, 1, "nfsv3oparg_t *",
185	    "nfsv3opinfo_t *" },
186	{ "nfsv3", "op-setattr-start", 2, 3, "SETATTR3args *" },
187	{ "nfsv3", "op-setattr-done", 0, 0, "struct svc_req *",
188	    "conninfo_t *" },
189	{ "nfsv3", "op-setattr-done", 1, 1, "nfsv3oparg_t *",
190	    "nfsv3opinfo_t *" },
191	{ "nfsv3", "op-setattr-done", 2, 3, "SETATTR3res *" },
192	{ "nfsv3", "op-lookup-start", 0, 0, "struct svc_req *",
193	    "conninfo_t *" },
194	{ "nfsv3", "op-lookup-start", 1, 1, "nfsv3oparg_t *",
195	    "nfsv3opinfo_t *" },
196	{ "nfsv3", "op-lookup-start", 2, 3, "LOOKUP3args *" },
197	{ "nfsv3", "op-lookup-done", 0, 0, "struct svc_req *",
198	    "conninfo_t *" },
199	{ "nfsv3", "op-lookup-done", 1, 1, "nfsv3oparg_t *",
200	    "nfsv3opinfo_t *" },
201	{ "nfsv3", "op-lookup-done", 2, 3, "LOOKUP3res *" },
202	{ "nfsv3", "op-access-start", 0, 0, "struct svc_req *",
203	    "conninfo_t *" },
204	{ "nfsv3", "op-access-start", 1, 1, "nfsv3oparg_t *",
205	    "nfsv3opinfo_t *" },
206	{ "nfsv3", "op-access-start", 2, 3, "ACCESS3args *" },
207	{ "nfsv3", "op-access-done", 0, 0, "struct svc_req *",
208	    "conninfo_t *" },
209	{ "nfsv3", "op-access-done", 1, 1, "nfsv3oparg_t *",
210	    "nfsv3opinfo_t *" },
211	{ "nfsv3", "op-access-done", 2, 3, "ACCESS3res *" },
212	{ "nfsv3", "op-commit-start", 0, 0, "struct svc_req *",
213	    "conninfo_t *" },
214	{ "nfsv3", "op-commit-start", 1, 1, "nfsv3oparg_t *",
215	    "nfsv3opinfo_t *" },
216	{ "nfsv3", "op-commit-start", 2, 3, "COMMIT3args *" },
217	{ "nfsv3", "op-commit-done", 0, 0, "struct svc_req *",
218	    "conninfo_t *" },
219	{ "nfsv3", "op-commit-done", 1, 1, "nfsv3oparg_t *",
220	    "nfsv3opinfo_t *" },
221	{ "nfsv3", "op-commit-done", 2, 3, "COMMIT3res *" },
222	{ "nfsv3", "op-create-start", 0, 0, "struct svc_req *",
223	    "conninfo_t *" },
224	{ "nfsv3", "op-create-start", 1, 1, "nfsv3oparg_t *",
225	    "nfsv3opinfo_t *" },
226	{ "nfsv3", "op-create-start", 2, 3, "CREATE3args *" },
227	{ "nfsv3", "op-create-done", 0, 0, "struct svc_req *",
228	    "conninfo_t *" },
229	{ "nfsv3", "op-create-done", 1, 1, "nfsv3oparg_t *",
230	    "nfsv3opinfo_t *" },
231	{ "nfsv3", "op-create-done", 2, 3, "CREATE3res *" },
232	{ "nfsv3", "op-fsinfo-start", 0, 0, "struct svc_req *",
233	    "conninfo_t *" },
234	{ "nfsv3", "op-fsinfo-start", 1, 1, "nfsv3oparg_t *",
235	    "nfsv3opinfo_t *" },
236	{ "nfsv3", "op-fsinfo-start", 2, 3, "FSINFO3args *" },
237	{ "nfsv3", "op-fsinfo-done", 0, 0, "struct svc_req *",
238	    "conninfo_t *" },
239	{ "nfsv3", "op-fsinfo-done", 1, 1, "nfsv3oparg_t *",
240	    "nfsv3opinfo_t *" },
241	{ "nfsv3", "op-fsinfo-done", 2, 3, "FSINFO3res *" },
242	{ "nfsv3", "op-fsstat-start", 0, 0, "struct svc_req *",
243	    "conninfo_t *" },
244	{ "nfsv3", "op-fsstat-start", 1, 1, "nfsv3oparg_t *",
245	    "nfsv3opinfo_t *" },
246	{ "nfsv3", "op-fsstat-start", 2, 3, "FSSTAT3args *" },
247	{ "nfsv3", "op-fsstat-done", 0, 0, "struct svc_req *",
248	    "conninfo_t *" },
249	{ "nfsv3", "op-fsstat-done", 1, 1, "nfsv3oparg_t *",
250	    "nfsv3opinfo_t *" },
251	{ "nfsv3", "op-fsstat-done", 2, 3, "FSSTAT3res *" },
252	{ "nfsv3", "op-link-start", 0, 0, "struct svc_req *",
253	    "conninfo_t *" },
254	{ "nfsv3", "op-link-start", 1, 1, "nfsv3oparg_t *",
255	    "nfsv3opinfo_t *" },
256	{ "nfsv3", "op-link-start", 2, 3, "LINK3args *" },
257	{ "nfsv3", "op-link-done", 0, 0, "struct svc_req *",
258	    "conninfo_t *" },
259	{ "nfsv3", "op-link-done", 1, 1, "nfsv3oparg_t *",
260	    "nfsv3opinfo_t *" },
261	{ "nfsv3", "op-link-done", 2, 3, "LINK3res *" },
262	{ "nfsv3", "op-mkdir-start", 0, 0, "struct svc_req *",
263	    "conninfo_t *" },
264	{ "nfsv3", "op-mkdir-start", 1, 1, "nfsv3oparg_t *",
265	    "nfsv3opinfo_t *" },
266	{ "nfsv3", "op-mkdir-start", 2, 3, "MKDIR3args *" },
267	{ "nfsv3", "op-mkdir-done", 0, 0, "struct svc_req *",
268	    "conninfo_t *" },
269	{ "nfsv3", "op-mkdir-done", 1, 1, "nfsv3oparg_t *",
270	    "nfsv3opinfo_t *" },
271	{ "nfsv3", "op-mkdir-done", 2, 3, "MKDIR3res *" },
272	{ "nfsv3", "op-mknod-start", 0, 0, "struct svc_req *",
273	    "conninfo_t *" },
274	{ "nfsv3", "op-mknod-start", 1, 1, "nfsv3oparg_t *",
275	    "nfsv3opinfo_t *" },
276	{ "nfsv3", "op-mknod-start", 2, 3, "MKNOD3args *" },
277	{ "nfsv3", "op-mknod-done", 0, 0, "struct svc_req *",
278	    "conninfo_t *" },
279	{ "nfsv3", "op-mknod-done", 1, 1, "nfsv3oparg_t *",
280	    "nfsv3opinfo_t *" },
281	{ "nfsv3", "op-mknod-done", 2, 3, "MKNOD3res *" },
282	{ "nfsv3", "op-null-start", 0, 0, "struct svc_req *",
283	    "conninfo_t *" },
284	{ "nfsv3", "op-null-start", 1, 1, "nfsv3oparg_t *",
285	    "nfsv3opinfo_t *" },
286	{ "nfsv3", "op-null-done", 0, 0, "struct svc_req *",
287	    "conninfo_t *" },
288	{ "nfsv3", "op-null-done", 1, 1, "nfsv3oparg_t *",
289	    "nfsv3opinfo_t *" },
290	{ "nfsv3", "op-pathconf-start", 0, 0, "struct svc_req *",
291	    "conninfo_t *" },
292	{ "nfsv3", "op-pathconf-start", 1, 1, "nfsv3oparg_t *",
293	    "nfsv3opinfo_t *" },
294	{ "nfsv3", "op-pathconf-start", 2, 3, "PATHCONF3args *" },
295	{ "nfsv3", "op-pathconf-done", 0, 0, "struct svc_req *",
296	    "conninfo_t *" },
297	{ "nfsv3", "op-pathconf-done", 1, 1, "nfsv3oparg_t *",
298	    "nfsv3opinfo_t *" },
299	{ "nfsv3", "op-pathconf-done", 2, 3, "PATHCONF3res *" },
300	{ "nfsv3", "op-read-start", 0, 0, "struct svc_req *",
301	    "conninfo_t *" },
302	{ "nfsv3", "op-read-start", 1, 1, "nfsv3oparg_t *",
303	    "nfsv3opinfo_t *" },
304	{ "nfsv3", "op-read-start", 2, 3, "READ3args *" },
305	{ "nfsv3", "op-read-done", 0, 0, "struct svc_req *",
306	    "conninfo_t *" },
307	{ "nfsv3", "op-read-done", 1, 1, "nfsv3oparg_t *",
308	    "nfsv3opinfo_t *" },
309	{ "nfsv3", "op-read-done", 2, 3, "READ3res *" },
310	{ "nfsv3", "op-readdir-start", 0, 0, "struct svc_req *",
311	    "conninfo_t *" },
312	{ "nfsv3", "op-readdir-start", 1, 1, "nfsv3oparg_t *",
313	    "nfsv3opinfo_t *" },
314	{ "nfsv3", "op-readdir-start", 2, 3, "READDIR3args *" },
315	{ "nfsv3", "op-readdir-done", 0, 0, "struct svc_req *",
316	    "conninfo_t *" },
317	{ "nfsv3", "op-readdir-done", 1, 1, "nfsv3oparg_t *",
318	    "nfsv3opinfo_t *" },
319	{ "nfsv3", "op-readdir-done", 2, 3, "READDIR3res *" },
320	{ "nfsv3", "op-readdirplus-start", 0, 0, "struct svc_req *",
321	    "conninfo_t *" },
322	{ "nfsv3", "op-readdirplus-start", 1, 1, "nfsv3oparg_t *",
323	    "nfsv3opinfo_t *" },
324	{ "nfsv3", "op-readdirplus-start", 2, 3, "READDIRPLUS3args *" },
325	{ "nfsv3", "op-readdirplus-done", 0, 0, "struct svc_req *",
326	    "conninfo_t *" },
327	{ "nfsv3", "op-readdirplus-done", 1, 1, "nfsv3oparg_t *",
328	    "nfsv3opinfo_t *" },
329	{ "nfsv3", "op-readdirplus-done", 2, 3, "READDIRPLUS3res *" },
330	{ "nfsv3", "op-readlink-start", 0, 0, "struct svc_req *",
331	    "conninfo_t *" },
332	{ "nfsv3", "op-readlink-start", 1, 1, "nfsv3oparg_t *",
333	    "nfsv3opinfo_t *" },
334	{ "nfsv3", "op-readlink-start", 2, 3, "READLINK3args *" },
335	{ "nfsv3", "op-readlink-done", 0, 0, "struct svc_req *",
336	    "conninfo_t *" },
337	{ "nfsv3", "op-readlink-done", 1, 1, "nfsv3oparg_t *",
338	    "nfsv3opinfo_t *" },
339	{ "nfsv3", "op-readlink-done", 2, 3, "READLINK3res *" },
340	{ "nfsv3", "op-remove-start", 0, 0, "struct svc_req *",
341	    "conninfo_t *" },
342	{ "nfsv3", "op-remove-start", 1, 1, "nfsv3oparg_t *",
343	    "nfsv3opinfo_t *" },
344	{ "nfsv3", "op-remove-start", 2, 3, "REMOVE3args *" },
345	{ "nfsv3", "op-remove-done", 0, 0, "struct svc_req *",
346	    "conninfo_t *" },
347	{ "nfsv3", "op-remove-done", 1, 1, "nfsv3oparg_t *",
348	    "nfsv3opinfo_t *" },
349	{ "nfsv3", "op-remove-done", 2, 3, "REMOVE3res *" },
350	{ "nfsv3", "op-rename-start", 0, 0, "struct svc_req *",
351	    "conninfo_t *" },
352	{ "nfsv3", "op-rename-start", 1, 1, "nfsv3oparg_t *",
353	    "nfsv3opinfo_t *" },
354	{ "nfsv3", "op-rename-start", 2, 3, "RENAME3args *" },
355	{ "nfsv3", "op-rename-done", 0, 0, "struct svc_req *",
356	    "conninfo_t *" },
357	{ "nfsv3", "op-rename-done", 1, 1, "nfsv3oparg_t *",
358	    "nfsv3opinfo_t *" },
359	{ "nfsv3", "op-rename-done", 2, 3, "RENAME3res *" },
360	{ "nfsv3", "op-rmdir-start", 0, 0, "struct svc_req *",
361	    "conninfo_t *" },
362	{ "nfsv3", "op-rmdir-start", 1, 1, "nfsv3oparg_t *",
363	    "nfsv3opinfo_t *" },
364	{ "nfsv3", "op-rmdir-start", 2, 3, "RMDIR3args *" },
365	{ "nfsv3", "op-rmdir-done", 0, 0, "struct svc_req *",
366	    "conninfo_t *" },
367	{ "nfsv3", "op-rmdir-done", 1, 1, "nfsv3oparg_t *",
368	    "nfsv3opinfo_t *" },
369	{ "nfsv3", "op-rmdir-done", 2, 3, "RMDIR3res *" },
370	{ "nfsv3", "op-setattr-start", 0, 0, "struct svc_req *",
371	    "conninfo_t *" },
372	{ "nfsv3", "op-setattr-start", 1, 1, "nfsv3oparg_t *",
373	    "nfsv3opinfo_t *" },
374	{ "nfsv3", "op-setattr-start", 2, 3, "SETATTR3args *" },
375	{ "nfsv3", "op-setattr-done", 0, 0, "struct svc_req *",
376	    "conninfo_t *" },
377	{ "nfsv3", "op-setattr-done", 1, 1, "nfsv3oparg_t *",
378	    "nfsv3opinfo_t *" },
379	{ "nfsv3", "op-setattr-done", 2, 3, "SETATTR3res *" },
380	{ "nfsv3", "op-symlink-start", 0, 0, "struct svc_req *",
381	    "conninfo_t *" },
382	{ "nfsv3", "op-symlink-start", 1, 1, "nfsv3oparg_t *",
383	    "nfsv3opinfo_t *" },
384	{ "nfsv3", "op-symlink-start", 2, 3, "SYMLINK3args *" },
385	{ "nfsv3", "op-symlink-done", 0, 0, "struct svc_req *",
386	    "conninfo_t *" },
387	{ "nfsv3", "op-symlink-done", 1, 1, "nfsv3oparg_t *",
388	    "nfsv3opinfo_t *" },
389	{ "nfsv3", "op-symlink-done", 2, 3, "SYMLINK3res *" },
390	{ "nfsv3", "op-write-start", 0, 0, "struct svc_req *",
391	    "conninfo_t *" },
392	{ "nfsv3", "op-write-start", 1, 1, "nfsv3oparg_t *",
393	    "nfsv3opinfo_t *" },
394	{ "nfsv3", "op-write-start", 2, 3, "WRITE3args *" },
395	{ "nfsv3", "op-write-done", 0, 0, "struct svc_req *",
396	    "conninfo_t *" },
397	{ "nfsv3", "op-write-done", 1, 1, "nfsv3oparg_t *",
398	    "nfsv3opinfo_t *" },
399	{ "nfsv3", "op-write-done", 2, 3, "WRITE3res *" },
400
401	{ "nfsv4", "null-start", 0, 0, "struct svc_req *", "conninfo_t *" },
402	{ "nfsv4", "null-done", 0, 0, "struct svc_req *", "conninfo_t *" },
403	{ "nfsv4", "compound-start", 0, 0, "struct compound_state *",
404	    "conninfo_t *" },
405	{ "nfsv4", "compound-start", 1, 0, "struct compound_state *",
406	    "nfsv4opinfo_t *" },
407	{ "nfsv4", "compound-start", 2, 1, "COMPOUND4args *" },
408	{ "nfsv4", "compound-done", 0, 0, "struct compound_state *",
409	    "conninfo_t *" },
410	{ "nfsv4", "compound-done", 1, 0, "struct compound_state *",
411	    "nfsv4opinfo_t *" },
412	{ "nfsv4", "compound-done", 2, 1, "COMPOUND4res *" },
413	{ "nfsv4", "op-access-start", 0, 0, "struct compound_state *",
414	    "conninfo_t *"},
415	{ "nfsv4", "op-access-start", 1, 0, "struct compound_state *",
416	    "nfsv4opinfo_t *" },
417	{ "nfsv4", "op-access-start", 2, 1, "ACCESS4args *" },
418	{ "nfsv4", "op-access-done", 0, 0, "struct compound_state *",
419	    "conninfo_t *" },
420	{ "nfsv4", "op-access-done", 1, 0, "struct compound_state *",
421	    "nfsv4opinfo_t *" },
422	{ "nfsv4", "op-access-done", 2, 1, "ACCESS4res *" },
423	{ "nfsv4", "op-close-start", 0, 0, "struct compound_state *",
424	    "conninfo_t *" },
425	{ "nfsv4", "op-close-start", 1, 0, "struct compound_state *",
426	    "nfsv4opinfo_t *" },
427	{ "nfsv4", "op-close-start", 2, 1, "CLOSE4args *" },
428	{ "nfsv4", "op-close-done", 0, 0, "struct compound_state *",
429	    "conninfo_t *" },
430	{ "nfsv4", "op-close-done", 1, 0, "struct compound_state *",
431	    "nfsv4opinfo_t *" },
432	{ "nfsv4", "op-close-done", 2, 1, "CLOSE4res *" },
433	{ "nfsv4", "op-commit-start", 0, 0, "struct compound_state *",
434	    "conninfo_t *" },
435	{ "nfsv4", "op-commit-start", 1, 0, "struct compound_state *",
436	    "nfsv4opinfo_t *" },
437	{ "nfsv4", "op-commit-start", 2, 1, "COMMIT4args *" },
438	{ "nfsv4", "op-commit-done", 0, 0, "struct compound_state *",
439	    "conninfo_t *" },
440	{ "nfsv4", "op-commit-done", 1, 0, "struct compound_state *",
441	    "nfsv4opinfo_t *" },
442	{ "nfsv4", "op-commit-done", 2, 1, "COMMIT4res *" },
443	{ "nfsv4", "op-create-start", 0, 0, "struct compound_state *",
444	    "conninfo_t *" },
445	{ "nfsv4", "op-create-start", 1, 0, "struct compound_state *",
446	    "nfsv4opinfo_t *" },
447	{ "nfsv4", "op-create-start", 2, 1, "CREATE4args *" },
448	{ "nfsv4", "op-create-done", 0, 0, "struct compound_state *",
449	    "conninfo_t *" },
450	{ "nfsv4", "op-create-done", 1, 0, "struct compound_state *",
451	    "nfsv4opinfo_t *" },
452	{ "nfsv4", "op-create-done", 2, 1, "CREATE4res *" },
453	{ "nfsv4", "op-delegpurge-start", 0, 0, "struct compound_state *",
454	    "conninfo_t *" },
455	{ "nfsv4", "op-delegpurge-start", 1, 0, "struct compound_state *",
456	    "nfsv4opinfo_t *" },
457	{ "nfsv4", "op-delegpurge-start", 2, 1, "DELEGPURGE4args *" },
458	{ "nfsv4", "op-delegpurge-done", 0, 0, "struct compound_state *",
459	    "conninfo_t *" },
460	{ "nfsv4", "op-delegpurge-done", 1, 0, "struct compound_state *",
461	    "nfsv4opinfo_t *" },
462	{ "nfsv4", "op-delegpurge-done", 2, 1, "DELEGPURGE4res *" },
463	{ "nfsv4", "op-delegreturn-start", 0, 0, "struct compound_state *",
464	    "conninfo_t *" },
465	{ "nfsv4", "op-delegreturn-start", 1, 0, "struct compound_state *",
466	    "nfsv4opinfo_t *" },
467	{ "nfsv4", "op-delegreturn-start", 2, 1, "DELEGRETURN4args *" },
468	{ "nfsv4", "op-delegreturn-done", 0, 0, "struct compound_state *",
469	    "conninfo_t *" },
470	{ "nfsv4", "op-delegreturn-done", 1, 0, "struct compound_state *",
471	    "nfsv4opinfo_t *" },
472	{ "nfsv4", "op-delegreturn-done", 2, 1, "DELEGRETURN4res *" },
473	{ "nfsv4", "op-getattr-start", 0, 0, "struct compound_state *",
474	    "conninfo_t *" },
475	{ "nfsv4", "op-getattr-start", 1, 0, "struct compound_state *",
476	    "nfsv4opinfo_t *" },
477	{ "nfsv4", "op-getattr-start", 2, 1, "GETATTR4args *" },
478	{ "nfsv4", "op-getattr-done", 0, 0, "struct compound_state *",
479	    "conninfo_t *" },
480	{ "nfsv4", "op-getattr-done", 1, 0, "struct compound_state *",
481	    "nfsv4opinfo_t *" },
482	{ "nfsv4", "op-getattr-done", 2, 1, "GETATTR4res *" },
483	{ "nfsv4", "op-getfh-start", 0, 0, "struct compound_state *",
484	    "conninfo_t *" },
485	{ "nfsv4", "op-getfh-start", 1, 0, "struct compound_state *",
486	    "nfsv4opinfo_t *" },
487	{ "nfsv4", "op-getfh-done", 0, 0, "struct compound_state *",
488	    "conninfo_t *" },
489	{ "nfsv4", "op-getfh-done", 1, 0, "struct compound_state *",
490	    "nfsv4opinfo_t *" },
491	{ "nfsv4", "op-getfh-done", 2, 1, "GETFH4res *" },
492	{ "nfsv4", "op-link-start", 0, 0, "struct compound_state *",
493	    "conninfo_t *" },
494	{ "nfsv4", "op-link-start", 1, 0, "struct compound_state *",
495	    "nfsv4opinfo_t *" },
496	{ "nfsv4", "op-link-start", 2, 1, "LINK4args *" },
497	{ "nfsv4", "op-link-done", 0, 0, "struct compound_state *",
498	    "conninfo_t *" },
499	{ "nfsv4", "op-link-done", 1, 0, "struct compound_state *",
500	    "nfsv4opinfo_t *" },
501	{ "nfsv4", "op-link-done", 2, 1, "LINK4res *" },
502	{ "nfsv4", "op-lock-start", 0, 0, "struct compound_state *",
503	    "conninfo_t *" },
504	{ "nfsv4", "op-lock-start", 1, 0, "struct compound_state *",
505	    "nfsv4opinfo_t *" },
506	{ "nfsv4", "op-lock-start", 2, 1, "LOCK4args *" },
507	{ "nfsv4", "op-lock-done", 0, 0, "struct compound_state *",
508	    "conninfo_t *" },
509	{ "nfsv4", "op-lock-done", 1, 0, "struct compound_state *",
510	    "nfsv4opinfo_t *" },
511	{ "nfsv4", "op-lock-done", 2, 1, "LOCK4res *" },
512	{ "nfsv4", "op-lockt-start", 0, 0, "struct compound_state *",
513	    "conninfo_t *" },
514	{ "nfsv4", "op-lockt-start", 1, 0, "struct compound_state *",
515	    "nfsv4opinfo_t *" },
516	{ "nfsv4", "op-lockt-start", 2, 1, "LOCKT4args *" },
517	{ "nfsv4", "op-lockt-done", 0, 0, "struct compound_state *",
518	    "conninfo_t *" },
519	{ "nfsv4", "op-lockt-done", 1, 0, "struct compound_state *",
520	    "nfsv4opinfo_t *" },
521	{ "nfsv4", "op-lockt-done", 2, 1, "LOCKT4res *" },
522	{ "nfsv4", "op-locku-start", 0, 0, "struct compound_state *",
523	    "conninfo_t *" },
524	{ "nfsv4", "op-locku-start", 1, 0, "struct compound_state *",
525	    "nfsv4opinfo_t *" },
526	{ "nfsv4", "op-locku-start", 2, 1, "LOCKU4args *" },
527	{ "nfsv4", "op-locku-done", 0, 0, "struct compound_state *",
528	    "conninfo_t *" },
529	{ "nfsv4", "op-locku-done", 1, 0, "struct compound_state *",
530	    "nfsv4opinfo_t *" },
531	{ "nfsv4", "op-locku-done", 2, 1, "LOCKU4res *" },
532	{ "nfsv4", "op-lookup-start", 0, 0, "struct compound_state *",
533	    "conninfo_t *" },
534	{ "nfsv4", "op-lookup-start", 1, 0, "struct compound_state *",
535	    "nfsv4opinfo_t *" },
536	{ "nfsv4", "op-lookup-start", 2, 1, "LOOKUP4args *" },
537	{ "nfsv4", "op-lookup-done", 0, 0, "struct compound_state *",
538	    "conninfo_t *" },
539	{ "nfsv4", "op-lookup-done", 1, 0, "struct compound_state *",
540	    "nfsv4opinfo_t *" },
541	{ "nfsv4", "op-lookup-done", 2, 1, "LOOKUP4res *" },
542	{ "nfsv4", "op-lookupp-start", 0, 0, "struct compound_state *",
543	    "conninfo_t *" },
544	{ "nfsv4", "op-lookupp-start", 1, 0, "struct compound_state *",
545	    "nfsv4opinfo_t *" },
546	{ "nfsv4", "op-lookupp-done", 0, 0, "struct compound_state *",
547	    "conninfo_t *" },
548	{ "nfsv4", "op-lookupp-done", 1, 0, "struct compound_state *",
549	    "nfsv4opinfo_t *" },
550	{ "nfsv4", "op-lookupp-done", 2, 1, "LOOKUPP4res *" },
551	{ "nfsv4", "op-nverify-start", 0, 0, "struct compound_state *",
552	    "conninfo_t *" },
553	{ "nfsv4", "op-nverify-start", 1, 0, "struct compound_state *",
554	    "nfsv4opinfo_t *" },
555	{ "nfsv4", "op-nverify-start", 2, 1, "NVERIFY4args *" },
556	{ "nfsv4", "op-nverify-done", 0, 0, "struct compound_state *",
557	    "conninfo_t *" },
558	{ "nfsv4", "op-nverify-done", 1, 0, "struct compound_state *",
559	    "nfsv4opinfo_t *" },
560	{ "nfsv4", "op-nverify-done", 2, 1, "NVERIFY4res *" },
561	{ "nfsv4", "op-open-start", 0, 0, "struct compound_state *",
562	    "conninfo_t *" },
563	{ "nfsv4", "op-open-start", 1, 0, "struct compound_state *",
564	    "nfsv4opinfo_t *" },
565	{ "nfsv4", "op-open-start", 2, 1, "OPEN4args *" },
566	{ "nfsv4", "op-open-done", 0, 0, "struct compound_state *",
567	    "conninfo_t *" },
568	{ "nfsv4", "op-open-done", 1, 0, "struct compound_state *",
569	    "nfsv4opinfo_t *" },
570	{ "nfsv4", "op-open-done", 2, 1, "OPEN4res *" },
571	{ "nfsv4", "op-open-confirm-start", 0, 0, "struct compound_state *",
572	    "conninfo_t *" },
573	{ "nfsv4", "op-open-confirm-start", 1, 0, "struct compound_state *",
574	    "nfsv4opinfo_t *" },
575	{ "nfsv4", "op-open-confirm-start", 2, 1, "OPEN_CONFIRM4args *" },
576	{ "nfsv4", "op-open-confirm-done", 0, 0, "struct compound_state *",
577	    "conninfo_t *" },
578	{ "nfsv4", "op-open-confirm-done", 1, 0, "struct compound_state *",
579	    "nfsv4opinfo_t *" },
580	{ "nfsv4", "op-open-confirm-done", 2, 1, "OPEN_CONFIRM4res *" },
581	{ "nfsv4", "op-open-downgrade-start", 0, 0, "struct compound_state *",
582	    "conninfo_t *" },
583	{ "nfsv4", "op-open-downgrade-start", 1, 0, "struct compound_state *",
584	    "nfsv4opinfo_t *" },
585	{ "nfsv4", "op-open-downgrade-start", 2, 1, "OPEN_DOWNGRADE4args *" },
586	{ "nfsv4", "op-open-downgrade-done", 0, 0, "struct compound_state *",
587	    "conninfo_t *" },
588	{ "nfsv4", "op-open-downgrade-done", 1, 0, "struct compound_state *",
589	    "nfsv4opinfo_t *" },
590	{ "nfsv4", "op-open-downgrade-done", 2, 1, "OPEN_DOWNGRADE4res *" },
591	{ "nfsv4", "op-openattr-start", 0, 0, "struct compound_state *",
592	    "conninfo_t *" },
593	{ "nfsv4", "op-openattr-start", 1, 0, "struct compound_state *",
594	    "nfsv4opinfo_t *" },
595	{ "nfsv4", "op-openattr-start", 2, 1, "OPENATTR4args *" },
596	{ "nfsv4", "op-openattr-done", 0, 0, "struct compound_state *",
597	    "conninfo_t *" },
598	{ "nfsv4", "op-openattr-done", 1, 0, "struct compound_state *",
599	    "nfsv4opinfo_t *" },
600	{ "nfsv4", "op-openattr-done", 2, 1, "OPENATTR4res *" },
601	{ "nfsv4", "op-putfh-start", 0, 0, "struct compound_state *",
602	    "conninfo_t *" },
603	{ "nfsv4", "op-putfh-start", 1, 0, "struct compound_state *",
604	    "nfsv4opinfo_t *" },
605	{ "nfsv4", "op-putfh-start", 2, 1, "PUTFH4args *" },
606	{ "nfsv4", "op-putfh-done", 0, 0, "struct compound_state *",
607	    "conninfo_t *" },
608	{ "nfsv4", "op-putfh-done", 1, 0, "struct compound_state *",
609	    "nfsv4opinfo_t *" },
610	{ "nfsv4", "op-putfh-done", 2, 1, "PUTFH4res *" },
611	{ "nfsv4", "op-putpubfh-start", 0, 0, "struct compound_state *",
612	    "conninfo_t *" },
613	{ "nfsv4", "op-putpubfh-start", 1, 0, "struct compound_state *",
614	    "nfsv4opinfo_t *" },
615	{ "nfsv4", "op-putpubfh-done", 0, 0, "struct compound_state *",
616	    "conninfo_t *" },
617	{ "nfsv4", "op-putpubfh-done", 1, 0, "struct compound_state *",
618	    "nfsv4opinfo_t *" },
619	{ "nfsv4", "op-putpubfh-done", 2, 1, "PUTPUBFH4res *" },
620	{ "nfsv4", "op-putrootfh-start", 0, 0, "struct compound_state *",
621	    "conninfo_t *" },
622	{ "nfsv4", "op-putrootfh-start", 1, 0, "struct compound_state *",
623	    "nfsv4opinfo_t *" },
624	{ "nfsv4", "op-putrootfh-done", 0, 0, "struct compound_state *",
625	    "conninfo_t *" },
626	{ "nfsv4", "op-putrootfh-done", 1, 0, "struct compound_state *",
627	    "nfsv4opinfo_t *" },
628	{ "nfsv4", "op-putrootfh-done", 2, 1, "PUTROOTFH4res *" },
629	{ "nfsv4", "op-read-start", 0, 0, "struct compound_state *",
630	    "conninfo_t *" },
631	{ "nfsv4", "op-read-start", 1, 0, "struct compound_state *",
632	    "nfsv4opinfo_t *" },
633	{ "nfsv4", "op-read-start", 2, 1, "READ4args *" },
634	{ "nfsv4", "op-read-done", 0, 0, "struct compound_state *",
635	    "conninfo_t *" },
636	{ "nfsv4", "op-read-done", 1, 0, "struct compound_state *",
637	    "nfsv4opinfo_t *" },
638	{ "nfsv4", "op-read-done", 2, 1, "READ4res *" },
639	{ "nfsv4", "op-readdir-start", 0, 0, "struct compound_state *",
640	    "conninfo_t *" },
641	{ "nfsv4", "op-readdir-start", 1, 0, "struct compound_state *",
642	    "nfsv4opinfo_t *" },
643	{ "nfsv4", "op-readdir-start", 2, 1, "READDIR4args *" },
644	{ "nfsv4", "op-readdir-done", 0, 0, "struct compound_state *",
645	    "conninfo_t *" },
646	{ "nfsv4", "op-readdir-done", 1, 0, "struct compound_state *",
647	    "nfsv4opinfo_t *" },
648	{ "nfsv4", "op-readdir-done", 2, 1, "READDIR4res *" },
649	{ "nfsv4", "op-readlink-start", 0, 0, "struct compound_state *",
650	    "conninfo_t *" },
651	{ "nfsv4", "op-readlink-start", 1, 0, "struct compound_state *",
652	    "nfsv4opinfo_t *" },
653	{ "nfsv4", "op-readlink-done", 0, 0, "struct compound_state *",
654	    "conninfo_t *" },
655	{ "nfsv4", "op-readlink-done", 1, 0, "struct compound_state *",
656	    "nfsv4opinfo_t *" },
657	{ "nfsv4", "op-readlink-done", 2, 1, "READLINK4res *" },
658	{ "nfsv4", "op-release-lockowner-start", 0, 0,
659	    "struct compound_state *", "conninfo_t *" },
660	{ "nfsv4", "op-release-lockowner-start", 1, 0,
661	    "struct compound_state *", "nfsv4opinfo_t *" },
662	{ "nfsv4", "op-release-lockowner-start", 2, 1,
663	    "RELEASE_LOCKOWNER4args *" },
664	{ "nfsv4", "op-release-lockowner-done", 0, 0,
665	    "struct compound_state *", "conninfo_t *" },
666	{ "nfsv4", "op-release-lockowner-done", 1, 0,
667	    "struct compound_state *", "nfsv4opinfo_t *" },
668	{ "nfsv4", "op-release-lockowner-done", 2, 1,
669	    "RELEASE_LOCKOWNER4res *" },
670	{ "nfsv4", "op-remove-start", 0, 0, "struct compound_state *",
671	    "conninfo_t *" },
672	{ "nfsv4", "op-remove-start", 1, 0, "struct compound_state *",
673	    "nfsv4opinfo_t *" },
674	{ "nfsv4", "op-remove-start", 2, 1, "REMOVE4args *" },
675	{ "nfsv4", "op-remove-done", 0, 0, "struct compound_state *",
676	    "conninfo_t *" },
677	{ "nfsv4", "op-remove-done", 1, 0, "struct compound_state *",
678	    "nfsv4opinfo_t *" },
679	{ "nfsv4", "op-remove-done", 2, 1, "REMOVE4res *" },
680	{ "nfsv4", "op-rename-start", 0, 0, "struct compound_state *",
681	    "conninfo_t *" },
682	{ "nfsv4", "op-rename-start", 1, 0, "struct compound_state *",
683	    "nfsv4opinfo_t *" },
684	{ "nfsv4", "op-rename-start", 2, 1, "RENAME4args *" },
685	{ "nfsv4", "op-rename-done", 0, 0, "struct compound_state *",
686	    "conninfo_t *" },
687	{ "nfsv4", "op-rename-done", 1, 0, "struct compound_state *",
688	    "nfsv4opinfo_t *" },
689	{ "nfsv4", "op-rename-done", 2, 1, "RENAME4res *" },
690	{ "nfsv4", "op-renew-start", 0, 0, "struct compound_state *",
691	    "conninfo_t *" },
692	{ "nfsv4", "op-renew-start", 1, 0, "struct compound_state *",
693	    "nfsv4opinfo_t *" },
694	{ "nfsv4", "op-renew-start", 2, 1, "RENEW4args *" },
695	{ "nfsv4", "op-renew-done", 0, 0, "struct compound_state *",
696	    "conninfo_t *" },
697	{ "nfsv4", "op-renew-done", 1, 0, "struct compound_state *",
698	    "nfsv4opinfo_t *" },
699	{ "nfsv4", "op-renew-done", 2, 1, "RENEW4res *" },
700	{ "nfsv4", "op-restorefh-start", 0, 0, "struct compound_state *",
701	    "conninfo_t *" },
702	{ "nfsv4", "op-restorefh-start", 1, 0, "struct compound_state *",
703	    "nfsv4opinfo_t *" },
704	{ "nfsv4", "op-restorefh-done", 0, 0, "struct compound_state *",
705	    "conninfo_t *" },
706	{ "nfsv4", "op-restorefh-done", 1, 0, "struct compound_state *",
707	    "nfsv4opinfo_t *" },
708	{ "nfsv4", "op-restorefh-done", 2, 1, "RESTOREFH4res *" },
709	{ "nfsv4", "op-savefh-start", 0, 0, "struct compound_state *",
710	    "conninfo_t *" },
711	{ "nfsv4", "op-savefh-start", 1, 0, "struct compound_state *",
712	    "nfsv4opinfo_t *" },
713	{ "nfsv4", "op-savefh-done", 0, 0, "struct compound_state *",
714	    "conninfo_t *" },
715	{ "nfsv4", "op-savefh-done", 1, 0, "struct compound_state *",
716	    "nfsv4opinfo_t *" },
717	{ "nfsv4", "op-savefh-done", 2, 1, "SAVEFH4res *" },
718	{ "nfsv4", "op-secinfo-start", 0, 0, "struct compound_state *",
719	    "conninfo_t *" },
720	{ "nfsv4", "op-secinfo-start", 1, 0, "struct compound_state *",
721	    "nfsv4opinfo_t *" },
722	{ "nfsv4", "op-secinfo-start", 2, 1, "SECINFO4args *" },
723	{ "nfsv4", "op-secinfo-done", 0, 0, "struct compound_state *",
724	    "conninfo_t *" },
725	{ "nfsv4", "op-secinfo-done", 1, 0, "struct compound_state *",
726	    "nfsv4opinfo_t *" },
727	{ "nfsv4", "op-secinfo-done", 2, 1, "SECINFO4res *" },
728	{ "nfsv4", "op-setattr-start", 0, 0, "struct compound_state *",
729	    "conninfo_t *" },
730	{ "nfsv4", "op-setattr-start", 1, 0, "struct compound_state *",
731	    "nfsv4opinfo_t *" },
732	{ "nfsv4", "op-setattr-start", 2, 1, "SETATTR4args *" },
733	{ "nfsv4", "op-setattr-done", 0, 0, "struct compound_state *",
734	    "conninfo_t *" },
735	{ "nfsv4", "op-setattr-done", 1, 0, "struct compound_state *",
736	    "nfsv4opinfo_t *" },
737	{ "nfsv4", "op-setattr-done", 2, 1, "SETATTR4res *" },
738	{ "nfsv4", "op-setclientid-start", 0, 0, "struct compound_state *",
739	    "conninfo_t *" },
740	{ "nfsv4", "op-setclientid-start", 1, 0, "struct compound_state *",
741	    "nfsv4opinfo_t *" },
742	{ "nfsv4", "op-setclientid-start", 2, 1, "SETCLIENTID4args *" },
743	{ "nfsv4", "op-setclientid-done", 0, 0, "struct compound_state *",
744	    "conninfo_t *" },
745	{ "nfsv4", "op-setclientid-done", 1, 0, "struct compound_state *",
746	    "nfsv4opinfo_t *" },
747	{ "nfsv4", "op-setclientid-done", 2, 1, "SETCLIENTID4res *" },
748	{ "nfsv4", "op-setclientid-confirm-start", 0, 0,
749	    "struct compound_state *", "conninfo_t *" },
750	{ "nfsv4", "op-setclientid-confirm-start", 1, 0,
751	    "struct compound_state *", "nfsv4opinfo_t *" },
752	{ "nfsv4", "op-setclientid-confirm-start", 2, 1,
753	    "SETCLIENTID_CONFIRM4args *" },
754	{ "nfsv4", "op-setclientid-confirm-done", 0, 0,
755	    "struct compound_state *", "conninfo_t *" },
756	{ "nfsv4", "op-setclientid-confirm-done", 1, 0,
757	    "struct compound_state *", "nfsv4opinfo_t *" },
758	{ "nfsv4", "op-setclientid-confirm-done", 2, 1,
759	    "SETCLIENTID_CONFIRM4res *" },
760	{ "nfsv4", "op-verify-start", 0, 0, "struct compound_state *",
761	    "conninfo_t *" },
762	{ "nfsv4", "op-verify-start", 1, 0, "struct compound_state *",
763	    "nfsv4opinfo_t *" },
764	{ "nfsv4", "op-verify-start", 2, 1, "VERIFY4args *" },
765	{ "nfsv4", "op-verify-done", 0, 0, "struct compound_state *",
766	    "conninfo_t *" },
767	{ "nfsv4", "op-verify-done", 1, 0, "struct compound_state *",
768	    "nfsv4opinfo_t *" },
769	{ "nfsv4", "op-verify-done", 2, 1, "VERIFY4res *" },
770	{ "nfsv4", "op-write-start", 0, 0, "struct compound_state *",
771	    "conninfo_t *" },
772	{ "nfsv4", "op-write-start", 1, 0, "struct compound_state *",
773	    "nfsv4opinfo_t *" },
774	{ "nfsv4", "op-write-start", 2, 1, "WRITE4args *" },
775	{ "nfsv4", "op-write-done", 0, 0, "struct compound_state *",
776	    "conninfo_t *" },
777	{ "nfsv4", "op-write-done", 1, 0, "struct compound_state *",
778	    "nfsv4opinfo_t *" },
779	{ "nfsv4", "op-write-done", 2, 1, "WRITE4res *" },
780	{ "nfsv4", "cb-recall-start", 0, 0, "rfs4_client_t *",
781	    "conninfo_t *" },
782	{ "nfsv4", "cb-recall-start", 1, 1, "rfs4_deleg_state_t *",
783	    "nfsv4cbinfo_t *" },
784	{ "nfsv4", "cb-recall-start", 2, 2, "CB_RECALL4args *" },
785	{ "nfsv4", "cb-recall-done", 0, 0, "rfs4_client_t *",
786	    "conninfo_t *" },
787	{ "nfsv4", "cb-recall-done", 1, 1, "rfs4_deleg_state_t *",
788	    "nfsv4cbinfo_t *" },
789	{ "nfsv4", "cb-recall-done", 2, 2, "CB_RECALL4res *" },
790
791	{ "sysevent", "post", 0, 0, "evch_bind_t *", "syseventchaninfo_t *" },
792	{ "sysevent", "post", 1, 1, "sysevent_impl_t *", "syseventinfo_t *" },
793
794	{ "xpv", "add-to-physmap-end", 0, 0, "int" },
795	{ "xpv", "add-to-physmap-start", 0, 0, "domid_t" },
796	{ "xpv", "add-to-physmap-start", 1, 1, "uint_t" },
797	{ "xpv", "add-to-physmap-start", 2, 2, "ulong_t" },
798	{ "xpv", "add-to-physmap-start", 3, 3, "ulong_t" },
799	{ "xpv", "decrease-reservation-end", 0, 0, "int" },
800	{ "xpv", "decrease-reservation-start", 0, 0, "domid_t" },
801	{ "xpv", "decrease-reservation-start", 1, 1, "ulong_t" },
802	{ "xpv", "decrease-reservation-start", 2, 2, "uint_t" },
803	{ "xpv", "decrease-reservation-start", 3, 3, "ulong_t *" },
804	{ "xpv", "dom-create-start", 0, 0, "xen_domctl_t *" },
805	{ "xpv", "dom-destroy-start", 0, 0, "domid_t" },
806	{ "xpv", "dom-pause-start", 0, 0, "domid_t" },
807	{ "xpv", "dom-unpause-start", 0, 0, "domid_t" },
808	{ "xpv", "dom-create-end", 0, 0, "int" },
809	{ "xpv", "dom-destroy-end", 0, 0, "int" },
810	{ "xpv", "dom-pause-end", 0, 0, "int" },
811	{ "xpv", "dom-unpause-end", 0, 0, "int" },
812	{ "xpv", "evtchn-op-end", 0, 0, "int" },
813	{ "xpv", "evtchn-op-start", 0, 0, "int" },
814	{ "xpv", "evtchn-op-start", 1, 1, "void *" },
815	{ "xpv", "increase-reservation-end", 0, 0, "int" },
816	{ "xpv", "increase-reservation-start", 0, 0, "domid_t" },
817	{ "xpv", "increase-reservation-start", 1, 1, "ulong_t" },
818	{ "xpv", "increase-reservation-start", 2, 2, "uint_t" },
819	{ "xpv", "increase-reservation-start", 3, 3, "ulong_t *" },
820	{ "xpv", "mmap-end", 0, 0, "int" },
821	{ "xpv", "mmap-entry", 0, 0, "ulong_t" },
822	{ "xpv", "mmap-entry", 1, 1, "ulong_t" },
823	{ "xpv", "mmap-entry", 2, 2, "ulong_t" },
824	{ "xpv", "mmap-start", 0, 0, "domid_t" },
825	{ "xpv", "mmap-start", 1, 1, "int" },
826	{ "xpv", "mmap-start", 2, 2, "privcmd_mmap_entry_t *" },
827	{ "xpv", "mmapbatch-end", 0, 0, "int" },
828	{ "xpv", "mmapbatch-end", 1, 1, "struct seg *" },
829	{ "xpv", "mmapbatch-end", 2, 2, "caddr_t" },
830	{ "xpv", "mmapbatch-start", 0, 0, "domid_t" },
831	{ "xpv", "mmapbatch-start", 1, 1, "int" },
832	{ "xpv", "mmapbatch-start", 2, 2, "caddr_t" },
833	{ "xpv", "mmu-ext-op-end", 0, 0, "int" },
834	{ "xpv", "mmu-ext-op-start", 0, 0, "int" },
835	{ "xpv", "mmu-ext-op-start", 1, 1, "struct mmuext_op *" },
836	{ "xpv", "mmu-update-start", 0, 0, "int" },
837	{ "xpv", "mmu-update-start", 1, 1, "int" },
838	{ "xpv", "mmu-update-start", 2, 2, "mmu_update_t *" },
839	{ "xpv", "mmu-update-end", 0, 0, "int" },
840	{ "xpv", "populate-physmap-end", 0, 0, "int" },
841	{ "xpv", "populate-physmap-start", 0, 0, "domid_t" },
842	{ "xpv", "populate-physmap-start", 1, 1, "ulong_t" },
843	{ "xpv", "populate-physmap-start", 2, 2, "ulong_t *" },
844	{ "xpv", "set-memory-map-end", 0, 0, "int" },
845	{ "xpv", "set-memory-map-start", 0, 0, "domid_t" },
846	{ "xpv", "set-memory-map-start", 1, 1, "int" },
847	{ "xpv", "set-memory-map-start", 2, 2, "struct xen_memory_map *" },
848	{ "xpv", "setvcpucontext-end", 0, 0, "int" },
849	{ "xpv", "setvcpucontext-start", 0, 0, "domid_t" },
850	{ "xpv", "setvcpucontext-start", 1, 1, "vcpu_guest_context_t *" },
851	{ NULL }
852};
853
854/*ARGSUSED*/
855void
856sdt_getargdesc(void *arg, dtrace_id_t id, void *parg, dtrace_argdesc_t *desc)
857{
858	sdt_probe_t *sdp = parg;
859	int i;
860
861	desc->dtargd_native[0] = '\0';
862	desc->dtargd_xlate[0] = '\0';
863
864	for (i = 0; sdt_args[i].sda_provider != NULL; i++) {
865		sdt_argdesc_t *a = &sdt_args[i];
866
867		if (strcmp(sdp->sdp_provider->sdtp_name, a->sda_provider) != 0)
868			continue;
869
870		if (a->sda_name != NULL &&
871		    strcmp(sdp->sdp_name, a->sda_name) != 0)
872			continue;
873
874		if (desc->dtargd_ndx != a->sda_ndx)
875			continue;
876
877		if (a->sda_native != NULL)
878			(void) strcpy(desc->dtargd_native, a->sda_native);
879
880		if (a->sda_xlate != NULL)
881			(void) strcpy(desc->dtargd_xlate, a->sda_xlate);
882
883		desc->dtargd_mapping = a->sda_mapping;
884		return;
885	}
886
887	desc->dtargd_ndx = DTRACE_ARGNONE;
888}
889