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