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