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 /*
  23  * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved.
  24  * Copyright (c) 2011, 2017 by Delphix. All rights reserved.
  25  * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
  26  * Copyright 2019 Joyent, Inc.
  27  * Copyright (c) 2014, OmniTI Computer Consulting, Inc. All rights reserved.
  28  */
  29 
  30 /*      Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T     */
  31 /*        All Rights Reserved   */
  32 
  33 
  34 #include <stdio.h>
  35 #include <stdlib.h>
  36 #include <unistd.h>
  37 #include <sys/types.h>
  38 #include <libproc.h>
  39 
  40 #include <ctype.h>
  41 #include <string.h>
  42 #include <sys/dlpi.h>
  43 #include <sys/ipc.h>
  44 #include <sys/ipc_impl.h>
  45 #include <sys/msg.h>
  46 #include <sys/sem.h>
  47 #include <sys/shm.h>
  48 #include <sys/fstyp.h>
  49 #if defined(__i386) || defined(__amd64)
  50 #include <sys/sysi86.h>
  51 #endif /* __i386 */
  52 #include <sys/unistd.h>
  53 #include <sys/file.h>
  54 #include <sys/tiuser.h>
  55 #include <sys/timod.h>
  56 #include <sys/stream.h>
  57 #include <sys/stropts.h>
  58 #include <sys/termios.h>
  59 #include <sys/termiox.h>
  60 #include <sys/jioctl.h>
  61 #include <sys/filio.h>
  62 #include <fcntl.h>
  63 #include <sys/termio.h>
  64 #include <sys/stermio.h>
  65 #include <sys/ttold.h>
  66 #include <sys/mount.h>
  67 #include <sys/utssys.h>
  68 #include <sys/sysconfig.h>
  69 #include <sys/statvfs.h>
  70 #include <sys/kstat.h>
  71 #include <sys/audio.h>
  72 #include <sys/mixer.h>
  73 #include <sys/cpc_impl.h>
  74 #include <sys/devpoll.h>
  75 #include <sys/strredir.h>
  76 #include <sys/sockio.h>
  77 #include <netinet/ip_mroute.h>
  78 #include <net/if.h>
  79 #include <net/if_arp.h>
  80 #include <sys/ptyvar.h>
  81 #include <sys/des.h>
  82 #include <sys/prnio.h>
  83 #include <sys/dtrace.h>
  84 #include <sys/crypto/ioctladmin.h>
  85 #include <sys/crypto/ioctl.h>
  86 #include <sys/kbio.h>
  87 #include <sys/ptms.h>
  88 #include <sys/aggr.h>
  89 #include <sys/dld.h>
  90 #include <net/simnet.h>
  91 #include <net/feth.h>
  92 #include <sys/vnic.h>
  93 #include <sys/fs/zfs.h>
  94 #include <inet/kssl/kssl.h>
  95 #include <sys/dkio.h>
  96 #include <sys/fdio.h>
  97 #include <sys/cdio.h>
  98 #include <sys/scsi/impl/uscsi.h>
  99 #include <sys/devinfo_impl.h>
 100 #include <sys/dumpadm.h>
 101 #include <sys/mntio.h>
 102 #include <inet/iptun.h>
 103 #include <sys/zcons.h>
 104 #include <sys/usb/clients/hid/hid.h>
 105 #include <sys/pm.h>
 106 #include <sys/soundcard.h>
 107 #include <sys/cpuid_drv.h>
 108 
 109 #include "ramdata.h"
 110 #include "proto.h"
 111 
 112 #define FCNTLMIN        F_DUPFD
 113 #define FCNTLMAX        F_FLOCKW
 114 const char *const FCNTLname[] = {
 115         "F_DUPFD",
 116         "F_GETFD",
 117         "F_SETFD",
 118         "F_GETFL",
 119         "F_SETFL",
 120         "F_O_GETLK",
 121         "F_SETLK",
 122         "F_SETLKW",
 123         "F_CHKFL",
 124         "F_DUP2FD",
 125         "F_ALLOCSP",
 126         "F_FREESP",
 127         NULL,           /* 12 */
 128         NULL,           /* 13 */
 129         "F_GETLK",
 130         NULL,           /* 15 */
 131         NULL,           /* 16 */
 132         NULL,           /* 17 */
 133         NULL,           /* 18 */
 134         NULL,           /* 19 */
 135         NULL,           /* 20 */
 136         NULL,           /* 21 */
 137         NULL,           /* 22 */
 138         "F_GETOWN",
 139         "F_SETOWN",
 140         "F_REVOKE",
 141         "F_HASREMOTELOCKS",
 142         "F_FREESP64",
 143         NULL,           /* 28 */
 144         NULL,           /* 29 */
 145         NULL,           /* 30 */
 146         NULL,           /* 31 */
 147         NULL,           /* 32 */
 148         "F_GETLK64",
 149         "F_SETLK64",
 150         "F_SETLKW64",
 151         "F_DUP2FD_CLOEXEC",
 152         "F_DUPFD_CLOEXEC",
 153         NULL,           /* 38 */
 154         NULL,           /* 39 */
 155         "F_SHARE",
 156         "F_UNSHARE",
 157         "F_SETLK_NBMAND",
 158         "F_SHARE_NBMAND",
 159         "F_SETLK64_NBMAND",
 160         NULL,           /* 45 */
 161         "F_BADFD",
 162         "F_OFD_GETLK",
 163         "F_OFD_SETLK",
 164         "F_OFD_SETLKW",
 165         NULL,           /* 50 */
 166         NULL,           /* 51 */
 167         NULL,           /* 52 */
 168         "F_FLOCK",
 169         "F_FLOCKW"
 170 };
 171 
 172 #define SYSFSMIN        GETFSIND
 173 #define SYSFSMAX        GETNFSTYP
 174 const char *const SYSFSname[] = {
 175         "GETFSIND",
 176         "GETFSTYP",
 177         "GETNFSTYP"
 178 };
 179 
 180 #define SCONFMIN        _CONFIG_NGROUPS
 181 #define SCONFMAX        _CONFIG_EPHID_MAX
 182 const char *const SCONFname[] = {
 183         "_CONFIG_NGROUPS",              /*  2 */
 184         "_CONFIG_CHILD_MAX",            /*  3 */
 185         "_CONFIG_OPEN_FILES",           /*  4 */
 186         "_CONFIG_POSIX_VER",            /*  5 */
 187         "_CONFIG_PAGESIZE",             /*  6 */
 188         "_CONFIG_CLK_TCK",              /*  7 */
 189         "_CONFIG_XOPEN_VER",            /*  8 */
 190         "_CONFIG_HRESCLK_TCK",          /*  9 */
 191         "_CONFIG_PROF_TCK",             /* 10 */
 192         "_CONFIG_NPROC_CONF",           /* 11 */
 193         "_CONFIG_NPROC_ONLN",           /* 12 */
 194         "_CONFIG_AIO_LISTIO_MAX",       /* 13 */
 195         "_CONFIG_AIO_MAX",              /* 14 */
 196         "_CONFIG_AIO_PRIO_DELTA_MAX",   /* 15 */
 197         "_CONFIG_DELAYTIMER_MAX",       /* 16 */
 198         "_CONFIG_MQ_OPEN_MAX",          /* 17 */
 199         "_CONFIG_MQ_PRIO_MAX",          /* 18 */
 200         "_CONFIG_RTSIG_MAX",            /* 19 */
 201         "_CONFIG_SEM_NSEMS_MAX",        /* 20 */
 202         "_CONFIG_SEM_VALUE_MAX",        /* 21 */
 203         "_CONFIG_SIGQUEUE_MAX",         /* 22 */
 204         "_CONFIG_SIGRT_MIN",            /* 23 */
 205         "_CONFIG_SIGRT_MAX",            /* 24 */
 206         "_CONFIG_TIMER_MAX",            /* 25 */
 207         "_CONFIG_PHYS_PAGES",           /* 26 */
 208         "_CONFIG_AVPHYS_PAGES",         /* 27 */
 209         "_CONFIG_COHERENCY",            /* 28 */
 210         "_CONFIG_SPLIT_CACHE",          /* 29 */
 211         "_CONFIG_ICACHESZ",             /* 30 */
 212         "_CONFIG_DCACHESZ",             /* 31 */
 213         "_CONFIG_ICACHELINESZ",         /* 32 */
 214         "_CONFIG_DCACHELINESZ",         /* 33 */
 215         "_CONFIG_ICACHEBLKSZ",          /* 34 */
 216         "_CONFIG_DCACHEBLKSZ",          /* 35 */
 217         "_CONFIG_DCACHETBLKSZ",         /* 36 */
 218         "_CONFIG_ICACHE_ASSOC",         /* 37 */
 219         "_CONFIG_DCACHE_ASSOC",         /* 38 */
 220         NULL,                           /* 39 */
 221         NULL,                           /* 40 */
 222         NULL,                           /* 41 */
 223         "_CONFIG_MAXPID",               /* 42 */
 224         "_CONFIG_STACK_PROT",           /* 43 */
 225         "_CONFIG_NPROC_MAX",            /* 44 */
 226         "_CONFIG_CPUID_MAX",            /* 45 */
 227         "_CONFIG_SYMLOOP_MAX",          /* 46 */
 228         "_CONFIG_EPHID_MAX",            /* 47 */
 229 };
 230 
 231 #define PATHCONFMIN     _PC_LINK_MAX
 232 #define PATHCONFMAX     _PC_XATTR_EXISTS
 233 const char *const PATHCONFname[] = {
 234         "_PC_LINK_MAX",                 /*  1 */
 235         "_PC_MAX_CANON",                /*  2 */
 236         "_PC_MAX_INPUT",                /*  3 */
 237         "_PC_NAME_MAX",                 /*  4 */
 238         "_PC_PATH_MAX",                 /*  5 */
 239         "_PC_PIPE_BUF",                 /*  6 */
 240         "_PC_NO_TRUNC",                 /*  7 */
 241         "_PC_VDISABLE",                 /*  8 */
 242         "_PC_CHOWN_RESTRICTED",         /*  9 */
 243         "_PC_ASYNC_IO",                 /* 10 */
 244         "_PC_PRIO_IO",                  /* 11 */
 245         "_PC_SYNC_IO",                  /* 12 */
 246         "_PC_ALLOC_SIZE_MIN",           /* 13 */
 247         "_PC_REC_INCR_XFER_SIZE",       /* 14 */
 248         "_PC_REC_MAX_XFER_SIZE",        /* 15 */
 249         "_PC_REC_MIN_XFER_SIZE",        /* 16 */
 250         "_PC_REC_XFER_ALIGN",           /* 17 */
 251         "_PC_SYMLINK_MAX",              /* 18 */
 252         "_PC_2_SYMLINKS",               /* 19 */
 253         "_PC_ACL_ENABLED",              /* 20 */
 254         "_PC_MIN_HOLE_SIZE",            /* 21 */
 255         "_PC_CASE_BEHAVIOR",            /* 22 */
 256         "_PC_SATTR_ENABLED",            /* 23 */
 257         "_PC_SATTR_EXISTS",             /* 24 */
 258         "_PC_ACCESS_FILTERING",         /* 25 */
 259         "_PC_TIMESTAMP_RESOLUTION",     /* 26 */
 260         NULL,                           /* 27 */
 261         NULL,                           /* 28 */
 262         NULL,                           /* 29 */
 263         NULL,                           /* 30 */
 264         NULL,                           /* 31 */
 265         NULL,                           /* 32 */
 266         NULL,                           /* 33 */
 267         NULL,                           /* 34 */
 268         NULL,                           /* 35 */
 269         NULL,                           /* 36 */
 270         NULL,                           /* 37 */
 271         NULL,                           /* 38 */
 272         NULL,                           /* 39 */
 273         NULL,                           /* 40 */
 274         NULL,                           /* 41 */
 275         NULL,                           /* 42 */
 276         NULL,                           /* 43 */
 277         NULL,                           /* 44 */
 278         NULL,                           /* 45 */
 279         NULL,                           /* 46 */
 280         NULL,                           /* 47 */
 281         NULL,                           /* 48 */
 282         NULL,                           /* 49 */
 283         NULL,                           /* 50 */
 284         NULL,                           /* 51 */
 285         NULL,                           /* 52 */
 286         NULL,                           /* 53 */
 287         NULL,                           /* 54 */
 288         NULL,                           /* 55 */
 289         NULL,                           /* 56 */
 290         NULL,                           /* 57 */
 291         NULL,                           /* 58 */
 292         NULL,                           /* 59 */
 293         NULL,                           /* 60 */
 294         NULL,                           /* 61 */
 295         NULL,                           /* 62 */
 296         NULL,                           /* 63 */
 297         NULL,                           /* 64 */
 298         NULL,                           /* 65 */
 299         NULL,                           /* 66 */
 300         "_PC_FILESIZEBITS",             /* 67 */
 301         NULL,                           /* 68 */
 302         NULL,                           /* 69 */
 303         NULL,                           /* 70 */
 304         NULL,                           /* 71 */
 305         NULL,                           /* 72 */
 306         NULL,                           /* 73 */
 307         NULL,                           /* 74 */
 308         NULL,                           /* 75 */
 309         NULL,                           /* 76 */
 310         NULL,                           /* 77 */
 311         NULL,                           /* 78 */
 312         NULL,                           /* 79 */
 313         NULL,                           /* 80 */
 314         NULL,                           /* 81 */
 315         NULL,                           /* 82 */
 316         NULL,                           /* 83 */
 317         NULL,                           /* 84 */
 318         NULL,                           /* 85 */
 319         NULL,                           /* 86 */
 320         NULL,                           /* 87 */
 321         NULL,                           /* 88 */
 322         NULL,                           /* 89 */
 323         NULL,                           /* 90 */
 324         NULL,                           /* 91 */
 325         NULL,                           /* 92 */
 326         NULL,                           /* 93 */
 327         NULL,                           /* 94 */
 328         NULL,                           /* 95 */
 329         NULL,                           /* 96 */
 330         NULL,                           /* 97 */
 331         NULL,                           /* 98 */
 332         NULL,                           /* 99 */
 333         "_PC_XATTR_ENABLED",            /* 100 */
 334         "_PC_XATTR_EXISTS",             /* 101, _PC_LAST */
 335 };
 336 
 337 const struct ioc {
 338         uint_t  code;
 339         const char *name;
 340         const char *datastruct;
 341 } ioc[] = {
 342         { (uint_t)TCGETA,       "TCGETA",       NULL },
 343         { (uint_t)TCSETA,       "TCSETA",       NULL },
 344         { (uint_t)TCSETAW,      "TCSETAW",      NULL },
 345         { (uint_t)TCSETAF,      "TCSETAF",      NULL },
 346         { (uint_t)TCFLSH,       "TCFLSH",       NULL },
 347         { (uint_t)TIOCKBON,     "TIOCKBON",     NULL },
 348         { (uint_t)TIOCKBOF,     "TIOCKBOF",     NULL },
 349         { (uint_t)KBENABLED,    "KBENABLED",    NULL },
 350         { (uint_t)TCGETS,       "TCGETS",       NULL },
 351         { (uint_t)TCSETS,       "TCSETS",       NULL },
 352         { (uint_t)TCSETSW,      "TCSETSW",      NULL },
 353         { (uint_t)TCSETSF,      "TCSETSF",      NULL },
 354         { (uint_t)TCXONC,       "TCXONC",       NULL },
 355         { (uint_t)TCSBRK,       "TCSBRK",       NULL },
 356         { (uint_t)TCDSET,       "TCDSET",       NULL },
 357         { (uint_t)RTS_TOG,      "RTS_TOG",      NULL },
 358         { (uint_t)TIOCSWINSZ,   "TIOCSWINSZ",   NULL },
 359         { (uint_t)TIOCGWINSZ,   "TIOCGWINSZ",   NULL },
 360         { (uint_t)TIOCGETD,     "TIOCGETD",     NULL },
 361         { (uint_t)TIOCSETD,     "TIOCSETD",     NULL },
 362         { (uint_t)TIOCHPCL,     "TIOCHPCL",     NULL },
 363         { (uint_t)TIOCGETP,     "TIOCGETP",     NULL },
 364         { (uint_t)TIOCSETP,     "TIOCSETP",     NULL },
 365         { (uint_t)TIOCSETN,     "TIOCSETN",     NULL },
 366         { (uint_t)TIOCEXCL,     "TIOCEXCL",     NULL },
 367         { (uint_t)TIOCNXCL,     "TIOCNXCL",     NULL },
 368         { (uint_t)TIOCFLUSH,    "TIOCFLUSH",    NULL },
 369         { (uint_t)TIOCSETC,     "TIOCSETC",     NULL },
 370         { (uint_t)TIOCGETC,     "TIOCGETC",     NULL },
 371         { (uint_t)TIOCGPGRP,    "TIOCGPGRP",    NULL },
 372         { (uint_t)TIOCSPGRP,    "TIOCSPGRP",    NULL },
 373         { (uint_t)TIOCGSID,     "TIOCGSID",     NULL },
 374         { (uint_t)TIOCSTI,      "TIOCSTI",      NULL },
 375         { (uint_t)TIOCMSET,     "TIOCMSET",     NULL },
 376         { (uint_t)TIOCMBIS,     "TIOCMBIS",     NULL },
 377         { (uint_t)TIOCMBIC,     "TIOCMBIC",     NULL },
 378         { (uint_t)TIOCMGET,     "TIOCMGET",     NULL },
 379         { (uint_t)TIOCREMOTE,   "TIOCREMOTE",   NULL },
 380         { (uint_t)TIOCSIGNAL,   "TIOCSIGNAL",   NULL },
 381         { (uint_t)TIOCSTART,    "TIOCSTART",    NULL },
 382         { (uint_t)TIOCSTOP,     "TIOCSTOP",     NULL },
 383         { (uint_t)TIOCNOTTY,    "TIOCNOTTY",    NULL },
 384         { (uint_t)TIOCSCTTY,    "TIOCSCTTY",    NULL },
 385         { (uint_t)TIOCOUTQ,     "TIOCOUTQ",     NULL },
 386         { (uint_t)TIOCGLTC,     "TIOCGLTC",     NULL },
 387         { (uint_t)TIOCSLTC,     "TIOCSLTC",     NULL },
 388         { (uint_t)TIOCCDTR,     "TIOCCDTR",     NULL },
 389         { (uint_t)TIOCSDTR,     "TIOCSDTR",     NULL },
 390         { (uint_t)TIOCCBRK,     "TIOCCBRK",     NULL },
 391         { (uint_t)TIOCSBRK,     "TIOCSBRK",     NULL },
 392         { (uint_t)TIOCLGET,     "TIOCLGET",     NULL },
 393         { (uint_t)TIOCLSET,     "TIOCLSET",     NULL },
 394         { (uint_t)TIOCLBIC,     "TIOCLBIC",     NULL },
 395         { (uint_t)TIOCLBIS,     "TIOCLBIS",     NULL },
 396 
 397         { (uint_t)TIOCSILOOP,   "TIOCSILOOP",   NULL },
 398         { (uint_t)TIOCCILOOP,   "TIOCSILOOP",   NULL },
 399 
 400         { (uint_t)TIOCGPPS,     "TIOCGPPS",     NULL },
 401         { (uint_t)TIOCSPPS,     "TIOCSPPS",     NULL },
 402         { (uint_t)TIOCGPPSEV,   "TIOCGPPSEV",   NULL },
 403 
 404         { (uint_t)TIOCPKT,      "TIOCPKT",      NULL }, /* ptyvar.h */
 405         { (uint_t)TIOCUCNTL,    "TIOCUCNTL",    NULL },
 406         { (uint_t)TIOCTCNTL,    "TIOCTCNTL",    NULL },
 407         { (uint_t)TIOCISPACE,   "TIOCISPACE",   NULL },
 408         { (uint_t)TIOCISIZE,    "TIOCISIZE",    NULL },
 409         { (uint_t)TIOCSSIZE,    "TIOCSSIZE",    "ttysize" },
 410         { (uint_t)TIOCGSIZE,    "TIOCGSIZE",    "ttysize" },
 411 
 412         /*
 413          * Unfortunately, the DLIOC and LDIOC codes overlap.  Since the LDIOC
 414          * ioctls (for xenix compatibility) are far less likely to be used, we
 415          * give preference to DLIOC.
 416          */
 417         { (uint_t)DLIOCRAW,     "DLIOCRAW",     NULL },
 418         { (uint_t)DLIOCNATIVE,  "DLIOCNATIVE",  NULL },
 419         { (uint_t)DLIOCIPNETINFO, "DLIOCIPNETINFO", NULL},
 420         { (uint_t)DLIOCLOWLINK, "DLIOCLOWLINK", NULL },
 421 
 422         { (uint_t)LDOPEN,       "LDOPEN",       NULL },
 423         { (uint_t)LDCLOSE,      "LDCLOSE",      NULL },
 424         { (uint_t)LDCHG,        "LDCHG",        NULL },
 425         { (uint_t)LDGETT,       "LDGETT",       NULL },
 426         { (uint_t)LDSETT,       "LDSETT",       NULL },
 427         { (uint_t)LDSMAP,       "LDSMAP",       NULL },
 428         { (uint_t)LDGMAP,       "LDGMAP",       NULL },
 429         { (uint_t)LDNMAP,       "LDNMAP",       NULL },
 430         { (uint_t)TCGETX,       "TCGETX",       NULL },
 431         { (uint_t)TCSETX,       "TCSETX",       NULL },
 432         { (uint_t)TCSETXW,      "TCSETXW",      NULL },
 433         { (uint_t)TCSETXF,      "TCSETXF",      NULL },
 434         { (uint_t)FIORDCHK,     "FIORDCHK",     NULL },
 435         { (uint_t)FIOCLEX,      "FIOCLEX",      NULL },
 436         { (uint_t)FIONCLEX,     "FIONCLEX",     NULL },
 437         { (uint_t)FIONREAD,     "FIONREAD",     NULL },
 438         { (uint_t)FIONBIO,      "FIONBIO",      NULL },
 439         { (uint_t)FIOASYNC,     "FIOASYNC",     NULL },
 440         { (uint_t)FIOSETOWN,    "FIOSETOWN",    NULL },
 441         { (uint_t)FIOGETOWN,    "FIOGETOWN",    NULL },
 442 #ifdef DIOCGETP
 443         { (uint_t)DIOCGETP,     "DIOCGETP",     NULL },
 444         { (uint_t)DIOCSETP,     "DIOCSETP",     NULL },
 445 #endif
 446 #ifdef DIOCGETC
 447         { (uint_t)DIOCGETC,     "DIOCGETC",     NULL },
 448         { (uint_t)DIOCGETB,     "DIOCGETB",     NULL },
 449         { (uint_t)DIOCSETE,     "DIOCSETE",     NULL },
 450 #endif
 451 #ifdef IFFORMAT
 452         { (uint_t)IFFORMAT,     "IFFORMAT",     NULL },
 453         { (uint_t)IFBCHECK,     "IFBCHECK",     NULL },
 454         { (uint_t)IFCONFIRM,    "IFCONFIRM",    NULL },
 455 #endif
 456 #ifdef LIOCGETP
 457         { (uint_t)LIOCGETP,     "LIOCGETP",     NULL },
 458         { (uint_t)LIOCSETP,     "LIOCSETP",     NULL },
 459         { (uint_t)LIOCGETS,     "LIOCGETS",     NULL },
 460         { (uint_t)LIOCSETS,     "LIOCSETS",     NULL },
 461 #endif
 462 #ifdef JBOOT
 463         { (uint_t)JBOOT,        "JBOOT",        NULL },
 464         { (uint_t)JTERM,        "JTERM",        NULL },
 465         { (uint_t)JMPX,         "JMPX", NULL },
 466 #ifdef JTIMO
 467         { (uint_t)JTIMO,        "JTIMO",        NULL },
 468 #endif
 469         { (uint_t)JWINSIZE,     "JWINSIZE",     NULL },
 470         { (uint_t)JTIMOM,       "JTIMOM",       NULL },
 471         { (uint_t)JZOMBOOT,     "JZOMBOOT",     NULL },
 472         { (uint_t)JAGENT,       "JAGENT",       NULL },
 473         { (uint_t)JTRUN,        "JTRUN",        NULL },
 474         { (uint_t)JXTPROTO,     "JXTPROTO",     NULL },
 475 #endif
 476         { (uint_t)KSTAT_IOC_CHAIN_ID,   "KSTAT_IOC_CHAIN_ID",   NULL },
 477         { (uint_t)KSTAT_IOC_READ,       "KSTAT_IOC_READ",       NULL },
 478         { (uint_t)KSTAT_IOC_WRITE,      "KSTAT_IOC_WRITE",      NULL },
 479         { (uint_t)STGET,        "STGET",        NULL },
 480         { (uint_t)STSET,        "STSET",        NULL },
 481         { (uint_t)STTHROW,      "STTHROW",      NULL },
 482         { (uint_t)STWLINE,      "STWLINE",      NULL },
 483         { (uint_t)STTSV,        "STTSV",        NULL },
 484         { (uint_t)I_NREAD,      "I_NREAD",      NULL },
 485         { (uint_t)I_PUSH,       "I_PUSH",       NULL },
 486         { (uint_t)I_POP,        "I_POP",        NULL },
 487         { (uint_t)I_LOOK,       "I_LOOK",       NULL },
 488         { (uint_t)I_FLUSH,      "I_FLUSH",      NULL },
 489         { (uint_t)I_SRDOPT,     "I_SRDOPT",     NULL },
 490         { (uint_t)I_GRDOPT,     "I_GRDOPT",     NULL },
 491         { (uint_t)I_STR,        "I_STR",        NULL },
 492         { (uint_t)I_SETSIG,     "I_SETSIG",     NULL },
 493         { (uint_t)I_GETSIG,     "I_GETSIG",     NULL },
 494         { (uint_t)I_FIND,       "I_FIND",       NULL },
 495         { (uint_t)I_LINK,       "I_LINK",       NULL },
 496         { (uint_t)I_UNLINK,     "I_UNLINK",     NULL },
 497         { (uint_t)I_PEEK,       "I_PEEK",       NULL },
 498         { (uint_t)I_FDINSERT,   "I_FDINSERT",   NULL },
 499         { (uint_t)I_SENDFD,     "I_SENDFD",     NULL },
 500         { (uint_t)I_RECVFD,     "I_RECVFD",     NULL },
 501         { (uint_t)I_SWROPT,     "I_SWROPT",     NULL },
 502         { (uint_t)I_GWROPT,     "I_GWROPT",     NULL },
 503         { (uint_t)I_LIST,       "I_LIST",       NULL },
 504         { (uint_t)I_PLINK,      "I_PLINK",      NULL },
 505         { (uint_t)I_PUNLINK,    "I_PUNLINK",    NULL },
 506         { (uint_t)I_FLUSHBAND,  "I_FLUSHBAND",  NULL },
 507         { (uint_t)I_CKBAND,     "I_CKBAND",     NULL },
 508         { (uint_t)I_GETBAND,    "I_GETBAND",    NULL },
 509         { (uint_t)I_ATMARK,     "I_ATMARK",     NULL },
 510         { (uint_t)I_SETCLTIME,  "I_SETCLTIME",  NULL },
 511         { (uint_t)I_GETCLTIME,  "I_GETCLTIME",  NULL },
 512         { (uint_t)I_CANPUT,     "I_CANPUT",     NULL },
 513         { (uint_t)I_ANCHOR,     "I_ANCHOR",     NULL },
 514         { (uint_t)_I_CMD,       "_I_CMD",       NULL },
 515 #ifdef TI_GETINFO
 516         { (uint_t)TI_GETINFO,   "TI_GETINFO",   NULL },
 517         { (uint_t)TI_OPTMGMT,   "TI_OPTMGMT",   NULL },
 518         { (uint_t)TI_BIND,      "TI_BIND",      NULL },
 519         { (uint_t)TI_UNBIND,    "TI_UNBIND",    NULL },
 520 #endif
 521 #ifdef  TI_CAPABILITY
 522         { (uint_t)TI_CAPABILITY,        "TI_CAPABILITY",        NULL },
 523 #endif
 524 #ifdef TI_GETMYNAME
 525         { (uint_t)TI_GETMYNAME,         "TI_GETMYNAME",         NULL },
 526         { (uint_t)TI_GETPEERNAME,       "TI_GETPEERNAME",       NULL },
 527         { (uint_t)TI_SETMYNAME,         "TI_SETMYNAME",         NULL },
 528         { (uint_t)TI_SETPEERNAME,       "TI_SETPEERNAME",       NULL },
 529 #endif
 530 #ifdef V_PREAD
 531         { (uint_t)V_PREAD,      "V_PREAD",      NULL },
 532         { (uint_t)V_PWRITE,     "V_PWRITE",     NULL },
 533         { (uint_t)V_PDREAD,     "V_PDREAD",     NULL },
 534         { (uint_t)V_PDWRITE,    "V_PDWRITE",    NULL },
 535 #if !defined(__i386) && !defined(__amd64)
 536         { (uint_t)V_GETSSZ,     "V_GETSSZ",     NULL },
 537 #endif /* !__i386 */
 538 #endif
 539         /* audio */
 540         { (uint_t)AUDIO_GETINFO,        "AUDIO_GETINFO",        NULL },
 541         { (uint_t)AUDIO_SETINFO,        "AUDIO_SETINFO",        NULL },
 542         { (uint_t)AUDIO_DRAIN,          "AUDIO_DRAIN",          NULL },
 543         { (uint_t)AUDIO_GETDEV,         "AUDIO_GETDEV",         NULL },
 544         { (uint_t)AUDIO_DIAG_LOOPBACK,  "AUDIO_DIAG_LOOPBACK",  NULL },
 545         { (uint_t)AUDIO_GET_CH_NUMBER,  "AUDIO_GET_CH_NUMBER",  NULL },
 546         { (uint_t)AUDIO_GET_CH_TYPE,    "AUDIO_GET_CH_TYPE",    NULL },
 547         { (uint_t)AUDIO_GET_NUM_CHS,    "AUDIO_GET_NUM_CHS",    NULL },
 548         { (uint_t)AUDIO_GET_AD_DEV,     "AUDIO_GET_AD_DEV",     NULL },
 549         { (uint_t)AUDIO_GET_APM_DEV,    "AUDIO_GET_APM_DEV",    NULL },
 550         { (uint_t)AUDIO_GET_AS_DEV,     "AUDIO_GET_AS_DEV",     NULL },
 551         { (uint_t)AUDIO_MIXER_MULTIPLE_OPEN,    "AUDIO_MIXER_MULTIPLE_OPEN",
 552             NULL },
 553         { (uint_t)AUDIO_MIXER_SINGLE_OPEN,      "AUDIO_MIXER_SINGLE_OPEN",
 554             NULL },
 555         { (uint_t)AUDIO_MIXER_GET_SAMPLE_RATES, "AUDIO_MIXER_GET_SAMPLE_RATES",
 556             NULL },
 557         { (uint_t)AUDIO_MIXERCTL_GETINFO,       "AUDIO_MIXERCTL_GETINFO",
 558             NULL },
 559         { (uint_t)AUDIO_MIXERCTL_SETINFO,       "AUDIO_MIXERCTL_SETINFO",
 560             NULL },
 561         { (uint_t)AUDIO_MIXERCTL_GET_CHINFO,    "AUDIO_MIXERCTL_GET_CHINFO",
 562             NULL },
 563         { (uint_t)AUDIO_MIXERCTL_SET_CHINFO,    "AUDIO_MIXERCTL_SET_CHINFO",
 564             NULL },
 565         { (uint_t)AUDIO_MIXERCTL_GET_MODE,      "AUDIO_MIXERCTL_GET_MODE",
 566             NULL },
 567         { (uint_t)AUDIO_MIXERCTL_SET_MODE,      "AUDIO_MIXERCTL_SET_MODE",
 568             NULL },
 569         /* new style Boomer (OSS) ioctls */
 570         { (uint_t)SNDCTL_SYSINFO,       "SNDCTL_SYSINFO",       NULL },
 571         { (uint_t)SNDCTL_AUDIOINFO,     "SNDCTL_AUDIOINFO",     NULL },
 572         { (uint_t)SNDCTL_AUDIOINFO_EX,  "SNDCTL_AUDIOINFO_EX",  NULL },
 573         { (uint_t)SNDCTL_MIXERINFO,     "SNDCTL_MIXERINFO",     NULL },
 574         { (uint_t)SNDCTL_CARDINFO,      "SNDCTL_CARDINFO",      NULL },
 575         { (uint_t)SNDCTL_ENGINEINFO,    "SNDCTL_ENGINEINFO",    NULL },
 576         { (uint_t)SNDCTL_MIX_NRMIX,     "SNDCTL_MIX_NRMIX",     NULL },
 577         { (uint_t)SNDCTL_MIX_NREXT,     "SNDCTL_MIX_NREXT",     NULL },
 578         { (uint_t)SNDCTL_MIX_EXTINFO,   "SNDCTL_MIX_EXTINFO",   NULL },
 579         { (uint_t)SNDCTL_MIX_READ,      "SNDCTL_MIX_READ",      NULL },
 580         { (uint_t)SNDCTL_MIX_WRITE,     "SNDCTL_MIX_WRITE",     NULL },
 581         { (uint_t)SNDCTL_MIX_ENUMINFO,  "SNDCTL_MIX_ENUMINFO",  NULL },
 582         { (uint_t)SNDCTL_MIX_DESCRIPTION,       "SNDCTL_MIX_DESCRIPTION",
 583             NULL },
 584         { (uint_t)SNDCTL_SETSONG,       "SNDCTL_SETSONG",       NULL },
 585         { (uint_t)SNDCTL_GETSONG,       "SNDCTL_GETSONG",       NULL },
 586         { (uint_t)SNDCTL_SETNAME,       "SNDCTL_SETNAME",       NULL },
 587         { (uint_t)SNDCTL_SETLABEL,      "SNDCTL_SETLABEL",      NULL },
 588         { (uint_t)SNDCTL_GETLABEL,      "SNDCTL_GETLABEL",      NULL },
 589         { (uint_t)SNDCTL_DSP_HALT,      "SNDCTL_DSP_HALT",      NULL },
 590         { (uint_t)SNDCTL_DSP_RESET,     "SNDCTL_DSP_RESET",     NULL },
 591         { (uint_t)SNDCTL_DSP_SYNC,      "SNDCTL_DSP_SYNC",      NULL },
 592         { (uint_t)SNDCTL_DSP_SPEED,     "SNDCTL_DSP_SPEED",     NULL },
 593         { (uint_t)SNDCTL_DSP_STEREO,    "SNDCTL_DSP_STEREO",    NULL },
 594         { (uint_t)SNDCTL_DSP_GETBLKSIZE,        "SNDCTL_DSP_GETBLKSIZE",
 595             NULL },
 596         { (uint_t)SNDCTL_DSP_SAMPLESIZE,        "SNDCTL_DSP_SAMPLESIZE",
 597             NULL },
 598         { (uint_t)SNDCTL_DSP_CHANNELS,  "SNDCTL_DSP_CHANNELS",  NULL },
 599         { (uint_t)SNDCTL_DSP_POST,      "SNDCTL_DSP_POST",      NULL },
 600         { (uint_t)SNDCTL_DSP_SUBDIVIDE, "SNDCTL_DSP_SUBDIVIDE", NULL },
 601         { (uint_t)SNDCTL_DSP_SETFRAGMENT,       "SNDCTL_DSP_SETFRAGMENT",
 602             NULL },
 603         { (uint_t)SNDCTL_DSP_GETFMTS,   "SNDCTL_DSP_GETFMTS",   NULL },
 604         { (uint_t)SNDCTL_DSP_SETFMT,    "SNDCTL_DSP_SETFMT",    NULL },
 605         { (uint_t)SNDCTL_DSP_GETOSPACE, "SNDCTL_DSP_GETOSPACE", NULL },
 606         { (uint_t)SNDCTL_DSP_GETISPACE, "SNDCTL_DSP_GETISPACE", NULL },
 607         { (uint_t)SNDCTL_DSP_GETCAPS,   "SNDCTL_DSP_CAPS",      NULL },
 608         { (uint_t)SNDCTL_DSP_GETTRIGGER,        "SNDCTL_DSP_GETTRIGGER",
 609             NULL },
 610         { (uint_t)SNDCTL_DSP_SETTRIGGER,        "SNDCTL_DSP_SETTRIGGER",
 611             NULL },
 612         { (uint_t)SNDCTL_DSP_GETIPTR,   "SNDCTL_DSP_GETIPTR",   NULL },
 613         { (uint_t)SNDCTL_DSP_GETOPTR,   "SNDCTL_DSP_GETOPTR",   NULL },
 614         { (uint_t)SNDCTL_DSP_SETSYNCRO, "SNDCTL_DSP_SETSYNCRO", NULL },
 615         { (uint_t)SNDCTL_DSP_SETDUPLEX, "SNDCTL_DSP_SETDUPLEX", NULL },
 616         { (uint_t)SNDCTL_DSP_PROFILE,   "SNDCTL_DSP_PROFILE",   NULL },
 617         { (uint_t)SNDCTL_DSP_GETODELAY, "SNDCTL_DSP_GETODELAY", NULL },
 618         { (uint_t)SNDCTL_DSP_GETPLAYVOL,        "SNDCTL_DSP_GETPLAYVOL",
 619             NULL },
 620         { (uint_t)SNDCTL_DSP_SETPLAYVOL,        "SNDCTL_DSP_SETPLAYVOL",
 621             NULL },
 622         { (uint_t)SNDCTL_DSP_GETERROR,  "SNDCTL_DSP_GETERROR",  NULL },
 623         { (uint_t)SNDCTL_DSP_READCTL,   "SNDCTL_DSP_READCTL",   NULL },
 624         { (uint_t)SNDCTL_DSP_WRITECTL,  "SNDCTL_DSP_WRITECTL",  NULL },
 625         { (uint_t)SNDCTL_DSP_SYNCGROUP, "SNDCTL_DSP_SYNCGROUP", NULL },
 626         { (uint_t)SNDCTL_DSP_SYNCSTART, "SNDCTL_DSP_SYNCSTART", NULL },
 627         { (uint_t)SNDCTL_DSP_COOKEDMODE,        "SNDCTL_DSP_COOKEDMODE",
 628             NULL },
 629         { (uint_t)SNDCTL_DSP_SILENCE,   "SNDCTL_DSP_SILENCE",   NULL },
 630         { (uint_t)SNDCTL_DSP_SKIP,      "SNDCTL_DSP_SKIP",      NULL },
 631         { (uint_t)SNDCTL_DSP_HALT_INPUT,        "SNDCTL_DSP_HALT_INPUT",
 632             NULL },
 633         { (uint_t)SNDCTL_DSP_HALT_OUTPUT,       "SNDCTL_DSP_HALT_OUTPUT",
 634             NULL },
 635         { (uint_t)SNDCTL_DSP_LOW_WATER, "SNDCTL_DSP_LOW_WATER", NULL },
 636         { (uint_t)SNDCTL_DSP_CURRENT_OPTR,      "SNDCTL_DSP_CURRENT_OPTR",
 637             NULL },
 638         { (uint_t)SNDCTL_DSP_CURRENT_IPTR,      "SNDCTL_DSP_CURRENT_IPTR",
 639             NULL },
 640         { (uint_t)SNDCTL_DSP_GET_RECSRC_NAMES,  "SNDCTL_DSP_GET_RECSRC_NAMES",
 641             NULL },
 642         { (uint_t)SNDCTL_DSP_GET_RECSRC,        "SNDCTL_DSP_GET_RECSRC",
 643             NULL },
 644         { (uint_t)SNDCTL_DSP_SET_RECSRC,        "SNDCTL_DSP_SET_RECSRC",
 645             NULL },
 646         { (uint_t)SNDCTL_DSP_GET_PLAYTGT_NAMES, "SNDCTL_DSP_GET_PLAYTGT_NAMES",
 647             NULL },
 648         { (uint_t)SNDCTL_DSP_GET_PLAYTGT,       "SNDCTL_DSP_GET_PLAYTGT",
 649             NULL },
 650         { (uint_t)SNDCTL_DSP_SET_PLAYTGT,       "SNDCTL_DSP_SET_PLAYTGT",
 651             NULL },
 652         { (uint_t)SNDCTL_DSP_GETRECVOL,         "SNDCTL_DSP_GETRECVOL",
 653             NULL },
 654         { (uint_t)SNDCTL_DSP_SETRECVOL,         "SNDCTL_DSP_SETRECVOL",
 655             NULL },
 656         { (uint_t)SNDCTL_DSP_GET_CHNORDER,      "SNDCTL_DSP_GET_CHNORDER",
 657             NULL },
 658         { (uint_t)SNDCTL_DSP_SET_CHNORDER,      "SNDCTL_DSP_SET_CHNORDER",
 659             NULL },
 660         { (uint_t)SNDCTL_DSP_GETIPEAKS, "SNDCTL_DSP_GETIPEAKS", NULL },
 661         { (uint_t)SNDCTL_DSP_GETOPEAKS, "SNDCTL_DSP_GETOPEAKS", NULL },
 662         { (uint_t)SNDCTL_DSP_POLICY,    "SNDCTL_DSP_POLICY",    NULL },
 663         { (uint_t)SNDCTL_DSP_GETCHANNELMASK,    "SNDCTL_DSP_GETCHANNELMASK",
 664             NULL },
 665         { (uint_t)SNDCTL_DSP_BIND_CHANNEL,      "SNDCTL_DSP_BIND_CHANNEL",
 666             NULL },
 667         { (uint_t)SOUND_MIXER_READ_VOLUME,      "SOUND_MIXER_READ_VOLUME",
 668             NULL },
 669         { (uint_t)SOUND_MIXER_READ_OGAIN,       "SOUND_MIXER_READ_OGAIN",
 670             NULL },
 671         { (uint_t)SOUND_MIXER_READ_PCM, "SOUND_MIXER_READ_PCM", NULL },
 672         { (uint_t)SOUND_MIXER_READ_IGAIN,       "SOUND_MIXER_READ_IGAIN",
 673             NULL },
 674         { (uint_t)SOUND_MIXER_READ_RECLEV,      "SOUND_MIXER_READ_RECLEV",
 675             NULL },
 676         { (uint_t)SOUND_MIXER_READ_RECSRC,      "SOUND_MIXER_READ_RECSRC",
 677             NULL },
 678         { (uint_t)SOUND_MIXER_READ_DEVMASK,     "SOUND_MIXER_READ_DEVMASK",
 679             NULL },
 680         { (uint_t)SOUND_MIXER_READ_RECMASK,     "SOUND_MIXER_READ_RECMASK",
 681             NULL },
 682         { (uint_t)SOUND_MIXER_READ_CAPS,        "SOUND_MIXER_READ_CAPS",
 683             NULL },
 684         { (uint_t)SOUND_MIXER_READ_STEREODEVS,  "SOUND_MIXER_READ_STEREODEVS",
 685             NULL },
 686         { (uint_t)SOUND_MIXER_READ_RECGAIN,     "SOUND_MIXER_READ_RECGAIN",
 687             NULL },
 688         { (uint_t)SOUND_MIXER_READ_MONGAIN,     "SOUND_MIXER_READ_MONGAIN",
 689             NULL },
 690         { (uint_t)SOUND_MIXER_WRITE_VOLUME,     "SOUND_MIXER_WRITE_VOLUME",
 691             NULL },
 692         { (uint_t)SOUND_MIXER_WRITE_OGAIN,      "SOUND_MIXER_WRITE_OGAIN",
 693             NULL },
 694         { (uint_t)SOUND_MIXER_WRITE_PCM,        "SOUND_MIXER_WRITE_PCM",
 695             NULL },
 696         { (uint_t)SOUND_MIXER_WRITE_IGAIN,      "SOUND_MIXER_WRITE_IGAIN",
 697             NULL },
 698         { (uint_t)SOUND_MIXER_WRITE_RECLEV,     "SOUND_MIXER_WRITE_RECLEV",
 699             NULL },
 700         { (uint_t)SOUND_MIXER_WRITE_RECSRC,     "SOUND_MIXER_WRITE_RECSRC",
 701             NULL },
 702         { (uint_t)SOUND_MIXER_WRITE_RECGAIN,    "SOUND_MIXER_WRITE_RECGAIN",
 703             NULL },
 704         { (uint_t)SOUND_MIXER_WRITE_MONGAIN,    "SOUND_MIXER_WRITE_MONGAIN",
 705             NULL },
 706 
 707         /* STREAMS redirection ioctls */
 708         { (uint_t)SRIOCSREDIR,          "SRIOCSREDIR",  NULL },
 709         { (uint_t)SRIOCISREDIR,         "SRIOCISREDIR", NULL },
 710         { (uint_t)CPCIO_BIND,           "CPCIO_BIND",           NULL },
 711         { (uint_t)CPCIO_SAMPLE,         "CPCIO_SAMPLE",         NULL },
 712         { (uint_t)CPCIO_RELE,           "CPCIO_RELE",           NULL },
 713         /* /dev/poll ioctl() control codes */
 714         { (uint_t)DP_POLL,      "DP_POLL",      NULL },
 715         { (uint_t)DP_ISPOLLED,  "DP_ISPOLLED",  NULL },
 716         { (uint_t)DP_PPOLL,     "DP_PPOLL",     NULL },
 717         { (uint_t)DP_EPOLLCOMPAT, "DP_EPOLLCOMPAT",     NULL },
 718         /* the old /proc ioctl() control codes */
 719 #define PIOC    ('q'<<8)
 720         { (uint_t)(PIOC|1),     "PIOCSTATUS",   NULL },
 721         { (uint_t)(PIOC|2),     "PIOCSTOP",     NULL },
 722         { (uint_t)(PIOC|3),     "PIOCWSTOP",    NULL },
 723         { (uint_t)(PIOC|4),     "PIOCRUN",      NULL },
 724         { (uint_t)(PIOC|5),     "PIOCGTRACE",   NULL },
 725         { (uint_t)(PIOC|6),     "PIOCSTRACE",   NULL },
 726         { (uint_t)(PIOC|7),     "PIOCSSIG",     NULL },
 727         { (uint_t)(PIOC|8),     "PIOCKILL",     NULL },
 728         { (uint_t)(PIOC|9),     "PIOCUNKILL",   NULL },
 729         { (uint_t)(PIOC|10),    "PIOCGHOLD",    NULL },
 730         { (uint_t)(PIOC|11),    "PIOCSHOLD",    NULL },
 731         { (uint_t)(PIOC|12),    "PIOCMAXSIG",   NULL },
 732         { (uint_t)(PIOC|13),    "PIOCACTION",   NULL },
 733         { (uint_t)(PIOC|14),    "PIOCGFAULT",   NULL },
 734         { (uint_t)(PIOC|15),    "PIOCSFAULT",   NULL },
 735         { (uint_t)(PIOC|16),    "PIOCCFAULT",   NULL },
 736         { (uint_t)(PIOC|17),    "PIOCGENTRY",   NULL },
 737         { (uint_t)(PIOC|18),    "PIOCSENTRY",   NULL },
 738         { (uint_t)(PIOC|19),    "PIOCGEXIT",    NULL },
 739         { (uint_t)(PIOC|20),    "PIOCSEXIT",    NULL },
 740         { (uint_t)(PIOC|21),    "PIOCSFORK",    NULL },
 741         { (uint_t)(PIOC|22),    "PIOCRFORK",    NULL },
 742         { (uint_t)(PIOC|23),    "PIOCSRLC",     NULL },
 743         { (uint_t)(PIOC|24),    "PIOCRRLC",     NULL },
 744         { (uint_t)(PIOC|25),    "PIOCGREG",     NULL },
 745         { (uint_t)(PIOC|26),    "PIOCSREG",     NULL },
 746         { (uint_t)(PIOC|27),    "PIOCGFPREG",   NULL },
 747         { (uint_t)(PIOC|28),    "PIOCSFPREG",   NULL },
 748         { (uint_t)(PIOC|29),    "PIOCNICE",     NULL },
 749         { (uint_t)(PIOC|30),    "PIOCPSINFO",   NULL },
 750         { (uint_t)(PIOC|31),    "PIOCNMAP",     NULL },
 751         { (uint_t)(PIOC|32),    "PIOCMAP",      NULL },
 752         { (uint_t)(PIOC|33),    "PIOCOPENM",    NULL },
 753         { (uint_t)(PIOC|34),    "PIOCCRED",     NULL },
 754         { (uint_t)(PIOC|35),    "PIOCGROUPS",   NULL },
 755         { (uint_t)(PIOC|36),    "PIOCGETPR",    NULL },
 756         { (uint_t)(PIOC|37),    "PIOCGETU",     NULL },
 757         { (uint_t)(PIOC|38),    "PIOCSET",      NULL },
 758         { (uint_t)(PIOC|39),    "PIOCRESET",    NULL },
 759         { (uint_t)(PIOC|43),    "PIOCUSAGE",    NULL },
 760         { (uint_t)(PIOC|44),    "PIOCOPENPD",   NULL },
 761         { (uint_t)(PIOC|45),    "PIOCLWPIDS",   NULL },
 762         { (uint_t)(PIOC|46),    "PIOCOPENLWP",  NULL },
 763         { (uint_t)(PIOC|47),    "PIOCLSTATUS",  NULL },
 764         { (uint_t)(PIOC|48),    "PIOCLUSAGE",   NULL },
 765         { (uint_t)(PIOC|49),    "PIOCNAUXV",    NULL },
 766         { (uint_t)(PIOC|50),    "PIOCAUXV",     NULL },
 767         { (uint_t)(PIOC|51),    "PIOCGXREGSIZE",        NULL },
 768         { (uint_t)(PIOC|52),    "PIOCGXREG",    NULL },
 769         { (uint_t)(PIOC|53),    "PIOCSXREG",    NULL },
 770         { (uint_t)(PIOC|101),   "PIOCGWIN",     NULL },
 771         { (uint_t)(PIOC|103),   "PIOCNLDT",     NULL },
 772         { (uint_t)(PIOC|104),   "PIOCLDT",      NULL },
 773 
 774         /* ioctl's applicable on sockets */
 775         { (uint_t)SIOCSHIWAT,   "SIOCSHIWAT",   NULL },
 776         { (uint_t)SIOCGHIWAT,   "SIOCGHIWAT",   NULL },
 777         { (uint_t)SIOCSLOWAT,   "SIOCSLOWAT",   NULL },
 778         { (uint_t)SIOCGLOWAT,   "SIOCGLOWAT",   NULL },
 779         { (uint_t)SIOCATMARK,   "SIOCATMARK",   NULL },
 780         { (uint_t)SIOCSPGRP,    "SIOCSPGRP",    NULL },
 781         { (uint_t)SIOCGPGRP,    "SIOCGPGRP",    NULL },
 782         { (uint_t)SIOCADDRT,    "SIOCADDRT",    "rtentry" },
 783         { (uint_t)SIOCDELRT,    "SIOCDELRT",    "rtentry" },
 784         { (uint_t)SIOCGETVIFCNT,        "SIOCGETVIFCNT", "sioc_vif_req" },
 785         { (uint_t)SIOCGETSGCNT, "SIOCGETSGCNT", "sioc_sg_req" },
 786         { (uint_t)SIOCGETLSGCNT,        "SIOCGETLSGCNT", "sioc_lsg_req" },
 787         { (uint_t)SIOCSIFADDR,  "SIOCSIFADDR",  "ifreq" },
 788         { (uint_t)SIOCGIFADDR,  "SIOCGIFADDR",  "ifreq" },
 789         { (uint_t)SIOCSIFDSTADDR,       "SIOCSIFDSTADDR", "ifreq" },
 790         { (uint_t)SIOCGIFDSTADDR,       "SIOCGIFDSTADDR", "ifreq" },
 791         { (uint_t)SIOCSIFFLAGS, "SIOCSIFFLAGS", "ifreq" },
 792         { (uint_t)SIOCGIFFLAGS, "SIOCGIFFLAGS", "ifreq" },
 793         { (uint_t)SIOCSIFMEM,   "SIOCSIFMEM",   "ifreq" },
 794         { (uint_t)SIOCGIFMEM,   "SIOCGIFMEM",   "ifreq" },
 795         { (uint_t)SIOCGIFCONF,  "SIOCGIFCONF",  "ifconf" },
 796         { (uint_t)SIOCSIFMTU,   "SIOCSIFMTU",   "ifreq" },
 797         { (uint_t)SIOCGIFMTU,   "SIOCGIFMTU",   "ifreq" },
 798         { (uint_t)SIOCGIFBRDADDR,       "SIOCGIFBRDADDR",       "ifreq" },
 799         { (uint_t)SIOCSIFBRDADDR,       "SIOCSIFBRDADDR",       "ifreq" },
 800         { (uint_t)SIOCGIFNETMASK,       "SIOCGIFNETMASK",       "ifreq" },
 801         { (uint_t)SIOCSIFNETMASK,       "SIOCSIFNETMASK",       "ifreq" },
 802         { (uint_t)SIOCGIFMETRIC,        "SIOCGIFMETRIC",        "ifreq" },
 803         { (uint_t)SIOCSIFMETRIC,        "SIOCSIFMETRIC",        "ifreq" },
 804         { (uint_t)SIOCSARP,     "SIOCSARP",     "arpreq" },
 805         { (uint_t)SIOCGARP,     "SIOCGARP",     "arpreq" },
 806         { (uint_t)SIOCDARP,     "SIOCDARP",     "arpreq" },
 807         { (uint_t)SIOCUPPER,    "SIOCUPPER",    "ifreq" },
 808         { (uint_t)SIOCLOWER,    "SIOCLOWER",    "ifreq" },
 809         { (uint_t)SIOCSETSYNC,  "SIOCSETSYNC",  "ifreq" },
 810         { (uint_t)SIOCGETSYNC,  "SIOCGETSYNC",  "ifreq" },
 811         { (uint_t)SIOCSSDSTATS, "SIOCSSDSTATS", "ifreq" },
 812         { (uint_t)SIOCSSESTATS, "SIOCSSESTATS", "ifreq" },
 813         { (uint_t)SIOCSPROMISC, "SIOCSPROMISC", NULL },
 814         { (uint_t)SIOCADDMULTI, "SIOCADDMULTI", "ifreq" },
 815         { (uint_t)SIOCDELMULTI, "SIOCDELMULTI", "ifreq" },
 816         { (uint_t)SIOCGETNAME,  "SIOCGETNAME",  "sockaddr" },
 817         { (uint_t)SIOCGETPEER,  "SIOCGETPEER",  "sockaddr" },
 818         { (uint_t)IF_UNITSEL,   "IF_UNITSEL",   NULL },
 819         { (uint_t)SIOCXPROTO,   "SIOCXPROTO",   NULL },
 820         { (uint_t)SIOCIFDETACH, "SIOCIFDETACH", "ifreq" },
 821         { (uint_t)SIOCGENPSTATS,        "SIOCGENPSTATS",        "ifreq" },
 822         { (uint_t)SIOCX25XMT,   "SIOCX25XMT",   "ifreq" },
 823         { (uint_t)SIOCX25RCV,   "SIOCX25RCV",   "ifreq" },
 824         { (uint_t)SIOCX25TBL,   "SIOCX25TBL",   "ifreq" },
 825         { (uint_t)SIOCSLGETREQ, "SIOCSLGETREQ", "ifreq" },
 826         { (uint_t)SIOCSLSTAT,   "SIOCSLSTAT",   "ifreq" },
 827         { (uint_t)SIOCSIFNAME,  "SIOCSIFNAME",  "ifreq" },
 828         { (uint_t)SIOCGENADDR,  "SIOCGENADDR",  "ifreq" },
 829         { (uint_t)SIOCGIFNUM,   "SIOCGIFNUM",   NULL },
 830         { (uint_t)SIOCGIFMUXID, "SIOCGIFMUXID", "ifreq" },
 831         { (uint_t)SIOCSIFMUXID, "SIOCSIFMUXID", "ifreq" },
 832         { (uint_t)SIOCGIFINDEX, "SIOCGIFINDEX", "ifreq" },
 833         { (uint_t)SIOCSIFINDEX, "SIOCSIFINDEX", "ifreq" },
 834         { (uint_t)SIOCLIFREMOVEIF,      "SIOCLIFREMOVEIF",      "lifreq" },
 835         { (uint_t)SIOCLIFADDIF,         "SIOCLIFADDIF",         "lifreq" },
 836         { (uint_t)SIOCSLIFADDR,         "SIOCSLIFADDR",         "lifreq" },
 837         { (uint_t)SIOCGLIFADDR,         "SIOCGLIFADDR",         "lifreq" },
 838         { (uint_t)SIOCSLIFDSTADDR,      "SIOCSLIFDSTADDR",      "lifreq" },
 839         { (uint_t)SIOCGLIFDSTADDR,      "SIOCGLIFDSTADDR",      "lifreq" },
 840         { (uint_t)SIOCSLIFFLAGS,        "SIOCSLIFFLAGS",        "lifreq" },
 841         { (uint_t)SIOCGLIFFLAGS,        "SIOCGLIFFLAGS",        "lifreq" },
 842         { (uint_t)SIOCGLIFCONF,         "SIOCGLIFCONF",         "lifconf" },
 843         { (uint_t)SIOCSLIFMTU,          "SIOCSLIFMTU",          "lifreq" },
 844         { (uint_t)SIOCGLIFMTU,          "SIOCGLIFMTU",          "lifreq" },
 845         { (uint_t)SIOCGLIFBRDADDR,      "SIOCGLIFBRDADDR",      "lifreq" },
 846         { (uint_t)SIOCSLIFBRDADDR,      "SIOCSLIFBRDADDR",      "lifreq" },
 847         { (uint_t)SIOCGLIFNETMASK,      "SIOCGLIFNETMASK",      "lifreq" },
 848         { (uint_t)SIOCSLIFNETMASK,      "SIOCSLIFNETMASK",      "lifreq" },
 849         { (uint_t)SIOCGLIFMETRIC,       "SIOCGLIFMETRIC",       "lifreq" },
 850         { (uint_t)SIOCSLIFMETRIC,       "SIOCSLIFMETRIC",       "lifreq" },
 851         { (uint_t)SIOCSLIFNAME,         "SIOCSLIFNAME",         "lifreq" },
 852         { (uint_t)SIOCGLIFNUM,          "SIOCGLIFNUM",          "lifnum" },
 853         { (uint_t)SIOCGLIFMUXID,        "SIOCGLIFMUXID",        "lifreq" },
 854         { (uint_t)SIOCSLIFMUXID,        "SIOCSLIFMUXID",        "lifreq" },
 855         { (uint_t)SIOCGLIFINDEX,        "SIOCGLIFINDEX",        "lifreq" },
 856         { (uint_t)SIOCSLIFINDEX,        "SIOCSLIFINDEX",        "lifreq" },
 857         { (uint_t)SIOCSLIFTOKEN,        "SIOCSLIFTOKEN",        "lifreq" },
 858         { (uint_t)SIOCGLIFTOKEN,        "SIOCGLIFTOKEN",        "lifreq" },
 859         { (uint_t)SIOCSLIFSUBNET,       "SIOCSLIFSUBNET",       "lifreq" },
 860         { (uint_t)SIOCGLIFSUBNET,       "SIOCGLIFSUBNET",       "lifreq" },
 861         { (uint_t)SIOCSLIFLNKINFO,      "SIOCSLIFLNKINFO",      "lifreq" },
 862         { (uint_t)SIOCGLIFLNKINFO,      "SIOCGLIFLNKINFO",      "lifreq" },
 863         { (uint_t)SIOCLIFDELND,         "SIOCLIFDELND",         "lifreq" },
 864         { (uint_t)SIOCLIFGETND,         "SIOCLIFGETND",         "lifreq" },
 865         { (uint_t)SIOCLIFSETND,         "SIOCLIFSETND",         "lifreq" },
 866         { (uint_t)SIOCTMYADDR,          "SIOCTMYADDR",  "sioc_addrreq" },
 867         { (uint_t)SIOCTONLINK,          "SIOCTONLINK",  "sioc_addrreq" },
 868         { (uint_t)SIOCTMYSITE,          "SIOCTMYSITE",  "sioc_addrreq" },
 869         { (uint_t)SIOCGLIFBINDING,      "SIOCGLIFBINDING",      "lifreq" },
 870         { (uint_t)SIOCSLIFGROUPNAME,    "SIOCSLIFGROUPNAME",    "lifreq" },
 871         { (uint_t)SIOCGLIFGROUPNAME,    "SIOCGLIFGROUPNAME",    "lifreq" },
 872         { (uint_t)SIOCGLIFGROUPINFO,    "SIOCGLIFGROUPINFO", "lifgroupinfo" },
 873         { (uint_t)SIOCGDSTINFO,         "SIOCGDSTINFO",         NULL },
 874         { (uint_t)SIOCGIP6ADDRPOLICY,   "SIOCGIP6ADDRPOLICY",   NULL },
 875         { (uint_t)SIOCSIP6ADDRPOLICY,   "SIOCSIP6ADDRPOLICY",   NULL },
 876         { (uint_t)SIOCSXARP,            "SIOCSXARP",            "xarpreq" },
 877         { (uint_t)SIOCGXARP,            "SIOCGXARP",            "xarpreq" },
 878         { (uint_t)SIOCDXARP,            "SIOCDXARP",            "xarpreq" },
 879         { (uint_t)SIOCGLIFZONE,         "SIOCGLIFZONE",         "lifreq" },
 880         { (uint_t)SIOCSLIFZONE,         "SIOCSLIFZONE",         "lifreq" },
 881         { (uint_t)SIOCSCTPSOPT,         "SIOCSCTPSOPT",         NULL },
 882         { (uint_t)SIOCSCTPGOPT,         "SIOCSCTPGOPT",         NULL },
 883         { (uint_t)SIOCSCTPPEELOFF,      "SIOPCSCTPPEELOFF",     "int" },
 884         { (uint_t)SIOCGLIFUSESRC,       "SIOCGLIFUSESRC",       "lifreq" },
 885         { (uint_t)SIOCSLIFUSESRC,       "SIOCSLIFUSESRC",       "lifreq" },
 886         { (uint_t)SIOCGLIFSRCOF,        "SIOCGLIFSRCOF",        "lifsrcof" },
 887         { (uint_t)SIOCGMSFILTER,        "SIOCGMSFILTER",    "group_filter" },
 888         { (uint_t)SIOCSMSFILTER,        "SIOCSMSFILTER",    "group_filter" },
 889         { (uint_t)SIOCGIPMSFILTER,      "SIOCGIPMSFILTER",  "ip_msfilter" },
 890         { (uint_t)SIOCSIPMSFILTER,      "SIOCSIPMSFILTER",  "ip_msfilter" },
 891         { (uint_t)SIOCGLIFDADSTATE,     "SIOCGLIFDADSTATE",  "lifreq" },
 892         { (uint_t)SIOCSLIFPREFIX,       "SIOCSLIFPREFIX", "lifreq" },
 893         { (uint_t)SIOCGSTAMP,           "SIOCGSTAMP",           "timeval" },
 894         { (uint_t)SIOCGIFHWADDR,        "SIOCGIFHWADDR",        "ifreq" },
 895         { (uint_t)SIOCGLIFHWADDR,       "SIOCGLIFHWADDR",       "lifreq" },
 896 
 897         /* DES encryption */
 898         { (uint_t)DESIOCBLOCK,  "DESIOCBLOCK",  "desparams" },
 899         { (uint_t)DESIOCQUICK,  "DESIOCQUICK",  "desparams" },
 900 
 901         /* Printing system */
 902         { (uint_t)PRNIOC_GET_IFCAP,     "PRNIOC_GET_IFCAP",     NULL },
 903         { (uint_t)PRNIOC_SET_IFCAP,     "PRNIOC_SET_IFCAP",     NULL },
 904         { (uint_t)PRNIOC_GET_IFINFO,    "PRNIOC_GET_IFINFO",
 905             "prn_interface_info" },
 906         { (uint_t)PRNIOC_GET_STATUS,    "PRNIOC_GET_STATUS",    NULL },
 907         { (uint_t)PRNIOC_GET_1284_DEVID,        "PRNIOC_GET_1284_DEVID",
 908             "prn_1284_device_id" },
 909         { (uint_t)PRNIOC_GET_1284_STATUS,
 910             "PRNIOC_GET_IFCANIOC_GET_1284_STATUS", NULL },
 911         { (uint_t)PRNIOC_GET_TIMEOUTS,  "PRNIOC_GET_TIMEOUTS",
 912             "prn_timeouts" },
 913         { (uint_t)PRNIOC_SET_TIMEOUTS,  "PRNIOC_SET_TIMEOUTS",
 914             "prn_timeouts" },
 915         { (uint_t)PRNIOC_RESET, "PRNIOC_RESET", NULL },
 916 
 917         /* DTrace */
 918         { (uint_t)DTRACEIOC_PROVIDER,   "DTRACEIOC_PROVIDER",   NULL },
 919         { (uint_t)DTRACEIOC_PROBES,     "DTRACEIOC_PROBES",     NULL },
 920         { (uint_t)DTRACEIOC_BUFSNAP,    "DTRACEIOC_BUFSNAP",    NULL },
 921         { (uint_t)DTRACEIOC_PROBEMATCH, "DTRACEIOC_PROBEMATCH", NULL },
 922         { (uint_t)DTRACEIOC_ENABLE,     "DTRACEIOC_ENABLE",     NULL },
 923         { (uint_t)DTRACEIOC_AGGSNAP,    "DTRACEIOC_AGGSNAP",    NULL },
 924         { (uint_t)DTRACEIOC_EPROBE,     "DTRACEIOC_EPROBE",     NULL },
 925         { (uint_t)DTRACEIOC_PROBEARG,   "DTRACEIOC_PROBEARG",   NULL },
 926         { (uint_t)DTRACEIOC_CONF,       "DTRACEIOC_CONF",       NULL },
 927         { (uint_t)DTRACEIOC_STATUS,     "DTRACEIOC_STATUS",     NULL },
 928         { (uint_t)DTRACEIOC_GO,         "DTRACEIOC_GO",         NULL },
 929         { (uint_t)DTRACEIOC_STOP,       "DTRACEIOC_STOP",       NULL },
 930         { (uint_t)DTRACEIOC_AGGDESC,    "DTRACEIOC_AGGDESC",    NULL },
 931         { (uint_t)DTRACEIOC_FORMAT,     "DTRACEIOC_FORMAT",     NULL },
 932         { (uint_t)DTRACEIOC_DOFGET,     "DTRACEIOC_DOFGET",     NULL },
 933         { (uint_t)DTRACEIOC_REPLICATE,  "DTRACEIOC_REPLICATE",  NULL },
 934 
 935         { (uint_t)DTRACEHIOC_ADD,       "DTRACEHIOC_ADD",       NULL },
 936         { (uint_t)DTRACEHIOC_REMOVE,    "DTRACEHIOC_REMOVE",    NULL },
 937         { (uint_t)DTRACEHIOC_ADDDOF,    "DTRACEHIOC_ADDDOF",    NULL },
 938 
 939         /* /dev/cryptoadm ioctl() control codes */
 940         { (uint_t)CRYPTO_GET_VERSION,   "CRYPTO_GET_VERSION",   NULL },
 941         { (uint_t)CRYPTO_GET_DEV_LIST,  "CRYPTO_GET_DEV_LIST",  NULL },
 942         { (uint_t)CRYPTO_GET_SOFT_LIST, "CRYPTO_GET_SOFT_LIST", NULL },
 943         { (uint_t)CRYPTO_GET_DEV_INFO,  "CRYPTO_GET_DEV_INFO",  NULL },
 944         { (uint_t)CRYPTO_GET_SOFT_INFO, "CRYPTO_GET_SOFT_INFO", NULL },
 945         { (uint_t)CRYPTO_LOAD_DEV_DISABLED,     "CRYPTO_LOAD_DEV_DISABLED",
 946             NULL },
 947         { (uint_t)CRYPTO_LOAD_SOFT_DISABLED,    "CRYPTO_LOAD_SOFT_DISABLED",
 948             NULL },
 949         { (uint_t)CRYPTO_UNLOAD_SOFT_MODULE,    "CRYPTO_UNLOAD_SOFT_MODULE",
 950             NULL },
 951         { (uint_t)CRYPTO_LOAD_SOFT_CONFIG,      "CRYPTO_LOAD_SOFT_CONFIG",
 952             NULL },
 953         { (uint_t)CRYPTO_POOL_CREATE,   "CRYPTO_POOL_CREATE",   NULL },
 954         { (uint_t)CRYPTO_POOL_WAIT,     "CRYPTO_POOL_WAIT",     NULL },
 955         { (uint_t)CRYPTO_POOL_RUN,      "CRYPTO_POOL_RUN",      NULL },
 956         { (uint_t)CRYPTO_LOAD_DOOR,     "CRYPTO_LOAD_DOOR",     NULL },
 957 
 958         /* /dev/crypto ioctl() control codes */
 959         { (uint_t)CRYPTO_GET_FUNCTION_LIST,     "CRYPTO_GET_FUNCTION_LIST",
 960             NULL },
 961         { (uint_t)CRYPTO_GET_MECHANISM_NUMBER,  "CRYPTO_GET_MECHANISM_NUMBER",
 962             NULL },
 963         { (uint_t)CRYPTO_OPEN_SESSION,  "CRYPTO_OPEN_SESSION",  NULL },
 964         { (uint_t)CRYPTO_CLOSE_SESSION, "CRYPTO_CLOSE_SESSION", NULL },
 965         { (uint_t)CRYPTO_CLOSE_ALL_SESSIONS,    "CRYPTO_CLOSE_ALL_SESSIONS",
 966             NULL },
 967         { (uint_t)CRYPTO_LOGIN,         "CRYPTO_LOGIN",         NULL },
 968         { (uint_t)CRYPTO_LOGOUT,        "CRYPTO_LOGOUT",        NULL },
 969         { (uint_t)CRYPTO_ENCRYPT,       "CRYPTO_ENCRYPT",       NULL },
 970         { (uint_t)CRYPTO_ENCRYPT_INIT,  "CRYPTO_ENCRYPT_INIT",  NULL },
 971         { (uint_t)CRYPTO_ENCRYPT_UPDATE,        "CRYPTO_ENCRYPT_UPDATE",
 972             NULL },
 973         { (uint_t)CRYPTO_ENCRYPT_FINAL, "CRYPTO_ENCRYPT_FINAL", NULL },
 974         { (uint_t)CRYPTO_DECRYPT,       "CRYPTO_DECRYPT",       NULL },
 975         { (uint_t)CRYPTO_DECRYPT_INIT,  "CRYPTO_DECRYPT_INIT",  NULL },
 976         { (uint_t)CRYPTO_DECRYPT_UPDATE,        "CRYPTO_DECRYPT_UPDATE",
 977             NULL },
 978         { (uint_t)CRYPTO_DECRYPT_FINAL, "CRYPTO_DECRYPT_FINAL", NULL },
 979         { (uint_t)CRYPTO_DIGEST,        "CRYPTO_DIGEST",        NULL },
 980         { (uint_t)CRYPTO_DIGEST_INIT,   "CRYPTO_DIGEST_INIT",   NULL },
 981         { (uint_t)CRYPTO_DIGEST_UPDATE, "CRYPTO_DIGEST_UPDATE", NULL },
 982         { (uint_t)CRYPTO_DIGEST_KEY,    "CRYPTO_DIGEST_KEY",    NULL },
 983         { (uint_t)CRYPTO_DIGEST_FINAL,  "CRYPTO_DIGEST_FINAL",  NULL },
 984         { (uint_t)CRYPTO_MAC,           "CRYPTO_MAC",           NULL },
 985         { (uint_t)CRYPTO_MAC_INIT,      "CRYPTO_MAC_INIT",      NULL },
 986         { (uint_t)CRYPTO_MAC_UPDATE,    "CRYPTO_MAC_UPDATE",    NULL },
 987         { (uint_t)CRYPTO_MAC_FINAL,     "CRYPTO_MAC_FINAL",     NULL },
 988         { (uint_t)CRYPTO_SIGN,          "CRYPTO_SIGN",          NULL },
 989         { (uint_t)CRYPTO_SIGN_INIT,     "CRYPTO_SIGN_INIT",     NULL },
 990         { (uint_t)CRYPTO_SIGN_UPDATE,   "CRYPTO_SIGN_UPDATE",   NULL },
 991         { (uint_t)CRYPTO_SIGN_FINAL,    "CRYPTO_SIGN_FINAL",    NULL },
 992         { (uint_t)CRYPTO_SIGN_RECOVER_INIT,     "CRYPTO_SIGN_RECOVER_INIT",
 993             NULL },
 994         { (uint_t)CRYPTO_SIGN_RECOVER,  "CRYPTO_SIGN_RECOVER",  NULL },
 995         { (uint_t)CRYPTO_VERIFY,        "CRYPTO_VERIFY",        NULL },
 996         { (uint_t)CRYPTO_VERIFY_INIT,   "CRYPTO_VERIFY_INIT",   NULL },
 997         { (uint_t)CRYPTO_VERIFY_UPDATE, "CRYPTO_VERIFY_UPDATE", NULL },
 998         { (uint_t)CRYPTO_VERIFY_FINAL,  "CRYPTO_VERIFY_FINAL",  NULL },
 999         { (uint_t)CRYPTO_VERIFY_RECOVER_INIT,   "CRYPTO_VERIFY_RECOVER_INIT",
1000             NULL },
1001         { (uint_t)CRYPTO_VERIFY_RECOVER,        "CRYPTO_VERIFY_RECOVER",
1002             NULL },
1003         { (uint_t)CRYPTO_DIGEST_ENCRYPT_UPDATE, "CRYPTO_DIGEST_ENCRYPT_UPDATE",
1004             NULL },
1005         { (uint_t)CRYPTO_DECRYPT_DIGEST_UPDATE, "CRYPTO_DECRYPT_DIGEST_UPDATE",
1006             NULL },
1007         { (uint_t)CRYPTO_SIGN_ENCRYPT_UPDATE,   "CRYPTO_SIGN_ENCRYPT_UPDATE",
1008             NULL },
1009         { (uint_t)CRYPTO_DECRYPT_VERIFY_UPDATE, "CRYPTO_DECRYPT_VERIFY_UPDATE",
1010             NULL },
1011         { (uint_t)CRYPTO_SEED_RANDOM,   "CRYPTO_SEED_RANDOM",   NULL },
1012         { (uint_t)CRYPTO_GENERATE_RANDOM,       "CRYPTO_GENERATE_RANDOM",
1013             NULL },
1014         { (uint_t)CRYPTO_OBJECT_CREATE, "CRYPTO_OBJECT_CREATE", NULL },
1015         { (uint_t)CRYPTO_OBJECT_COPY,   "CRYPTO_OBJECT_COPY",   NULL },
1016         { (uint_t)CRYPTO_OBJECT_DESTROY,        "CRYPTO_OBJECT_DESTROY",
1017             NULL },
1018         { (uint_t)CRYPTO_OBJECT_GET_ATTRIBUTE_VALUE,
1019             "CRYPTO_OBJECT_GET_ATTRIBUTE_VALUE",        NULL },
1020         { (uint_t)CRYPTO_OBJECT_GET_SIZE, "CRYPTO_OBJECT_GET_SIZE",     NULL },
1021         { (uint_t)CRYPTO_OBJECT_SET_ATTRIBUTE_VALUE,
1022             "CRYPTO_OBJECT_SET_ATTRIBUTE_VALUE",        NULL },
1023         { (uint_t)CRYPTO_OBJECT_FIND_INIT,      "CRYPTO_OBJECT_FIND_INIT",
1024             NULL },
1025         { (uint_t)CRYPTO_OBJECT_FIND_UPDATE,    "CRYPTO_OBJECT_FIND_UPDATE",
1026             NULL },
1027         { (uint_t)CRYPTO_OBJECT_FIND_FINAL,     "CRYPTO_OBJECT_FIND_FINAL",
1028             NULL },
1029         { (uint_t)CRYPTO_GENERATE_KEY,  "CRYPTO_GENERATE_KEY",  NULL },
1030         { (uint_t)CRYPTO_GENERATE_KEY_PAIR,     "CRYPTO_GENERATE_KEY_PAIR",
1031             NULL },
1032         { (uint_t)CRYPTO_WRAP_KEY,      "CRYPTO_WRAP_KEY",      NULL },
1033         { (uint_t)CRYPTO_UNWRAP_KEY,    "CRYPTO_UNWRAP_KEY",    NULL },
1034         { (uint_t)CRYPTO_DERIVE_KEY,    "CRYPTO_DERIVE_KEY",    NULL },
1035         { (uint_t)CRYPTO_GET_PROVIDER_LIST,     "CRYPTO_GET_PROVIDER_LIST",
1036             NULL },
1037         { (uint_t)CRYPTO_GET_PROVIDER_INFO,     "CRYPTO_GET_PROVIDER_INFO",
1038             NULL },
1039         { (uint_t)CRYPTO_GET_PROVIDER_MECHANISMS,
1040             "CRYPTO_GET_PROVIDER_MECHANISMS",   NULL },
1041         { (uint_t)CRYPTO_GET_PROVIDER_MECHANISM_INFO,
1042             "CRYPTO_GET_PROVIDER_MECHANISM_INFO",       NULL },
1043         { (uint_t)CRYPTO_INIT_TOKEN,    "CRYPTO_INIT_TOKEN",    NULL },
1044         { (uint_t)CRYPTO_INIT_PIN,      "CRYPTO_INIT_PIN",      NULL },
1045         { (uint_t)CRYPTO_SET_PIN,       "CRYPTO_SET_PIN",       NULL },
1046         { (uint_t)CRYPTO_NOSTORE_GENERATE_KEY,
1047             "CRYPTO_NOSTORE_GENERATE_KEY",      NULL },
1048         { (uint_t)CRYPTO_NOSTORE_GENERATE_KEY_PAIR,
1049             "CRYPTO_NOSTORE_GENERATE_KEY_PAIR", NULL },
1050         { (uint_t)CRYPTO_NOSTORE_DERIVE_KEY,
1051             "CRYPTO_NOSTORE_DERIVE_KEY",        NULL },
1052         { (uint_t)CRYPTO_FIPS140_STATUS,        "CRYPTO_FIPS140_STATUS", NULL },
1053         { (uint_t)CRYPTO_FIPS140_SET,   "CRYPTO_FIPS140_SET",   NULL },
1054 
1055         /* kbio ioctls */
1056         { (uint_t)KIOCTRANS,            "KIOCTRANS",    NULL },
1057         { (uint_t)KIOCGTRANS,           "KIOCGTRANS",   NULL },
1058         { (uint_t)KIOCTRANSABLE,        "KIOCTRANSABLE",        NULL },
1059         { (uint_t)KIOCGTRANSABLE,       "KIOCGTRANSABLE",       NULL },
1060         { (uint_t)KIOCSETKEY,           "KIOCSETKEY",   NULL },
1061         { (uint_t)KIOCGETKEY,           "KIOCGETKEY",   NULL },
1062         { (uint_t)KIOCCMD,              "KIOCCMD",      NULL },
1063         { (uint_t)KIOCTYPE,             "KIOCTYPE",     NULL },
1064         { (uint_t)KIOCSDIRECT,          "KIOCSDIRECT",  NULL },
1065         { (uint_t)KIOCGDIRECT,          "KIOCGDIRECT",  NULL },
1066         { (uint_t)KIOCSKEY,             "KIOCSKEY",     NULL },
1067         { (uint_t)KIOCGKEY,             "KIOCGKEY",     NULL },
1068         { (uint_t)KIOCSLED,             "KIOCSLED",     NULL },
1069         { (uint_t)KIOCGLED,             "KIOCGLED",     NULL },
1070         { (uint_t)KIOCSCOMPAT,          "KIOCSCOMPAT",  NULL },
1071         { (uint_t)KIOCGCOMPAT,          "KIOCGCOMPAT",  NULL },
1072         { (uint_t)KIOCSLAYOUT,          "KIOCSLAYOUT",  NULL },
1073         { (uint_t)KIOCLAYOUT,           "KIOCLAYOUT",   NULL },
1074         { (uint_t)KIOCSKABORTEN,        "KIOCSKABORTEN",        NULL },
1075         { (uint_t)KIOCGRPTCOUNT,        "KIOCGRPTCOUNT",        NULL },
1076         { (uint_t)KIOCSRPTCOUNT,        "KIOCSRPTCOUNT",        NULL },
1077         { (uint_t)KIOCGRPTDELAY,        "KIOCGRPTDELAY",        NULL },
1078         { (uint_t)KIOCSRPTDELAY,        "KIOCSRPTDELAY",        NULL },
1079         { (uint_t)KIOCGRPTRATE,         "KIOCGRPTRATE", NULL },
1080         { (uint_t)KIOCSRPTRATE,         "KIOCSRPTRATE", NULL },
1081         { (uint_t)KIOCSETFREQ,          "KIOCSETFREQ",  NULL },
1082         { (uint_t)KIOCMKTONE,           "KIOCMKTONE",   NULL },
1083 
1084         /* ptm/pts driver I_STR ioctls */
1085         { (uint_t)ISPTM,                "ISPTM",                NULL},
1086         { (uint_t)UNLKPT,               "UNLKPT",               NULL},
1087         { (uint_t)PTSSTTY,              "PTSSTTY",              NULL},
1088         { (uint_t)ZONEPT,               "ZONEPT",               NULL},
1089         { (uint_t)OWNERPT,              "OWNERPT",              NULL},
1090 
1091         /* aggr link aggregation pseudo driver ioctls */
1092         { (uint_t)LAIOC_CREATE,         "LAIOC_CREATE",         "laioc_create"},
1093         { (uint_t)LAIOC_DELETE,         "LAIOC_DELETE",         "laioc_delete"},
1094         { (uint_t)LAIOC_INFO,           "LAIOC_INFO",           "laioc_info"},
1095         { (uint_t)LAIOC_ADD,            "LAIOC_ADD",
1096             "laioc_add_rem"},
1097         { (uint_t)LAIOC_REMOVE,         "LAIOC_REMOVE",
1098             "laioc_add_rem"},
1099         { (uint_t)LAIOC_MODIFY,         "LAIOC_MODIFY",         "laioc_modify"},
1100 
1101         /* dld data-link ioctls */
1102         { (uint_t)DLDIOC_ATTR,          "DLDIOC_ATTR",          "dld_ioc_attr"},
1103         { (uint_t)DLDIOC_PHYS_ATTR,     "DLDIOC_PHYS_ATTR",
1104                 "dld_ioc_phys_attr"},
1105         { (uint_t)DLDIOC_DOORSERVER,    "DLDIOC_DOORSERVER", "dld_ioc_door"},
1106         { (uint_t)DLDIOC_RENAME,        "DLDIOC_RENAME", "dld_ioc_rename"},
1107         { (uint_t)DLDIOC_SECOBJ_GET,            "DLDIOC_SECOBJ_GET",
1108                 "dld_ioc_secobj_get"},
1109         { (uint_t)DLDIOC_SECOBJ_SET,            "DLDIOC_SECOBJ_SET",
1110                 "dld_ioc_secobj_set"},
1111         { (uint_t)DLDIOC_SECOBJ_UNSET,          "DLDIOC_SECOBJ_UNSET",
1112                 "dld_ioc_secobj_unset"},
1113         { (uint_t)DLDIOC_MACADDRGET,            "DLDIOC_MACADDRGET",
1114                 "dld_ioc_macaddrget"},
1115         { (uint_t)DLDIOC_SETMACPROP,            "DLDIOC_SETMACPROP",
1116                 "dld_ioc_macprop_s"},
1117         { (uint_t)DLDIOC_GETMACPROP,            "DLDIOC_GETMACPROP",
1118                 "dld_ioc_macprop_s"},
1119         { (uint_t)DLDIOC_ADDFLOW,               "DLDIOC_ADDFLOW",
1120                 "dld_ioc_addflow"},
1121         { (uint_t)DLDIOC_REMOVEFLOW,            "DLDIOC_REMOVEFLOW",
1122                 "dld_ioc_removeflow"},
1123         { (uint_t)DLDIOC_MODIFYFLOW,            "DLDIOC_MODIFYFLOW",
1124                 "dld_ioc_modifyflow"},
1125         { (uint_t)DLDIOC_WALKFLOW,              "DLDIOC_WALKFLOW",
1126                 "dld_ioc_walkflow"},
1127         { (uint_t)DLDIOC_USAGELOG,              "DLDIOC_USAGELOG",
1128                 "dld_ioc_usagelog"},
1129 
1130         /* simnet ioctls */
1131         { (uint_t)SIMNET_IOC_CREATE,            "SIMNET_IOC_CREATE",
1132                 "simnet_ioc_create"},
1133         { (uint_t)SIMNET_IOC_DELETE,            "SIMNET_IOC_DELETE",
1134                 "simnet_ioc_delete"},
1135         { (uint_t)SIMNET_IOC_INFO,              "SIMNET_IOC_INFO",
1136                 "simnet_ioc_info"},
1137         { (uint_t)SIMNET_IOC_MODIFY,            "SIMNET_IOC_MODIFY",
1138                 "simnet_ioc_info"},
1139 
1140         /* feth ioctls */
1141         { (uint_t)FETH_IOC_CREATE,              "FETH_IOC_CREATE",
1142                 "feth_ioc_create"},
1143         { (uint_t)FETH_IOC_DELETE,              "FETH_IOC_DELETE",
1144                 "feth_ioc_delete"},
1145         { (uint_t)FETH_IOC_INFO,                "FETH_IOC_INFO",
1146                 "feth_ioc_info"},
1147         { (uint_t)FETH_IOC_MODIFY,              "FETH_IOC_MODIFY",
1148                 "feth_ioc_modify"},
1149 
1150         /* vnic ioctls */
1151         { (uint_t)VNIC_IOC_CREATE,              "VNIC_IOC_CREATE",
1152                 "vnic_ioc_create"},
1153         { (uint_t)VNIC_IOC_DELETE,              "VNIC_IOC_DELETE",
1154                 "vnic_ioc_delete"},
1155         { (uint_t)VNIC_IOC_INFO,                "VNIC_IOC_INFO",
1156                 "vnic_ioc_info"},
1157 
1158         /* ZFS ioctls */
1159         { (uint_t)ZFS_IOC_POOL_CREATE,          "ZFS_IOC_POOL_CREATE",
1160                 "zfs_cmd_t" },
1161         { (uint_t)ZFS_IOC_POOL_DESTROY,         "ZFS_IOC_POOL_DESTROY",
1162                 "zfs_cmd_t" },
1163         { (uint_t)ZFS_IOC_POOL_IMPORT,          "ZFS_IOC_POOL_IMPORT",
1164                 "zfs_cmd_t" },
1165         { (uint_t)ZFS_IOC_POOL_EXPORT,          "ZFS_IOC_POOL_EXPORT",
1166                 "zfs_cmd_t" },
1167         { (uint_t)ZFS_IOC_POOL_CONFIGS,         "ZFS_IOC_POOL_CONFIGS",
1168                 "zfs_cmd_t" },
1169         { (uint_t)ZFS_IOC_POOL_STATS,           "ZFS_IOC_POOL_STATS",
1170                 "zfs_cmd_t" },
1171         { (uint_t)ZFS_IOC_POOL_TRYIMPORT,       "ZFS_IOC_POOL_TRYIMPORT",
1172                 "zfs_cmd_t" },
1173         { (uint_t)ZFS_IOC_POOL_SCAN,            "ZFS_IOC_POOL_SCAN",
1174                 "zfs_cmd_t" },
1175         { (uint_t)ZFS_IOC_POOL_FREEZE,          "ZFS_IOC_POOL_FREEZE",
1176                 "zfs_cmd_t" },
1177         { (uint_t)ZFS_IOC_POOL_UPGRADE,         "ZFS_IOC_POOL_UPGRADE",
1178                 "zfs_cmd_t" },
1179         { (uint_t)ZFS_IOC_POOL_GET_HISTORY,     "ZFS_IOC_POOL_GET_HISTORY",
1180                 "zfs_cmd_t" },
1181         { (uint_t)ZFS_IOC_POOL_CHECKPOINT,      "ZFS_IOC_POOL_CHECKPOINT",
1182                 "zfs_cmd_t" },
1183         { (uint_t)ZFS_IOC_POOL_DISCARD_CHECKPOINT,
1184                 "ZFS_IOC_POOL_DISCARD_CHECKPOINT", "zfs_cmd_t" },
1185         { (uint_t)ZFS_IOC_VDEV_ADD,             "ZFS_IOC_VDEV_ADD",
1186                 "zfs_cmd_t" },
1187         { (uint_t)ZFS_IOC_VDEV_REMOVE,          "ZFS_IOC_VDEV_REMOVE",
1188                 "zfs_cmd_t" },
1189         { (uint_t)ZFS_IOC_VDEV_SET_STATE,       "ZFS_IOC_VDEV_SET_STATE",
1190                 "zfs_cmd_t" },
1191         { (uint_t)ZFS_IOC_VDEV_ATTACH,          "ZFS_IOC_VDEV_ATTACH",
1192                 "zfs_cmd_t" },
1193         { (uint_t)ZFS_IOC_VDEV_DETACH,          "ZFS_IOC_VDEV_DETACH",
1194                 "zfs_cmd_t" },
1195         { (uint_t)ZFS_IOC_VDEV_SETPATH,         "ZFS_IOC_VDEV_SETPATH",
1196                 "zfs_cmd_t" },
1197         { (uint_t)ZFS_IOC_VDEV_SETFRU,          "ZFS_IOC_VDEV_SETFRU",
1198                 "zfs_cmd_t" },
1199         { (uint_t)ZFS_IOC_OBJSET_STATS,         "ZFS_IOC_OBJSET_STATS",
1200                 "zfs_cmd_t" },
1201         { (uint_t)ZFS_IOC_OBJSET_ZPLPROPS,      "ZFS_IOC_OBJSET_ZPLPROPS",
1202                 "zfs_cmd_t" },
1203         { (uint_t)ZFS_IOC_DATASET_LIST_NEXT,    "ZFS_IOC_DATASET_LIST_NEXT",
1204                 "zfs_cmd_t" },
1205         { (uint_t)ZFS_IOC_SNAPSHOT_LIST_NEXT,   "ZFS_IOC_SNAPSHOT_LIST_NEXT",
1206                 "zfs_cmd_t" },
1207         { (uint_t)ZFS_IOC_SET_PROP,             "ZFS_IOC_SET_PROP",
1208                 "zfs_cmd_t" },
1209         { (uint_t)ZFS_IOC_CREATE,               "ZFS_IOC_CREATE",
1210                 "zfs_cmd_t" },
1211         { (uint_t)ZFS_IOC_DESTROY,              "ZFS_IOC_DESTROY",
1212                 "zfs_cmd_t" },
1213         { (uint_t)ZFS_IOC_ROLLBACK,             "ZFS_IOC_ROLLBACK",
1214                 "zfs_cmd_t" },
1215         { (uint_t)ZFS_IOC_RENAME,               "ZFS_IOC_RENAME",
1216                 "zfs_cmd_t" },
1217         { (uint_t)ZFS_IOC_RECV,                 "ZFS_IOC_RECV",
1218                 "zfs_cmd_t" },
1219         { (uint_t)ZFS_IOC_SEND,                 "ZFS_IOC_SEND",
1220                 "zfs_cmd_t" },
1221         { (uint_t)ZFS_IOC_INJECT_FAULT,         "ZFS_IOC_INJECT_FAULT",
1222                 "zfs_cmd_t" },
1223         { (uint_t)ZFS_IOC_CLEAR_FAULT,          "ZFS_IOC_CLEAR_FAULT",
1224                 "zfs_cmd_t" },
1225         { (uint_t)ZFS_IOC_INJECT_LIST_NEXT,     "ZFS_IOC_INJECT_LIST_NEXT",
1226                 "zfs_cmd_t" },
1227         { (uint_t)ZFS_IOC_ERROR_LOG,            "ZFS_IOC_ERROR_LOG",
1228                 "zfs_cmd_t" },
1229         { (uint_t)ZFS_IOC_CLEAR,                "ZFS_IOC_CLEAR",
1230                 "zfs_cmd_t" },
1231         { (uint_t)ZFS_IOC_PROMOTE,              "ZFS_IOC_PROMOTE",
1232                 "zfs_cmd_t" },
1233         { (uint_t)ZFS_IOC_SNAPSHOT,             "ZFS_IOC_SNAPSHOT",
1234                 "zfs_cmd_t" },
1235         { (uint_t)ZFS_IOC_DSOBJ_TO_DSNAME,      "ZFS_IOC_DSOBJ_TO_DSNAME",
1236                 "zfs_cmd_t" },
1237         { (uint_t)ZFS_IOC_OBJ_TO_PATH,          "ZFS_IOC_OBJ_TO_PATH",
1238                 "zfs_cmd_t" },
1239         { (uint_t)ZFS_IOC_POOL_SET_PROPS,       "ZFS_IOC_POOL_SET_PROPS",
1240                 "zfs_cmd_t" },
1241         { (uint_t)ZFS_IOC_POOL_GET_PROPS,       "ZFS_IOC_POOL_GET_PROPS",
1242                 "zfs_cmd_t" },
1243         { (uint_t)ZFS_IOC_SET_FSACL,            "ZFS_IOC_SET_FSACL",
1244                 "zfs_cmd_t" },
1245         { (uint_t)ZFS_IOC_GET_FSACL,            "ZFS_IOC_GET_FSACL",
1246                 "zfs_cmd_t" },
1247         { (uint_t)ZFS_IOC_SHARE,                "ZFS_IOC_SHARE",
1248                 "zfs_cmd_t" },
1249         { (uint_t)ZFS_IOC_INHERIT_PROP,         "ZFS_IOC_INHERIT_PROP",
1250                 "zfs_cmd_t" },
1251         { (uint_t)ZFS_IOC_SMB_ACL,              "ZFS_IOC_SMB_ACL",
1252                 "zfs_cmd_t" },
1253         { (uint_t)ZFS_IOC_USERSPACE_ONE,        "ZFS_IOC_USERSPACE_ONE",
1254                 "zfs_cmd_t" },
1255         { (uint_t)ZFS_IOC_USERSPACE_MANY,       "ZFS_IOC_USERSPACE_MANY",
1256                 "zfs_cmd_t" },
1257         { (uint_t)ZFS_IOC_USERSPACE_UPGRADE,    "ZFS_IOC_USERSPACE_UPGRADE",
1258                 "zfs_cmd_t" },
1259         { (uint_t)ZFS_IOC_HOLD,                 "ZFS_IOC_HOLD",
1260                 "zfs_cmd_t" },
1261         { (uint_t)ZFS_IOC_RELEASE,              "ZFS_IOC_RELEASE",
1262                 "zfs_cmd_t" },
1263         { (uint_t)ZFS_IOC_GET_HOLDS,            "ZFS_IOC_GET_HOLDS",
1264                 "zfs_cmd_t" },
1265         { (uint_t)ZFS_IOC_OBJSET_RECVD_PROPS,   "ZFS_IOC_OBJSET_RECVD_PROPS",
1266                 "zfs_cmd_t" },
1267         { (uint_t)ZFS_IOC_VDEV_SPLIT,           "ZFS_IOC_VDEV_SPLIT",
1268                 "zfs_cmd_t" },
1269         { (uint_t)ZFS_IOC_NEXT_OBJ,             "ZFS_IOC_NEXT_OBJ",
1270                 "zfs_cmd_t" },
1271         { (uint_t)ZFS_IOC_DIFF,                 "ZFS_IOC_DIFF",
1272                 "zfs_cmd_t" },
1273         { (uint_t)ZFS_IOC_TMP_SNAPSHOT,         "ZFS_IOC_TMP_SNAPSHOT",
1274                 "zfs_cmd_t" },
1275         { (uint_t)ZFS_IOC_OBJ_TO_STATS,         "ZFS_IOC_OBJ_TO_STATS",
1276                 "zfs_cmd_t" },
1277         { (uint_t)ZFS_IOC_SPACE_WRITTEN,        "ZFS_IOC_SPACE_WRITTEN",
1278                 "zfs_cmd_t" },
1279         { (uint_t)ZFS_IOC_DESTROY_SNAPS,        "ZFS_IOC_DESTROY_SNAPS",
1280                 "zfs_cmd_t" },
1281         { (uint_t)ZFS_IOC_POOL_REGUID,          "ZFS_IOC_POOL_REGUID",
1282                 "zfs_cmd_t" },
1283         { (uint_t)ZFS_IOC_POOL_REOPEN,          "ZFS_IOC_POOL_REOPEN",
1284                 "zfs_cmd_t" },
1285         { (uint_t)ZFS_IOC_SEND_PROGRESS,        "ZFS_IOC_SEND_PROGRESS",
1286                 "zfs_cmd_t" },
1287         { (uint_t)ZFS_IOC_LOG_HISTORY,          "ZFS_IOC_LOG_HISTORY",
1288                 "zfs_cmd_t" },
1289         { (uint_t)ZFS_IOC_SEND_NEW,             "ZFS_IOC_SEND_NEW",
1290                 "zfs_cmd_t" },
1291         { (uint_t)ZFS_IOC_SEND_SPACE,           "ZFS_IOC_SEND_SPACE",
1292                 "zfs_cmd_t" },
1293         { (uint_t)ZFS_IOC_CLONE,                "ZFS_IOC_CLONE",
1294                 "zfs_cmd_t" },
1295         { (uint_t)ZFS_IOC_REMAP,                "ZFS_IOC_REMAP",
1296                 "zfs_cmd_t" },
1297         { (uint_t)ZFS_IOC_BOOKMARK,             "ZFS_IOC_BOOKMARK",
1298                 "zfs_cmd_t" },
1299         { (uint_t)ZFS_IOC_GET_BOOKMARKS,        "ZFS_IOC_GET_BOOKMARKS",
1300                 "zfs_cmd_t" },
1301         { (uint_t)ZFS_IOC_DESTROY_BOOKMARKS,    "ZFS_IOC_DESTROY_BOOKMARKS",
1302                 "zfs_cmd_t" },
1303         { (uint_t)ZFS_IOC_CHANNEL_PROGRAM,      "ZFS_IOC_CHANNEL_PROGRAM",
1304                 "zfs_cmd_t" },
1305         { (uint_t)ZFS_IOC_POOL_INITIALIZE,      "ZFS_IOC_POOL_INITIALIZE",
1306                 "zfs_cmd_t" },
1307         { (uint_t)ZFS_IOC_POOL_SYNC,            "ZFS_IOC_POOL_SYNC",
1308                 "zfs_cmd_t" },
1309         { (uint_t)ZFS_IOC_LOAD_KEY,             "ZFS_IOC_LOAD_KEY",
1310                 "zfs_cmd_t" },
1311         { (uint_t)ZFS_IOC_UNLOAD_KEY,           "ZFS_IOC_UNLOAD_KEY",
1312                 "zfs_cmd_t" },
1313         { (uint_t)ZFS_IOC_CHANGE_KEY,           "ZFS_IOC_CHANGE_KEY",
1314                 "zfs_cmd_t" },
1315 
1316         /* kssl ioctls */
1317         { (uint_t)KSSL_ADD_ENTRY,               "KSSL_ADD_ENTRY",
1318                 "kssl_params_t"},
1319         { (uint_t)KSSL_DELETE_ENTRY,            "KSSL_DELETE_ENTRY",
1320                 "sockaddr_in"},
1321 
1322         /* disk ioctls - (0x04 << 8) - dkio.h */
1323         { (uint_t)DKIOCGGEOM,           "DKIOCGGEOM",
1324                 "struct dk_geom"},
1325         { (uint_t)DKIOCINFO,            "DKIOCINFO",
1326                 "struct dk_info"},
1327         { (uint_t)DKIOCEJECT,           "DKIOCEJECT",
1328                 NULL},
1329         { (uint_t)DKIOCGVTOC,           "DKIOCGVTOC",
1330                 "struct vtoc"},
1331         { (uint_t)DKIOCSVTOC,           "DKIOCSVTOC",
1332                 "struct vtoc"},
1333         { (uint_t)DKIOCGEXTVTOC,        "DKIOCGEXTVTOC",
1334                 "struct extvtoc"},
1335         { (uint_t)DKIOCSEXTVTOC,        "DKIOCSEXTVTOC",
1336                 "struct extvtoc"},
1337         { (uint_t)DKIOCFLUSHWRITECACHE, "DKIOCFLUSHWRITECACHE",
1338                 NULL},
1339         { (uint_t)DKIOCGETWCE,          "DKIOCGETWCE",
1340                 NULL},
1341         { (uint_t)DKIOCSETWCE,          "DKIOCSETWCE",
1342                 NULL},
1343         { (uint_t)DKIOCSGEOM,           "DKIOCSGEOM",
1344                 "struct dk_geom"},
1345         { (uint_t)DKIOCSAPART,          "DKIOCSAPART",
1346                 "struct dk_allmap"},
1347         { (uint_t)DKIOCGAPART,          "DKIOCGAPART",
1348                 "struct dk_allmap"},
1349         { (uint_t)DKIOCG_PHYGEOM,       "DKIOCG_PHYGEOM",
1350                 "struct dk_geom"},
1351         { (uint_t)DKIOCG_VIRTGEOM,      "DKIOCG_VIRTGEOM",
1352                 "struct dk_geom"},
1353         { (uint_t)DKIOCLOCK,            "DKIOCLOCK",
1354                 NULL},
1355         { (uint_t)DKIOCUNLOCK,          "DKIOCUNLOCK",
1356                 NULL},
1357         { (uint_t)DKIOCSTATE,           "DKIOCSTATE",
1358                 NULL},
1359         { (uint_t)DKIOCREMOVABLE,       "DKIOCREMOVABLE",
1360                 NULL},
1361         { (uint_t)DKIOCHOTPLUGGABLE,    "DKIOCHOTPLUGGABLE",
1362                 NULL},
1363         { (uint_t)DKIOCADDBAD,          "DKIOCADDBAD",
1364                 NULL},
1365         { (uint_t)DKIOCGETDEF,          "DKIOCGETDEF",
1366                 NULL},
1367         { (uint_t)DKIOCPARTINFO,        "DKIOCPARTINFO",
1368                 "struct part_info"},
1369         { (uint_t)DKIOCEXTPARTINFO,     "DKIOCEXTPARTINFO",
1370                 "struct extpart_info"},
1371         { (uint_t)DKIOCGMEDIAINFO,      "DKIOCGMEDIAINFO",
1372                 "struct dk_minfo"},
1373         { (uint_t)DKIOCGMBOOT,          "DKIOCGMBOOT",
1374                 NULL},
1375         { (uint_t)DKIOCSMBOOT,          "DKIOCSMBOOT",
1376                 NULL},
1377         { (uint_t)DKIOCSETEFI,          "DKIOCSETEFI",
1378                 "struct dk_efi"},
1379         { (uint_t)DKIOCGETEFI,          "DKIOCGETEFI",
1380                 "struct dk_efi"},
1381         { (uint_t)DKIOCPARTITION,       "DKIOCPARTITION",
1382                 "struct partition64"},
1383         { (uint_t)DKIOCGETVOLCAP,       "DKIOCGETVOLCAP",
1384                 "struct volcap_t"},
1385         { (uint_t)DKIOCSETVOLCAP,       "DKIOCSETVOLCAP",
1386                 "struct volcap_t"},
1387         { (uint_t)DKIOCDMR,             "DKIOCDMR",
1388                 "struct vol_directed_rd"},
1389         { (uint_t)DKIOCDUMPINIT,        "DKIOCDUMPINIT",
1390                 NULL},
1391         { (uint_t)DKIOCDUMPFINI,        "DKIOCDUMPFINI",
1392                 NULL},
1393         { (uint_t)DKIOCREADONLY,        "DKIOCREADONLY",
1394                 NULL},
1395         { (uint_t)DKIOCFREE,            "DKIOCFREE",
1396                 NULL},
1397         { (uint_t)DKIOC_CANFREE,        "DKIOC_CANFREE",
1398                 NULL},
1399 
1400         /* disk ioctls - (0x04 << 8) - fdio.h */
1401         { (uint_t)FDIOGCHAR,            "FDIOGCHAR",
1402                 "struct fd_char"},
1403         { (uint_t)FDIOSCHAR,            "FDIOSCHAR",
1404                 "struct fd_char"},
1405         { (uint_t)FDEJECT,              "FDEJECT",
1406                 NULL},
1407         { (uint_t)FDGETCHANGE,          "FDGETCHANGE",
1408                 NULL},
1409         { (uint_t)FDGETDRIVECHAR,       "FDGETDRIVECHAR",
1410                 "struct fd_drive"},
1411         { (uint_t)FDSETDRIVECHAR,       "FDSETDRIVECHAR",
1412                 "struct fd_drive"},
1413         { (uint_t)FDGETSEARCH,          "FDGETSEARCH",
1414                 NULL},
1415         { (uint_t)FDSETSEARCH,          "FDSETSEARCH",
1416                 NULL},
1417         { (uint_t)FDIOCMD,              "FDIOCMD",
1418                 "struct fd_cmd"},
1419         { (uint_t)FDRAW,                "FDRAW",
1420                 "struct fd_raw"},
1421         { (uint_t)FDDEFGEOCHAR,         "FDDEFGEOCHAR",
1422                 NULL},
1423 
1424         /* disk ioctls - (0x04 << 8) - cdio.h */
1425         { (uint_t)CDROMPAUSE,           "CDROMPAUSE",
1426                 NULL},
1427         { (uint_t)CDROMRESUME,          "CDROMRESUME",
1428                 NULL},
1429         { (uint_t)CDROMPLAYMSF,         "CDROMPLAYMSF",
1430                 "struct cdrom_msf"},
1431         { (uint_t)CDROMPLAYTRKIND,      "CDROMPLAYTRKIND",
1432                 "struct cdrom_ti"},
1433         { (uint_t)CDROMREADTOCHDR,      "CDROMREADTOCHDR",
1434                 "struct cdrom_tochdr"},
1435         { (uint_t)CDROMREADTOCENTRY,    "CDROMREADTOCENTRY",
1436                 "struct cdrom_tocentry"},
1437         { (uint_t)CDROMSTOP,            "CDROMSTOP",
1438                 NULL},
1439         { (uint_t)CDROMSTART,           "CDROMSTART",
1440                 NULL},
1441         { (uint_t)CDROMEJECT,           "CDROMEJECT",
1442                 NULL},
1443         { (uint_t)CDROMVOLCTRL,         "CDROMVOLCTRL",
1444                 "struct cdrom_volctrl"},
1445         { (uint_t)CDROMSUBCHNL,         "CDROMSUBCHNL",
1446                 "struct cdrom_subchnl"},
1447         { (uint_t)CDROMREADMODE2,       "CDROMREADMODE2",
1448                 "struct cdrom_read"},
1449         { (uint_t)CDROMREADMODE1,       "CDROMREADMODE1",
1450                 "struct cdrom_read"},
1451         { (uint_t)CDROMREADOFFSET,      "CDROMREADOFFSET",
1452                 NULL},
1453         { (uint_t)CDROMGBLKMODE,        "CDROMGBLKMODE",
1454                 NULL},
1455         { (uint_t)CDROMSBLKMODE,        "CDROMSBLKMODE",
1456                 NULL},
1457         { (uint_t)CDROMCDDA,            "CDROMCDDA",
1458                 "struct cdrom_cdda"},
1459         { (uint_t)CDROMCDXA,            "CDROMCDXA",
1460                 "struct cdrom_cdxa"},
1461         { (uint_t)CDROMSUBCODE,         "CDROMSUBCODE",
1462                 "struct cdrom_subcode"},
1463         { (uint_t)CDROMGDRVSPEED,       "CDROMGDRVSPEED",
1464                 NULL},
1465         { (uint_t)CDROMSDRVSPEED,       "CDROMSDRVSPEED",
1466                 NULL},
1467         { (uint_t)CDROMCLOSETRAY,       "CDROMCLOSETRAY",
1468                 NULL},
1469 
1470         /* disk ioctls - (0x04 << 8) - uscsi.h */
1471         { (uint_t)USCSICMD,             "USCSICMD",
1472                 "struct uscsi_cmd"},
1473 
1474         /* dumpadm ioctls - (0xdd << 8) */
1475         { (uint_t)DIOCGETDEV,   "DIOCGETDEV",
1476                 NULL},
1477 
1478         /* mntio ioctls - ('m' << 8) */
1479         { (uint_t)MNTIOC_NMNTS,         "MNTIOC_NMNTS",
1480                 NULL},
1481         { (uint_t)MNTIOC_GETDEVLIST,    "MNTIOC_GETDEVLIST",
1482                 NULL},
1483         { (uint_t)MNTIOC_SETTAG,        "MNTIOC_SETTAG",
1484                 "struct mnttagdesc"},
1485         { (uint_t)MNTIOC_CLRTAG,        "MNTIOC_CLRTAG",
1486                 "struct mnttagdesc"},
1487         { (uint_t)MNTIOC_SHOWHIDDEN,    "MNTIOC_SHOWHIDDEN",
1488                 NULL},
1489         { (uint_t)MNTIOC_GETMNTENT,     "MNTIOC_GETMNTENT",
1490                 "struct mnttab"},
1491         { (uint_t)MNTIOC_GETEXTMNTENT,  "MNTIOC_GETEXTMNTENT",
1492                 "struct extmnttab"},
1493         { (uint_t)MNTIOC_GETMNTANY,     "MNTIOC_GETMNTANY",
1494                 "struct mnttab"},
1495 
1496         /* devinfo ioctls - ('df' << 8) - devinfo_impl.h */
1497         { (uint_t)DINFOUSRLD,           "DINFOUSRLD",
1498                 NULL},
1499         { (uint_t)DINFOLODRV,           "DINFOLODRV",
1500                 NULL},
1501         { (uint_t)DINFOIDENT,           "DINFOIDENT",
1502                 NULL},
1503 
1504         { (uint_t)IPTUN_CREATE, "IPTUN_CREATE", "iptun_kparams_t"},
1505         { (uint_t)IPTUN_DELETE, "IPTUN_DELETE", "datalink_id_t"},
1506         { (uint_t)IPTUN_MODIFY, "IPTUN_MODIFY", "iptun_kparams_t"},
1507         { (uint_t)IPTUN_INFO,   "IPTUN_INFO",   NULL},
1508         { (uint_t)IPTUN_SET_6TO4RELAY, "IPTUN_SET_6TO4RELAY",   NULL},
1509         { (uint_t)IPTUN_GET_6TO4RELAY, "IPTUN_GET_6TO4RELAY",   NULL},
1510 
1511         /* zcons ioctls */
1512         { (uint_t)ZC_HOLDSLAVE,         "ZC_HOLDSLAVE",         NULL },
1513         { (uint_t)ZC_RELEASESLAVE,      "ZC_RELEASESLAVE",      NULL },
1514 
1515         /* hid ioctls - ('h' << 8) - hid.h */
1516         { (uint_t)HIDIOCKMGDIRECT,      "HIDIOCKMGDIRECT",      NULL },
1517         { (uint_t)HIDIOCKMSDIRECT,      "HIDIOCKMSDIRECT",      NULL },
1518 
1519         /* pm ioctls */
1520         { (uint_t)PM_SCHEDULE,          "PM_SCHEDULE",          NULL },
1521         { (uint_t)PM_GET_IDLE_TIME,     "PM_GET_IDLE_TIME",     NULL },
1522         { (uint_t)PM_GET_NUM_CMPTS,     "PM_GET_NUM_CMPTS",     NULL },
1523         { (uint_t)PM_GET_THRESHOLD,     "PM_GET_THRESHOLD",     NULL },
1524         { (uint_t)PM_SET_THRESHOLD,     "PM_SET_THRESHOLD",     NULL },
1525         { (uint_t)PM_GET_NORM_PWR,      "PM_GET_NORM_PWR",      NULL },
1526         { (uint_t)PM_SET_CUR_PWR,       "PM_SET_CUR_PWR",       NULL },
1527         { (uint_t)PM_GET_CUR_PWR,       "PM_GET_CUR_PWR",       NULL },
1528         { (uint_t)PM_GET_NUM_DEPS,      "PM_GET_NUM_DEPS",      NULL },
1529         { (uint_t)PM_GET_DEP,           "PM_GET_DEP",           NULL },
1530         { (uint_t)PM_ADD_DEP,           "PM_ADD_DEP",           NULL },
1531         { (uint_t)PM_REM_DEP,           "PM_REM_DEP",           NULL },
1532         { (uint_t)PM_REM_DEVICE,        "PM_REM_DEVICE",        NULL },
1533         { (uint_t)PM_REM_DEVICES,       "PM_REM_DEVICES",       NULL },
1534         { (uint_t)PM_DISABLE_AUTOPM,    "PM_DISABLE_AUTOPM",    NULL },
1535         { (uint_t)PM_REENABLE_AUTOPM,   "PM_REENABLE_AUTOPM",   NULL },
1536         { (uint_t)PM_SET_NORM_PWR,      "PM_SET_NORM_PWR",      NULL },
1537         { (uint_t)PM_GET_SYSTEM_THRESHOLD,      "PM_GET_SYSTEM_THRESHOLD",
1538                 NULL },
1539         { (uint_t)PM_GET_DEFAULT_SYSTEM_THRESHOLD,
1540                 "PM_GET_DEFAULT_SYSTEM_THRESHOLD", NULL },
1541         { (uint_t)PM_SET_SYSTEM_THRESHOLD,      "PM_SET_SYSTEM_THRESHOLD",
1542                 NULL },
1543         { (uint_t)PM_START_PM,          "PM_START_PM",          NULL },
1544         { (uint_t)PM_STOP_PM,           "PM_STOP_PM",           NULL },
1545         { (uint_t)PM_RESET_PM,          "PM_RESET_PM",          NULL },
1546         { (uint_t)PM_GET_PM_STATE,      "PM_GET_PM_STATE",      NULL },
1547         { (uint_t)PM_GET_AUTOS3_STATE,  "PM_GET_AUTOS3_STATE",  NULL },
1548         { (uint_t)PM_GET_S3_SUPPORT_STATE,      "PM_GET_S3_SUPPORT_STATE",
1549                 NULL },
1550         { (uint_t)PM_IDLE_DOWN,         "PM_IDLE_DOWN",         NULL },
1551         { (uint_t)PM_START_CPUPM,       "PM_START_CPUPM",       NULL },
1552         { (uint_t)PM_START_CPUPM_EV,    "PM_START_CPUPM_EV",    NULL },
1553         { (uint_t)PM_START_CPUPM_POLL,  "PM_START_CPUPM_POLL",  NULL },
1554         { (uint_t)PM_STOP_CPUPM,        "PM_STOP_CPUPM",        NULL },
1555         { (uint_t)PM_GET_CPU_THRESHOLD, "PM_GET_CPU_THRESHOLD", NULL },
1556         { (uint_t)PM_SET_CPU_THRESHOLD, "PM_SET_CPU_THRESHOLD", NULL },
1557         { (uint_t)PM_GET_CPUPM_STATE,   "PM_GET_CPUPM_STATE",   NULL },
1558         { (uint_t)PM_START_AUTOS3,      "PM_START_AUTOS3",      NULL },
1559         { (uint_t)PM_STOP_AUTOS3,       "PM_STOP_AUTOS3",       NULL },
1560         { (uint_t)PM_ENABLE_S3,         "PM_ENABLE_S3",         NULL },
1561         { (uint_t)PM_DISABLE_S3,        "PM_DISABLE_S3",        NULL },
1562         { (uint_t)PM_ENTER_S3,          "PM_ENTER_S3",          NULL },
1563         { (uint_t)PM_DISABLE_CPU_DEEP_IDLE,     "PM_DISABLE_CPU_DEEP_IDLE",
1564                 NULL },
1565         { (uint_t)PM_ENABLE_CPU_DEEP_IDLE,      "PM_START_CPU_DEEP_IDLE",
1566                 NULL },
1567         { (uint_t)PM_DEFAULT_CPU_DEEP_IDLE,     "PM_DFLT_CPU_DEEP_IDLE",
1568                 NULL },
1569 #ifdef _SYSCALL32
1570         { (uint_t)PM_GET_STATE_CHANGE,          "PM_GET_STATE_CHANGE",
1571                 "pm_state_change32_t" },
1572         { (uint_t)PM_GET_STATE_CHANGE_WAIT,     "PM_GET_STATE_CHANGE_WAIT",
1573                 "pm_state_change32_t" },
1574         { (uint_t)PM_DIRECT_NOTIFY,             "PM_DIRECT_NOTIFY",
1575                 "pm_state_change32_t" },
1576         { (uint_t)PM_DIRECT_NOTIFY_WAIT,        "PM_DIRECT_NOTIFY_WAIT",
1577                 "pm_state_change32_t" },
1578         { (uint_t)PM_REPARSE_PM_PROPS,          "PM_REPARSE_PM_PROPS",
1579                 "pm_req32_t" },
1580         { (uint_t)PM_SET_DEVICE_THRESHOLD,      "PM_SET_DEVICE_THRESHOLD",
1581                 "pm_req32_t" },
1582         { (uint_t)PM_GET_STATS,                 "PM_GET_STATS",
1583                 "pm_req32_t" },
1584         { (uint_t)PM_GET_DEVICE_THRESHOLD,      "PM_GET_DEVICE_THRESHOLD",
1585                 "pm_req32_t" },
1586         { (uint_t)PM_GET_POWER_NAME,            "PM_GET_POWER_NAME",
1587                 "pm_req32_t" },
1588         { (uint_t)PM_GET_POWER_LEVELS,          "PM_GET_POWER_LEVELS",
1589                 "pm_req32_t" },
1590         { (uint_t)PM_GET_NUM_COMPONENTS,        "PM_GET_NUM_COMPONENTS",
1591                 "pm_req32_t" },
1592         { (uint_t)PM_GET_COMPONENT_NAME,        "PM_GET_COMPONENT_NAME",
1593                 "pm_req32_t" },
1594         { (uint_t)PM_GET_NUM_POWER_LEVELS,      "PM_GET_NUM_POWER_LEVELS",
1595                 "pm_req32_t" },
1596         { (uint_t)PM_DIRECT_PM,                 "PM_DIRECT_PM",
1597                 "pm_req32_t" },
1598         { (uint_t)PM_RELEASE_DIRECT_PM,         "PM_RELEASE_DIRECT_PM",
1599                 "pm_req32_t" },
1600         { (uint_t)PM_RESET_DEVICE_THRESHOLD,    "PM_RESET_DEVICE_THRESHOLD",
1601                 "pm_req32_t" },
1602         { (uint_t)PM_GET_DEVICE_TYPE,           "PM_GET_DEVICE_TYPE",
1603                 "pm_req32_t" },
1604         { (uint_t)PM_SET_COMPONENT_THRESHOLDS,  "PM_SET_COMPONENT_THRESHOLDS",
1605                 "pm_req32_t" },
1606         { (uint_t)PM_GET_COMPONENT_THRESHOLDS,  "PM_GET_COMPONENT_THRESHOLDS",
1607                 "pm_req32_t" },
1608         { (uint_t)PM_GET_DEVICE_THRESHOLD_BASIS,
1609                 "PM_GET_DEVICE_THRESHOLD_BASIS",        "pm_req32_t" },
1610         { (uint_t)PM_SET_CURRENT_POWER,         "PM_SET_CURRENT_POWER",
1611                 "pm_req32_t" },
1612         { (uint_t)PM_GET_CURRENT_POWER,         "PM_GET_CURRENT_POWER",
1613                 "pm_req32_t" },
1614         { (uint_t)PM_GET_FULL_POWER,            "PM_GET_FULL_POWER",
1615                 "pm_req32_t" },
1616         { (uint_t)PM_ADD_DEPENDENT,             "PM_ADD_DEPENDENT",
1617                 "pm_req32_t" },
1618         { (uint_t)PM_GET_TIME_IDLE,             "PM_GET_TIME_IDLE",
1619                 "pm_req32_t" },
1620         { (uint_t)PM_ADD_DEPENDENT_PROPERTY,    "PM_ADD_DEPENDENT_PROPERTY",
1621                 "pm_req32_t" },
1622         { (uint_t)PM_GET_CMD_NAME,              "PM_GET_CMD_NAME",
1623                 "pm_req32_t" },
1624         { (uint_t)PM_SEARCH_LIST,               "PM_SEARCH_LIST",
1625                 "pm_searchargs32_t" },
1626 #else  /* _SYSCALL32 */
1627         { (uint_t)PM_GET_STATE_CHANGE,          "PM_GET_STATE_CHANGE",
1628                 "pm_state_change_t" },
1629         { (uint_t)PM_GET_STATE_CHANGE_WAIT,     "PM_GET_STATE_CHANGE_WAIT",
1630                 "pm_state_change_t" },
1631         { (uint_t)PM_DIRECT_NOTIFY,             "PM_DIRECT_NOTIFY",
1632                 "pm_state_change_t" },
1633         { (uint_t)PM_DIRECT_NOTIFY_WAIT,        "PM_DIRECT_NOTIFY_WAIT",
1634                 "pm_state_change_t" },
1635         { (uint_t)PM_REPARSE_PM_PROPS,          "PM_REPARSE_PM_PROPS",
1636                 "pm_req_t" },
1637         { (uint_t)PM_SET_DEVICE_THRESHOLD,      "PM_SET_DEVICE_THRESHOLD",
1638                 "pm_req_t" },
1639         { (uint_t)PM_GET_STATS,                 "PM_GET_STATS",
1640                 "pm_req_t" },
1641         { (uint_t)PM_GET_DEVICE_THRESHOLD,      "PM_GET_DEVICE_THRESHOLD",
1642                 "pm_req_t" },
1643         { (uint_t)PM_GET_POWER_NAME,            "PM_GET_POWER_NAME",
1644                 "pm_req_t" },
1645         { (uint_t)PM_GET_POWER_LEVELS,          "PM_GET_POWER_LEVELS",
1646                 "pm_req_t" },
1647         { (uint_t)PM_GET_NUM_COMPONENTS,        "PM_GET_NUM_COMPONENTS",
1648                 "pm_req_t" },
1649         { (uint_t)PM_GET_COMPONENT_NAME,        "PM_GET_COMPONENT_NAME",
1650                 "pm_req_t" },
1651         { (uint_t)PM_GET_NUM_POWER_LEVELS,      "PM_GET_NUM_POWER_LEVELS",
1652                 "pm_req_t" },
1653         { (uint_t)PM_DIRECT_PM,                 "PM_DIRECT_PM",
1654                 "pm_req_t" },
1655         { (uint_t)PM_RELEASE_DIRECT_PM,         "PM_RELEASE_DIRECT_PM",
1656                 "pm_req_t" },
1657         { (uint_t)PM_RESET_DEVICE_THRESHOLD,    "PM_RESET_DEVICE_THRESHOLD",
1658                 "pm_req_t" },
1659         { (uint_t)PM_GET_DEVICE_TYPE,           "PM_GET_DEVICE_TYPE",
1660                 "pm_req_t" },
1661         { (uint_t)PM_SET_COMPONENT_THRESHOLDS,  "PM_SET_COMPONENT_THRESHOLDS",
1662                 "pm_req_t" },
1663         { (uint_t)PM_GET_COMPONENT_THRESHOLDS,  "PM_GET_COMPONENT_THRESHOLDS",
1664                 "pm_req_t" },
1665         { (uint_t)PM_GET_DEVICE_THRESHOLD_BASIS,
1666                 "PM_GET_DEVICE_THRESHOLD_BASIS",        "pm_req_t" },
1667         { (uint_t)PM_SET_CURRENT_POWER,         "PM_SET_CURRENT_POWER",
1668                 "pm_req_t" },
1669         { (uint_t)PM_GET_CURRENT_POWER,         "PM_GET_CURRENT_POWER",
1670                 "pm_req_t" },
1671         { (uint_t)PM_GET_FULL_POWER,            "PM_GET_FULL_POWER",
1672                 "pm_req_t" },
1673         { (uint_t)PM_ADD_DEPENDENT,             "PM_ADD_DEPENDENT",
1674                 "pm_req_t" },
1675         { (uint_t)PM_GET_TIME_IDLE,             "PM_GET_TIME_IDLE",
1676                 "pm_req_t" },
1677         { (uint_t)PM_ADD_DEPENDENT_PROPERTY,    "PM_ADD_DEPENDENT_PROPERTY",
1678                 "pm_req_t" },
1679         { (uint_t)PM_GET_CMD_NAME,              "PM_GET_CMD_NAME",
1680                 "pm_req_t" },
1681         { (uint_t)PM_SEARCH_LIST,       "PM_SEARCH_LIST",
1682                 "pm_searchargs_t" },
1683 #endif /* _SYSCALL */
1684 
1685         /* cpuid ioctls */
1686         { (uint_t)CPUID_GET_HWCAP,              "CPUID_GET_HWCAP", NULL },
1687 #if defined(__i386) || defined(__amd64)
1688         { (uint_t)CPUID_RDMSR,                  "CPUID_RDMSR", NULL },
1689 #endif
1690 
1691         { (uint_t)0, NULL, NULL }
1692 };
1693 
1694 void
1695 ioctl_ioccom(char *buf, size_t size, uint_t code, int nbytes, int x, int y)
1696 {
1697         const char *inoutstr;
1698 
1699         if (code & IOC_VOID)
1700                 inoutstr = "";
1701         else if ((code & IOC_INOUT) == IOC_INOUT)
1702                 inoutstr = "WR";
1703         else
1704                 inoutstr = code & IOC_IN ? "W" : "R";
1705 
1706         if (isascii(x) && isprint(x))
1707                 (void) snprintf(buf, size, "_IO%sN('%c', %d, %d)", inoutstr,
1708                     x, y, nbytes);
1709         else
1710                 (void) snprintf(buf, size, "_IO%sN(0x%x, %d, %d)", inoutstr,
1711                     x, y, nbytes);
1712 }
1713 
1714 
1715 const char *
1716 ioctlname(private_t *pri, uint_t code)
1717 {
1718         const struct ioc *ip;
1719         const char *str = NULL;
1720 
1721         for (ip = &ioc[0]; ip->name; ip++) {
1722                 if (code == ip->code) {
1723                         str = ip->name;
1724                         break;
1725                 }
1726         }
1727 
1728         /*
1729          * Developers hide ascii ioctl names in the ioctl subcode; for example
1730          * 0x445210 should be printed 'D'<<16|'R'<<8|10.  We allow for all
1731          * three high order bytes (called hi, mid and lo) to contain ascii
1732          * characters.
1733          */
1734         if (str == NULL) {
1735                 int c_hi = code >> 24;
1736                 int c_mid = (code >> 16) & 0xff;
1737                 int c_mid_nm = (code >> 16);
1738                 int c_lo = (code >> 8) & 0xff;
1739                 int c_lo_nm = code >> 8;
1740 
1741                 if (isascii(c_lo) && isprint(c_lo) &&
1742                     isascii(c_mid) && isprint(c_mid) &&
1743                     isascii(c_hi) && isprint(c_hi))
1744                         (void) sprintf(pri->code_buf,
1745                             "(('%c'<<24)|('%c'<<16)|('%c'<<8)|%d)",
1746                             c_hi, c_mid, c_lo, code & 0xff);
1747                 else if (isascii(c_lo) && isprint(c_lo) &&
1748                     isascii(c_mid_nm) && isprint(c_mid_nm))
1749                         (void) sprintf(pri->code_buf,
1750                             "(('%c'<<16)|('%c'<<8)|%d)", c_mid, c_lo,
1751                             code & 0xff);
1752                 else if (isascii(c_lo_nm) && isprint(c_lo_nm))
1753                         (void) sprintf(pri->code_buf, "(('%c'<<8)|%d)",
1754                             c_lo_nm, code & 0xff);
1755                 else if (code & (IOC_VOID|IOC_INOUT))
1756                         ioctl_ioccom(pri->code_buf, sizeof (pri->code_buf),
1757                             code, c_mid, c_lo, code & 0xff);
1758                 else
1759                         (void) sprintf(pri->code_buf, "0x%.4X", code);
1760                 str = (const char *)pri->code_buf;
1761         }
1762 
1763         return (str);
1764 }
1765 
1766 
1767 const char *
1768 ioctldatastruct(uint_t code)
1769 {
1770         const struct ioc *ip;
1771         const char *str = NULL;
1772 
1773         for (ip = &ioc[0]; ip->name != NULL; ip++) {
1774                 if (code == ip->code) {
1775                         str = ip->datastruct;
1776                         break;
1777                 }
1778         }
1779         return (str);
1780 }
1781 
1782 
1783 const char *
1784 fcntlname(int code)
1785 {
1786         const char *str = NULL;
1787 
1788         if (code >= FCNTLMIN && code <= FCNTLMAX)
1789                 str = FCNTLname[code-FCNTLMIN];
1790         return (str);
1791 }
1792 
1793 const char *
1794 sfsname(int code)
1795 {
1796         const char *str = NULL;
1797 
1798         if (code >= SYSFSMIN && code <= SYSFSMAX)
1799                 str = SYSFSname[code-SYSFSMIN];
1800         return (str);
1801 }
1802 
1803 /* ARGSUSED */
1804 const char *
1805 si86name(int code)
1806 {
1807         const char *str = NULL;
1808 
1809 #if defined(__i386) || defined(__amd64)
1810         switch (code) {
1811         case SI86SWPI:          str = "SI86SWPI";       break;
1812         case SI86SYM:           str = "SI86SYM";        break;
1813         case SI86CONF:          str = "SI86CONF";       break;
1814         case SI86BOOT:          str = "SI86BOOT";       break;
1815         case SI86AUTO:          str = "SI86AUTO";       break;
1816         case SI86EDT:           str = "SI86EDT";        break;
1817         case SI86SWAP:          str = "SI86SWAP";       break;
1818         case SI86FPHW:          str = "SI86FPHW";       break;
1819         case SI86FPSTART:       str = "SI86FPSTART";    break;
1820         case GRNON:             str = "GRNON";          break;
1821         case GRNFLASH:          str = "GRNFLASH";       break;
1822         case STIME:             str = "STIME";          break;
1823         case SETNAME:           str = "SETNAME";        break;
1824         case RNVR:              str = "RNVR";           break;
1825         case WNVR:              str = "WNVR";           break;
1826         case RTODC:             str = "RTODC";          break;
1827         case CHKSER:            str = "CHKSER";         break;
1828         case SI86NVPRT:         str = "SI86NVPRT";      break;
1829         case SANUPD:            str = "SANUPD";         break;
1830         case SI86KSTR:          str = "SI86KSTR";       break;
1831         case SI86MEM:           str = "SI86MEM";        break;
1832         case SI86TODEMON:       str = "SI86TODEMON";    break;
1833         case SI86CCDEMON:       str = "SI86CCDEMON";    break;
1834         case SI86CACHE:         str = "SI86CACHE";      break;
1835         case SI86DELMEM:        str = "SI86DELMEM";     break;
1836         case SI86ADDMEM:        str = "SI86ADDMEM";     break;
1837 /* 71 through 74 reserved for VPIX */
1838         case SI86V86:           str = "SI86V86";        break;
1839         case SI86SLTIME:        str = "SI86SLTIME";     break;
1840         case SI86DSCR:          str = "SI86DSCR";       break;
1841         case RDUBLK:            str = "RDUBLK";         break;
1842 /* NFA entry point */
1843         case SI86NFA:           str = "SI86NFA";        break;
1844         case SI86VM86:          str = "SI86VM86";       break;
1845         case SI86VMENABLE:      str = "SI86VMENABLE";   break;
1846         case SI86LIMUSER:       str = "SI86LIMUSER";    break;
1847         case SI86RDID:          str = "SI86RDID";       break;
1848         case SI86RDBOOT:        str = "SI86RDBOOT";     break;
1849 /* Merged Product defines */
1850         case SI86SHFIL:         str = "SI86SHFIL";      break;
1851         case SI86PCHRGN:        str = "SI86PCHRGN";     break;
1852         case SI86BADVISE:       str = "SI86BADVISE";    break;
1853         case SI86SHRGN:         str = "SI86SHRGN";      break;
1854         case SI86CHIDT:         str = "SI86CHIDT";      break;
1855         case SI86EMULRDA:       str = "SI86EMULRDA";    break;
1856 /* RTC commands */
1857         case WTODC:             str = "WTODC";          break;
1858         case SGMTL:             str = "SGMTL";          break;
1859         case GGMTL:             str = "GGMTL";          break;
1860         case RTCSYNC:           str = "RTCSYNC";        break;
1861         }
1862 #endif /* __i386 */
1863 
1864         return (str);
1865 }
1866 
1867 const char *
1868 utscode(int code)
1869 {
1870         const char *str = NULL;
1871 
1872         switch (code) {
1873         case UTS_UNAME:         str = "UNAME";  break;
1874         case UTS_USTAT:         str = "USTAT";  break;
1875         case UTS_FUSERS:        str = "FUSERS"; break;
1876         }
1877 
1878         return (str);
1879 }
1880 
1881 const char *
1882 rctlsyscode(int code)
1883 {
1884         const char *str = NULL;
1885         switch (code) {
1886         case 0:         str = "GETRCTL";        break;
1887         case 1:         str = "SETRCTL";        break;
1888         case 2:         str = "RCTLSYS_LST";    break;
1889         case 3:         str = "RCTLSYS_CTL";    break;
1890         case 4:         str = "RCTLSYS_SETPROJ";        break;
1891         default:        str = "UNKNOWN";        break;
1892         }
1893         return (str);
1894 }
1895 
1896 const char *
1897 rctl_local_action(private_t *pri, uint_t val)
1898 {
1899         uint_t action = val & (~RCTL_LOCAL_ACTION_MASK);
1900 
1901         char *s = pri->code_buf;
1902 
1903         *s = '\0';
1904 
1905         if (action & RCTL_LOCAL_NOACTION) {
1906                 action ^= RCTL_LOCAL_NOACTION;
1907                 (void) strlcat(s, "|RCTL_LOCAL_NOACTION",
1908                     sizeof (pri->code_buf));
1909         }
1910         if (action & RCTL_LOCAL_SIGNAL) {
1911                 action ^= RCTL_LOCAL_SIGNAL;
1912                 (void) strlcat(s, "|RCTL_LOCAL_SIGNAL",
1913                     sizeof (pri->code_buf));
1914         }
1915         if (action & RCTL_LOCAL_DENY) {
1916                 action ^= RCTL_LOCAL_DENY;
1917                 (void) strlcat(s, "|RCTL_LOCAL_DENY",
1918                     sizeof (pri->code_buf));
1919         }
1920 
1921         if ((action & (~RCTL_LOCAL_ACTION_MASK)) != 0)
1922                 return (NULL);
1923         else if (*s != '\0')
1924                 return (s+1);
1925         else
1926                 return (NULL);
1927 }
1928 
1929 
1930 const char *
1931 rctl_local_flags(private_t *pri, uint_t val)
1932 {
1933         uint_t pval = val & RCTL_LOCAL_ACTION_MASK;
1934         char *s = pri->code_buf;
1935 
1936         *s = '\0';
1937 
1938         if (pval & RCTL_LOCAL_MAXIMAL) {
1939                 pval ^= RCTL_LOCAL_MAXIMAL;
1940                 (void) strlcat(s, "|RCTL_LOCAL_MAXIMAL",
1941                     sizeof (pri->code_buf));
1942         }
1943 
1944         if ((pval & RCTL_LOCAL_ACTION_MASK) != 0)
1945                 return (NULL);
1946         else if (*s != '\0')
1947                 return (s+1);
1948         else
1949                 return (NULL);
1950 }
1951 
1952 
1953 const char *
1954 sconfname(int code)
1955 {
1956         const char *str = NULL;
1957 
1958         if (code >= SCONFMIN && code <= SCONFMAX)
1959                 str = SCONFname[code-SCONFMIN];
1960         return (str);
1961 }
1962 
1963 const char *
1964 pathconfname(int code)
1965 {
1966         const char *str = NULL;
1967 
1968         if (code >= PATHCONFMIN && code <= PATHCONFMAX)
1969                 str = PATHCONFname[code-PATHCONFMIN];
1970         return (str);
1971 }
1972 
1973 #define ALL_O_FLAGS \
1974         (O_NDELAY|O_APPEND|O_SYNC|O_DSYNC|O_NONBLOCK|O_CREAT|O_TRUNC\
1975         |O_EXCL|O_NOCTTY|O_LARGEFILE|O_RSYNC|O_XATTR|O_NOFOLLOW|O_NOLINKS\
1976         |O_CLOEXEC|O_DIRECTORY|FXATTRDIROPEN)
1977 
1978 const char *
1979 openarg(private_t *pri, int arg)
1980 {
1981         char *str = pri->code_buf;
1982 
1983         if ((arg & ~(O_ACCMODE | ALL_O_FLAGS)) != 0)
1984                 return (NULL);
1985 
1986         switch (arg & O_ACCMODE) {
1987         default:
1988                 return (NULL);
1989         case O_RDONLY:
1990                 (void) strcpy(str, "O_RDONLY");
1991                 break;
1992         case O_WRONLY:
1993                 (void) strcpy(str, "O_WRONLY");
1994                 break;
1995         case O_RDWR:
1996                 (void) strcpy(str, "O_RDWR");
1997                 break;
1998         case O_SEARCH:
1999                 (void) strcpy(str, "O_SEARCH");
2000                 break;
2001         case O_EXEC:
2002                 (void) strcpy(str, "O_EXEC");
2003                 break;
2004         }
2005 
2006         if (arg & O_NDELAY)
2007                 (void) strlcat(str, "|O_NDELAY", sizeof (pri->code_buf));
2008         if (arg & O_APPEND)
2009                 (void) strlcat(str, "|O_APPEND", sizeof (pri->code_buf));
2010         if (arg & O_SYNC)
2011                 (void) strlcat(str, "|O_SYNC", sizeof (pri->code_buf));
2012         if (arg & O_DSYNC)
2013                 (void) strlcat(str, "|O_DSYNC", sizeof (pri->code_buf));
2014         if (arg & O_NONBLOCK)
2015                 (void) strlcat(str, "|O_NONBLOCK", sizeof (pri->code_buf));
2016         if (arg & O_CREAT)
2017                 (void) strlcat(str, "|O_CREAT", sizeof (pri->code_buf));
2018         if (arg & O_TRUNC)
2019                 (void) strlcat(str, "|O_TRUNC", sizeof (pri->code_buf));
2020         if (arg & O_EXCL)
2021                 (void) strlcat(str, "|O_EXCL", sizeof (pri->code_buf));
2022         if (arg & O_NOCTTY)
2023                 (void) strlcat(str, "|O_NOCTTY", sizeof (pri->code_buf));
2024         if (arg & O_LARGEFILE)
2025                 (void) strlcat(str, "|O_LARGEFILE", sizeof (pri->code_buf));
2026         if (arg & O_RSYNC)
2027                 (void) strlcat(str, "|O_RSYNC", sizeof (pri->code_buf));
2028         if (arg & O_XATTR)
2029                 (void) strlcat(str, "|O_XATTR", sizeof (pri->code_buf));
2030         if (arg & O_NOFOLLOW)
2031                 (void) strlcat(str, "|O_NOFOLLOW", sizeof (pri->code_buf));
2032         if (arg & O_NOLINKS)
2033                 (void) strlcat(str, "|O_NOLINKS", sizeof (pri->code_buf));
2034         if (arg & O_CLOEXEC)
2035                 (void) strlcat(str, "|O_CLOEXEC", sizeof (pri->code_buf));
2036         if (arg & O_DIRECTORY)
2037                 (void) strlcat(str, "|O_DIRECTORY", sizeof (pri->code_buf));
2038         if (arg & FXATTRDIROPEN)
2039                 (void) strlcat(str, "|FXATTRDIROPEN", sizeof (pri->code_buf));
2040 
2041         return ((const char *)str);
2042 }
2043 
2044 const char *
2045 whencearg(int arg)
2046 {
2047         const char *str = NULL;
2048 
2049         switch (arg) {
2050         case SEEK_SET:  str = "SEEK_SET";       break;
2051         case SEEK_CUR:  str = "SEEK_CUR";       break;
2052         case SEEK_END:  str = "SEEK_END";       break;
2053         case SEEK_DATA: str = "SEEK_DATA";      break;
2054         case SEEK_HOLE: str = "SEEK_HOLE";      break;
2055         }
2056 
2057         return (str);
2058 }
2059 
2060 #define IPC_FLAGS       (IPC_ALLOC|IPC_CREAT|IPC_EXCL|IPC_NOWAIT)
2061 
2062 char *
2063 ipcflags(private_t *pri, int arg)
2064 {
2065         char *str = pri->code_buf;
2066 
2067         if (arg & 0777)
2068                 (void) sprintf(str, "0%.3o", arg&0777);
2069         else
2070                 *str = '\0';
2071 
2072         if (arg & IPC_ALLOC)
2073                 (void) strcat(str, "|IPC_ALLOC");
2074         if (arg & IPC_CREAT)
2075                 (void) strcat(str, "|IPC_CREAT");
2076         if (arg & IPC_EXCL)
2077                 (void) strcat(str, "|IPC_EXCL");
2078         if (arg & IPC_NOWAIT)
2079                 (void) strcat(str, "|IPC_NOWAIT");
2080 
2081         return (str);
2082 }
2083 
2084 const char *
2085 msgflags(private_t *pri, int arg)
2086 {
2087         char *str;
2088 
2089         if (arg == 0 || (arg & ~(IPC_FLAGS|MSG_NOERROR|0777)) != 0)
2090                 return ((char *)NULL);
2091 
2092         str = ipcflags(pri, arg);
2093 
2094         if (arg & MSG_NOERROR)
2095                 (void) strcat(str, "|MSG_NOERROR");
2096 
2097         if (*str == '|')
2098                 str++;
2099         return ((const char *)str);
2100 }
2101 
2102 const char *
2103 semflags(private_t *pri, int arg)
2104 {
2105         char *str;
2106 
2107         if (arg == 0 || (arg & ~(IPC_FLAGS|SEM_UNDO|0777)) != 0)
2108                 return ((char *)NULL);
2109 
2110         str = ipcflags(pri, arg);
2111 
2112         if (arg & SEM_UNDO)
2113                 (void) strcat(str, "|SEM_UNDO");
2114 
2115         if (*str == '|')
2116                 str++;
2117         return ((const char *)str);
2118 }
2119 
2120 const char *
2121 shmflags(private_t *pri, int arg)
2122 {
2123         char *str;
2124 
2125         if (arg == 0 || (arg & ~(IPC_FLAGS|SHM_RDONLY|SHM_RND|0777)) != 0)
2126                 return ((char *)NULL);
2127 
2128         str = ipcflags(pri, arg);
2129 
2130         if (arg & SHM_RDONLY)
2131                 (void) strcat(str, "|SHM_RDONLY");
2132         if (arg & SHM_RND)
2133                 (void) strcat(str, "|SHM_RND");
2134 
2135         if (*str == '|')
2136                 str++;
2137         return ((const char *)str);
2138 }
2139 
2140 #define MSGCMDMIN       0
2141 #define MSGCMDMAX       IPC_STAT64
2142 const char *const MSGCMDname[MSGCMDMAX+1] = {
2143         NULL, NULL, NULL, NULL, NULL,
2144         NULL, NULL, NULL, NULL, NULL,
2145         "IPC_RMID",     /* 10 */
2146         "IPC_SET",      /* 11 */
2147         "IPC_STAT",     /* 12 */
2148         "IPC_SET64",    /* 13 */
2149         "IPC_STAT64",   /* 14 */
2150 };
2151 
2152 #define SEMCMDMIN       0
2153 #define SEMCMDMAX       IPC_STAT64
2154 const char *const SEMCMDname[SEMCMDMAX+1] = {
2155         NULL,           /* 0 */
2156         NULL,           /* 1 */
2157         NULL,           /* 2 */
2158         "GETNCNT",      /* 3 */
2159         "GETPID",       /* 4 */
2160         "GETVAL",       /* 5 */
2161         "GETALL",       /* 6 */
2162         "GETZCNT",      /* 7 */
2163         "SETVAL",       /* 8 */
2164         "SETALL",       /* 9 */
2165         "IPC_RMID",     /* 10 */
2166         "IPC_SET",      /* 11 */
2167         "IPC_STAT",     /* 12 */
2168         "IPC_SET64",    /* 13 */
2169         "IPC_STAT64",   /* 14 */
2170 };
2171 
2172 #define SHMCMDMIN       0
2173 #define SHMCMDMAX       IPC_STAT64
2174 const char *const SHMCMDname[SHMCMDMAX+1] = {
2175         NULL,           /* 0 */
2176         NULL,           /* 1 */
2177         NULL,           /* 2 */
2178         "SHM_LOCK",     /* 3 */
2179         "SHM_UNLOCK",   /* 4 */
2180         NULL, NULL, NULL, NULL, NULL,                   /* 5 NULLs */
2181         "IPC_RMID",     /* 10 */
2182         "IPC_SET",      /* 11 */
2183         "IPC_STAT",     /* 12 */
2184         "IPC_SET64",    /* 13 */
2185         "IPC_STAT64",   /* 14 */
2186 };
2187 
2188 const char *
2189 msgcmd(int arg)
2190 {
2191         const char *str = NULL;
2192 
2193         if (arg >= MSGCMDMIN && arg <= MSGCMDMAX)
2194                 str = MSGCMDname[arg-MSGCMDMIN];
2195         return (str);
2196 }
2197 
2198 const char *
2199 semcmd(int arg)
2200 {
2201         const char *str = NULL;
2202 
2203         if (arg >= SEMCMDMIN && arg <= SEMCMDMAX)
2204                 str = SEMCMDname[arg-SEMCMDMIN];
2205         return (str);
2206 }
2207 
2208 const char *
2209 shmcmd(int arg)
2210 {
2211         const char *str = NULL;
2212 
2213         if (arg >= SHMCMDMIN && arg <= SHMCMDMAX)
2214                 str = SHMCMDname[arg-SHMCMDMIN];
2215         return (str);
2216 }
2217 
2218 const char *
2219 strrdopt(int arg)       /* streams read option (I_SRDOPT I_GRDOPT) */
2220 {
2221         const char *str = NULL;
2222 
2223         switch (arg) {
2224         case RNORM:     str = "RNORM";          break;
2225         case RMSGD:     str = "RMSGD";          break;
2226         case RMSGN:     str = "RMSGN";          break;
2227         }
2228 
2229         return (str);
2230 }
2231 
2232 /* bit map of streams events (I_SETSIG & I_GETSIG) */
2233 const char *
2234 strevents(private_t *pri, int arg)
2235 {
2236         char *str = pri->code_buf;
2237 
2238         if (arg & ~(S_INPUT|S_HIPRI|S_OUTPUT|S_MSG|S_ERROR|S_HANGUP))
2239                 return ((char *)NULL);
2240 
2241         *str = '\0';
2242         if (arg & S_INPUT)
2243                 (void) strcat(str, "|S_INPUT");
2244         if (arg & S_HIPRI)
2245                 (void) strcat(str, "|S_HIPRI");
2246         if (arg & S_OUTPUT)
2247                 (void) strcat(str, "|S_OUTPUT");
2248         if (arg & S_MSG)
2249                 (void) strcat(str, "|S_MSG");
2250         if (arg & S_ERROR)
2251                 (void) strcat(str, "|S_ERROR");
2252         if (arg & S_HANGUP)
2253                 (void) strcat(str, "|S_HANGUP");
2254 
2255         return ((const char *)(str+1));
2256 }
2257 
2258 const char *
2259 tiocflush(private_t *pri, int arg)      /* bit map passsed by TIOCFLUSH */
2260 {
2261         char *str = pri->code_buf;
2262 
2263         if (arg & ~(FREAD|FWRITE))
2264                 return ((char *)NULL);
2265 
2266         *str = '\0';
2267         if (arg & FREAD)
2268                 (void) strcat(str, "|FREAD");
2269         if (arg & FWRITE)
2270                 (void) strcat(str, "|FWRITE");
2271 
2272         return ((const char *)(str+1));
2273 }
2274 
2275 const char *
2276 strflush(int arg)       /* streams flush option (I_FLUSH) */
2277 {
2278         const char *str = NULL;
2279 
2280         switch (arg) {
2281         case FLUSHR:    str = "FLUSHR";         break;
2282         case FLUSHW:    str = "FLUSHW";         break;
2283         case FLUSHRW:   str = "FLUSHRW";        break;
2284         }
2285 
2286         return (str);
2287 }
2288 
2289 #define ALL_MOUNT_FLAGS (MS_RDONLY|MS_FSS|MS_DATA|MS_NOSUID|MS_REMOUNT| \
2290         MS_NOTRUNC|MS_OVERLAY|MS_OPTIONSTR|MS_GLOBAL|MS_FORCE|MS_NOMNTTAB)
2291 
2292 const char *
2293 mountflags(private_t *pri, int arg)     /* bit map of mount syscall flags */
2294 {
2295         char *str = pri->code_buf;
2296         size_t used = 0;
2297 
2298         if (arg & ~ALL_MOUNT_FLAGS)
2299                 return ((char *)NULL);
2300 
2301         *str = '\0';
2302         if (arg & MS_RDONLY)
2303                 used = strlcat(str, "|MS_RDONLY", sizeof (pri->code_buf));
2304         if (arg & MS_FSS)
2305                 used = strlcat(str, "|MS_FSS", sizeof (pri->code_buf));
2306         if (arg & MS_DATA)
2307                 used = strlcat(str, "|MS_DATA", sizeof (pri->code_buf));
2308         if (arg & MS_NOSUID)
2309                 used = strlcat(str, "|MS_NOSUID", sizeof (pri->code_buf));
2310         if (arg & MS_REMOUNT)
2311                 used = strlcat(str, "|MS_REMOUNT", sizeof (pri->code_buf));
2312         if (arg & MS_NOTRUNC)
2313                 used = strlcat(str, "|MS_NOTRUNC", sizeof (pri->code_buf));
2314         if (arg & MS_OVERLAY)
2315                 used = strlcat(str, "|MS_OVERLAY", sizeof (pri->code_buf));
2316         if (arg & MS_OPTIONSTR)
2317                 used = strlcat(str, "|MS_OPTIONSTR", sizeof (pri->code_buf));
2318         if (arg & MS_GLOBAL)
2319                 used = strlcat(str, "|MS_GLOBAL", sizeof (pri->code_buf));
2320         if (arg & MS_FORCE)
2321                 used = strlcat(str, "|MS_FORCE", sizeof (pri->code_buf));
2322         if (arg & MS_NOMNTTAB)
2323                 used = strlcat(str, "|MS_NOMNTTAB", sizeof (pri->code_buf));
2324 
2325         if (used == 0 || used >= sizeof (pri->code_buf))
2326                 return ((char *)NULL);                  /* use prt_hex() */
2327 
2328         return ((const char *)(str+1));
2329 }
2330 
2331 const char *
2332 svfsflags(private_t *pri, ulong_t arg)  /* bit map of statvfs syscall flags */
2333 {
2334         char *str = pri->code_buf;
2335 
2336         if (arg & ~(ST_RDONLY|ST_NOSUID|ST_NOTRUNC)) {
2337                 (void) sprintf(str, "0x%lx", arg);
2338                 return (str);
2339         }
2340         *str = '\0';
2341         if (arg & ST_RDONLY)
2342                 (void) strcat(str, "|ST_RDONLY");
2343         if (arg & ST_NOSUID)
2344                 (void) strcat(str, "|ST_NOSUID");
2345         if (arg & ST_NOTRUNC)
2346                 (void) strcat(str, "|ST_NOTRUNC");
2347         if (*str == '\0')
2348                 (void) strcat(str, "|0");
2349         return ((const char *)(str+1));
2350 }
2351 
2352 const char *
2353 fuiname(int arg)        /* fusers() input argument */
2354 {
2355         const char *str = NULL;
2356 
2357         switch (arg) {
2358         case F_FILE_ONLY:       str = "F_FILE_ONLY";            break;
2359         case F_CONTAINED:       str = "F_CONTAINED";            break;
2360         }
2361 
2362         return (str);
2363 }
2364 
2365 const char *
2366 fuflags(private_t *pri, int arg)        /* fusers() output flags */
2367 {
2368         char *str = pri->code_buf;
2369 
2370         if (arg & ~(F_CDIR|F_RDIR|F_TEXT|F_MAP|F_OPEN|F_TRACE|F_TTY)) {
2371                 (void) sprintf(str, "0x%x", arg);
2372                 return (str);
2373         }
2374         *str = '\0';
2375         if (arg & F_CDIR)
2376                 (void) strcat(str, "|F_CDIR");
2377         if (arg & F_RDIR)
2378                 (void) strcat(str, "|F_RDIR");
2379         if (arg & F_TEXT)
2380                 (void) strcat(str, "|F_TEXT");
2381         if (arg & F_MAP)
2382                 (void) strcat(str, "|F_MAP");
2383         if (arg & F_OPEN)
2384                 (void) strcat(str, "|F_OPEN");
2385         if (arg & F_TRACE)
2386                 (void) strcat(str, "|F_TRACE");
2387         if (arg & F_TTY)
2388                 (void) strcat(str, "|F_TTY");
2389         if (*str == '\0')
2390                 (void) strcat(str, "|0");
2391         return ((const char *)(str+1));
2392 }
2393 
2394 
2395 const char *
2396 ipprotos(int arg)       /* IP protocols cf. netinet/in.h */
2397 {
2398         switch (arg) {
2399         case IPPROTO_IP:        return ("IPPROTO_IP");
2400         case IPPROTO_ICMP:      return ("IPPROTO_ICMP");
2401         case IPPROTO_IGMP:      return ("IPPROTO_IGMP");
2402         case IPPROTO_GGP:       return ("IPPROTO_GGP");
2403         case IPPROTO_ENCAP:     return ("IPPROTO_ENCAP");
2404         case IPPROTO_TCP:       return ("IPPROTO_TCP");
2405         case IPPROTO_EGP:       return ("IPPROTO_EGP");
2406         case IPPROTO_PUP:       return ("IPPROTO_PUP");
2407         case IPPROTO_UDP:       return ("IPPROTO_UDP");
2408         case IPPROTO_IDP:       return ("IPPROTO_IDP");
2409         case IPPROTO_IPV6:      return ("IPPROTO_IPV6");
2410         case IPPROTO_ROUTING:   return ("IPPROTO_ROUTING");
2411         case IPPROTO_FRAGMENT:  return ("IPPROTO_FRAGMENT");
2412         case IPPROTO_RSVP:      return ("IPPROTO_RSVP");
2413         case IPPROTO_ESP:       return ("IPPROTO_ESP");
2414         case IPPROTO_AH:        return ("IPPROTO_AH");
2415         case IPPROTO_ICMPV6:    return ("IPPROTO_ICMPV6");
2416         case IPPROTO_NONE:      return ("IPPROTO_NONE");
2417         case IPPROTO_DSTOPTS:   return ("IPPROTO_DSTOPTS");
2418         case IPPROTO_HELLO:     return ("IPPROTO_HELLO");
2419         case IPPROTO_ND:        return ("IPPROTO_ND");
2420         case IPPROTO_EON:       return ("IPPROTO_EON");
2421         case IPPROTO_PIM:       return ("IPPROTO_PIM");
2422         case IPPROTO_SCTP:      return ("IPPROTO_SCTP");
2423         case IPPROTO_RAW:       return ("IPPROTO_RAW");
2424         default:                return (NULL);
2425         }
2426 }