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