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