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         { "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         { "ip", "send", 0, 0, "mblk_t *", "pktinfo_t *" },
 793         { "ip", "send", 1, 1, "conn_t *", "csinfo_t *" },
 794         { "ip", "send", 2, 2, "void_ip_t *", "ipinfo_t *" },
 795         { "ip", "send", 3, 3, "__dtrace_ipsr_ill_t *", "ifinfo_t *" },
 796         { "ip", "send", 4, 4, "ipha_t *", "ipv4info_t *" },
 797         { "ip", "send", 5, 5, "ip6_t *", "ipv6info_t *" },
 798         { "ip", "send", 6, 6, "int" }, /* used by __dtrace_ipsr_ill_t */
 799         { "ip", "receive", 0, 0, "mblk_t *", "pktinfo_t *" },
 800         { "ip", "receive", 1, 1, "conn_t *", "csinfo_t *" },
 801         { "ip", "receive", 2, 2, "void_ip_t *", "ipinfo_t *" },
 802         { "ip", "receive", 3, 3, "__dtrace_ipsr_ill_t *", "ifinfo_t *" },
 803         { "ip", "receive", 4, 4, "ipha_t *", "ipv4info_t *" },
 804         { "ip", "receive", 5, 5, "ip6_t *", "ipv6info_t *" },
 805         { "ip", "receive", 6, 6, "int" }, /* used by __dtrace_ipsr_ill_t */
 806 
 807         { "sysevent", "post", 0, 0, "evch_bind_t *", "syseventchaninfo_t *" },
 808         { "sysevent", "post", 1, 1, "sysevent_impl_t *", "syseventinfo_t *" },
 809 
 810         { "xpv", "add-to-physmap-end", 0, 0, "int" },
 811         { "xpv", "add-to-physmap-start", 0, 0, "domid_t" },
 812         { "xpv", "add-to-physmap-start", 1, 1, "uint_t" },
 813         { "xpv", "add-to-physmap-start", 2, 2, "ulong_t" },
 814         { "xpv", "add-to-physmap-start", 3, 3, "ulong_t" },
 815         { "xpv", "decrease-reservation-end", 0, 0, "int" },
 816         { "xpv", "decrease-reservation-start", 0, 0, "domid_t" },
 817         { "xpv", "decrease-reservation-start", 1, 1, "ulong_t" },
 818         { "xpv", "decrease-reservation-start", 2, 2, "uint_t" },
 819         { "xpv", "decrease-reservation-start", 3, 3, "ulong_t *" },
 820         { "xpv", "dom-create-start", 0, 0, "xen_domctl_t *" },
 821         { "xpv", "dom-destroy-start", 0, 0, "domid_t" },
 822         { "xpv", "dom-pause-start", 0, 0, "domid_t" },
 823         { "xpv", "dom-unpause-start", 0, 0, "domid_t" },
 824         { "xpv", "dom-create-end", 0, 0, "int" },
 825         { "xpv", "dom-destroy-end", 0, 0, "int" },
 826         { "xpv", "dom-pause-end", 0, 0, "int" },
 827         { "xpv", "dom-unpause-end", 0, 0, "int" },
 828         { "xpv", "evtchn-op-end", 0, 0, "int" },
 829         { "xpv", "evtchn-op-start", 0, 0, "int" },
 830         { "xpv", "evtchn-op-start", 1, 1, "void *" },
 831         { "xpv", "increase-reservation-end", 0, 0, "int" },
 832         { "xpv", "increase-reservation-start", 0, 0, "domid_t" },
 833         { "xpv", "increase-reservation-start", 1, 1, "ulong_t" },
 834         { "xpv", "increase-reservation-start", 2, 2, "uint_t" },
 835         { "xpv", "increase-reservation-start", 3, 3, "ulong_t *" },
 836         { "xpv", "mmap-end", 0, 0, "int" },
 837         { "xpv", "mmap-entry", 0, 0, "ulong_t" },
 838         { "xpv", "mmap-entry", 1, 1, "ulong_t" },
 839         { "xpv", "mmap-entry", 2, 2, "ulong_t" },
 840         { "xpv", "mmap-start", 0, 0, "domid_t" },
 841         { "xpv", "mmap-start", 1, 1, "int" },
 842         { "xpv", "mmap-start", 2, 2, "privcmd_mmap_entry_t *" },
 843         { "xpv", "mmapbatch-end", 0, 0, "int" },
 844         { "xpv", "mmapbatch-end", 1, 1, "struct seg *" },
 845         { "xpv", "mmapbatch-end", 2, 2, "caddr_t" },
 846         { "xpv", "mmapbatch-start", 0, 0, "domid_t" },
 847         { "xpv", "mmapbatch-start", 1, 1, "int" },
 848         { "xpv", "mmapbatch-start", 2, 2, "caddr_t" },
 849         { "xpv", "mmu-ext-op-end", 0, 0, "int" },
 850         { "xpv", "mmu-ext-op-start", 0, 0, "int" },
 851         { "xpv", "mmu-ext-op-start", 1, 1, "struct mmuext_op *" },
 852         { "xpv", "mmu-update-start", 0, 0, "int" },
 853         { "xpv", "mmu-update-start", 1, 1, "int" },
 854         { "xpv", "mmu-update-start", 2, 2, "mmu_update_t *" },
 855         { "xpv", "mmu-update-end", 0, 0, "int" },
 856         { "xpv", "populate-physmap-end", 0, 0, "int" },
 857         { "xpv", "populate-physmap-start", 0, 0, "domid_t" },
 858         { "xpv", "populate-physmap-start", 1, 1, "ulong_t" },
 859         { "xpv", "populate-physmap-start", 2, 2, "ulong_t *" },
 860         { "xpv", "set-memory-map-end", 0, 0, "int" },
 861         { "xpv", "set-memory-map-start", 0, 0, "domid_t" },
 862         { "xpv", "set-memory-map-start", 1, 1, "int" },
 863         { "xpv", "set-memory-map-start", 2, 2, "struct xen_memory_map *" },
 864         { "xpv", "setvcpucontext-end", 0, 0, "int" },
 865         { "xpv", "setvcpucontext-start", 0, 0, "domid_t" },
 866         { "xpv", "setvcpucontext-start", 1, 1, "vcpu_guest_context_t *" },
 867         { NULL }
 868 };
 869 
 870 /*ARGSUSED*/
 871 void
 872 sdt_getargdesc(void *arg, dtrace_id_t id, void *parg, dtrace_argdesc_t *desc)
 873 {
 874         sdt_probe_t *sdp = parg;
 875         int i;
 876 
 877         desc->dtargd_native[0] = '\0';
 878         desc->dtargd_xlate[0] = '\0';
 879 
 880         for (i = 0; sdt_args[i].sda_provider != NULL; i++) {
 881                 sdt_argdesc_t *a = &sdt_args[i];
 882 
 883                 if (strcmp(sdp->sdp_provider->sdtp_name, a->sda_provider) != 0)
 884                         continue;
 885 
 886                 if (a->sda_name != NULL &&
 887                     strcmp(sdp->sdp_name, a->sda_name) != 0)
 888                         continue;
 889 
 890                 if (desc->dtargd_ndx != a->sda_ndx)
 891                         continue;
 892 
 893                 if (a->sda_native != NULL)
 894                         (void) strcpy(desc->dtargd_native, a->sda_native);
 895 
 896                 if (a->sda_xlate != NULL)
 897                         (void) strcpy(desc->dtargd_xlate, a->sda_xlate);
 898 
 899                 desc->dtargd_mapping = a->sda_mapping;
 900                 return;
 901         }
 902 
 903         desc->dtargd_ndx = DTRACE_ARGNONE;
 904 }