summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorey Richardson <corey@octayn.net>2015-07-05 07:04:25 -0400
committerPaul Osborne <Paul.Osborne@digi.com>2015-08-12 19:29:21 -0500
commitc6a4a87285f0af434bc136fa21efb3e16ce08f79 (patch)
treec2a6af12a7cac502f7dc2a15ae9ddff947ee0fa6
parent23dc9e01e191618ea5f90d2b8aed67f57e67652d (diff)
downloadnix-c6a4a87285f0af434bc136fa21efb3e16ce08f79.zip
Completely revamp sys::ioctl to use cmr/ioctl's approach
This is more type-safe. Also, the old code wasn't cross-platform at all even though it claimed to be. It wasn't even portable across architectures on Linux.
-rw-r--r--src/sys/ioctl/README.md5
-rw-r--r--src/sys/ioctl/etc/find_ioctls.py33
-rw-r--r--src/sys/ioctl/etc/process_ioctls.py236
-rw-r--r--src/sys/ioctl/etc/x86_64/ignore_list113
-rw-r--r--src/sys/ioctl/etc/x86_64/ioctl_list1014
-rw-r--r--src/sys/ioctl/etc/x86_64/manually_found5
-rw-r--r--src/sys/ioctl/mod.rs116
-rw-r--r--src/sys/ioctl/platform/dragonfly.rs0
-rw-r--r--src/sys/ioctl/platform/freebsd.rs0
-rw-r--r--src/sys/ioctl/platform/ios.rs0
-rw-r--r--src/sys/ioctl/platform/linux-generated-x86_64.rs1005
-rw-r--r--src/sys/ioctl/platform/linux.rs415
-rw-r--r--src/sys/ioctl/platform/macos.rs0
-rw-r--r--src/sys/ioctl/platform/openbsd.rs0
14 files changed, 2942 insertions, 0 deletions
diff --git a/src/sys/ioctl/README.md b/src/sys/ioctl/README.md
new file mode 100644
index 00000000..819a965c
--- /dev/null
+++ b/src/sys/ioctl/README.md
@@ -0,0 +1,5 @@
+etc contains scripts for scraping the system for ioctls and the results of
+running said scripts.
+
+platform contains platform-specific ioctl bindings and the definitions of the
+macros for encoding ioctl numbers etc.
diff --git a/src/sys/ioctl/etc/find_ioctls.py b/src/sys/ioctl/etc/find_ioctls.py
new file mode 100644
index 00000000..25dc5634
--- /dev/null
+++ b/src/sys/ioctl/etc/find_ioctls.py
@@ -0,0 +1,33 @@
+# PYTHONPATH=/home/cmr/llvm/tools/clang/bindings/python LD_LIBRARY_PATH=/usr/lib ./find_ioctls.py
+
+import os
+import clang.cindex as c
+
+header_paths = ["/usr/include"]
+
+idx = c.Index.create()
+args = ['-E', '-x', 'c', '-I/usr/lib/clang/3.6.0/include/']
+options = c.TranslationUnit.PARSE_DETAILED_PROCESSING_RECORD | c.TranslationUnit.PARSE_SKIP_FUNCTION_BODIES | c.TranslationUnit.PARSE_INCOMPLETE
+
+ioctls = []
+
+for p in header_paths:
+ for (dirp, dirn, fnames) in os.walk(p):
+ for f in fnames:
+ if f.endswith('.h'): # try to avoid C++ headers.
+ tu = idx.parse(os.path.join(dirp, f), args=args,
+ options=options)
+ failed = False
+ for diag in tu.diagnostics:
+ if diag.severity > c.Diagnostic.Warning:
+ failed = True
+ break
+ if failed:
+ continue
+ for cx in tu.cursor.walk_preorder():
+ if cx.kind == c.CursorKind.MACRO_DEFINITION:
+ if "IOC" in cx.spelling and cx.spelling.isupper():
+ ioctls.append(list(tok.spelling for tok in cx.get_tokens()))
+
+for ioctl in ioctls:
+ print(ioctl)
diff --git a/src/sys/ioctl/etc/process_ioctls.py b/src/sys/ioctl/etc/process_ioctls.py
new file mode 100644
index 00000000..815dae36
--- /dev/null
+++ b/src/sys/ioctl/etc/process_ioctls.py
@@ -0,0 +1,236 @@
+import sys
+import os
+import operator
+
+if len(sys.argv) != 2:
+ sys.stderr.write("Wrong number of argmuments. Wanted one, the name of the\
+ arch to use, got %s" % sys.argv)
+
+arch = sys.argv[1]
+
+f = open(os.path.join(arch, 'ioctl_list')) # found by find_ioctls.py
+m = open(os.path.join(arch, 'manually_found')) # found by the Mach V Eyeball
+i = open(os.path.join(arch, 'ignore_list')) # removed from the output of find_ioctls.py
+
+print("// Initially generated by process_ioctls.py")
+
+consts = {
+ "mips": { "NONE": 1, "READ": 2, "WRITE": 4, "SIZEBITS": 13, "DIRBITS": 3},
+ "powerpc": { "NONE": 1, "READ": 2, "WRITE": 4, "SIZEBITS": 13, "DIRBITS": 3},
+ "x86": { "NONE": 0, "READ": 2, "WRITE": 1, "SIZEBITS": 14, "DIRBITS": 2},
+ "x86_64": { "NONE": 0, "READ": 2, "WRITE": 1, "SIZEBITS": 14, "DIRBITS": 2},
+ "arm": { "NONE": 0, "READ": 2, "WRITE": 1, "SIZEBITS": 14, "DIRBITS": 2},
+ "aarch64": { "NONE": 0, "READ": 2, "WRITE": 1, "SIZEBITS": 14, "DIRBITS": 2},
+}
+
+ioc_consts = {
+ "SIOCPROTOPRIVATE": 0x89E0,
+ "SIOCDEVPRIVATE": 0x89F0,
+ "PCIIOC_BASE": (ord('P') << 24 | ord('C') << 16 | ord('I') << 8),
+ "FIONREAD": 0x541B,
+ "CZIOC": ord('M') << 8,
+ "TIOCOUTQ": 0x5411,
+ "TIOCM_CAR": 0x040,
+ "TIOCM_RNG": 0x080,
+}
+
+NONE = consts[arch]["NONE"]
+READ = consts[arch]["READ"]
+WRITE = consts[arch]["WRITE"]
+SIZEBITS = consts[arch]["SIZEBITS"]
+DIRBITS = consts[arch]["DIRBITS"]
+NRBITS = 8
+TYPEBITS = 8
+NRSHIFT = 0
+TYPESHIFT = NRSHIFT + NRBITS
+SIZESHIFT = TYPESHIFT + SIZEBITS
+DIRSHIFT = SIZESHIFT + DIRBITS
+NRMASK = (1 << NRBITS) - 1
+TYPEMASK = (1 << TYPEBITS) - 1
+SIZEMASK = (1 << SIZEBITS) - 1
+DIRMASK = (1 << DIRBITS) - 1
+
+def decode(val):
+ return (((val >> DIRSHIFT) & DIRMASK), ((val >> TYPESHIFT) & TYPEMASK),
+ ((val >> NRSHIFT) & NRMASK), ((val >> SIZESHIFT) & SIZEMASK))
+
+ioctls = [] # ones we want to actually process
+
+for ioctl in f:
+ ioctls.append(eval(ioctl))
+for ioctl in m:
+ ioctls.append(eval(ioctl))
+
+mp = { "_IO": "none", "_IOR": "read", "_IOW": "write", "_IOWR": "readwrite",
+ "DRM_IO": "none", "DRM_IOR": "read", "DRM_IOW": "write", "DRM_IOWR": "readwrite"}
+
+tys = {
+ "__uint8_t": "u8",
+ "__uint16": "u16",
+ "__uint32_t": "u32",
+ "__uint64_t": "u64",
+ "__int8_t": "i8",
+ "__int16": "i16",
+ "__int32_t": "i32",
+ "__int64_t": "i64",
+ "uint8_t": "u8",
+ "uint16": "u16",
+ "uint32_t": "u32",
+ "uint64_t": "u64",
+ "int8_t": "i8",
+ "int16": "i16",
+ "int32_t": "i32",
+ "int64_t": "i64",
+ "__u8": "u8",
+ "__u16": "u16",
+ "__u32": "u32",
+ "__u64": "u64",
+ "__s8": "i8",
+ "__s16": "i16",
+ "__s32": "i32",
+ "__s64": "i64",
+ "int": "::libc::c_int",
+ "long": "::libc::c_long",
+ "char": "::libc::c_char",
+ "size_t": "::libc::size_t",
+}
+
+utys = {
+ "int": "::libc::c_uint",
+ "long": "::libc::c_ulong",
+ "char": "::libc::c_uchar",
+}
+
+known_structs = ["input_id", "ff_effect", "ff_trigger", "ff_replay"]
+
+manually_bound = ["EVIOCGNAME", "EVIOCGPHYS", "EVIOCGUNIQ", "EVIOCGPROP",
+"EVIOCGMTSLOTS", "EVIOCGKEY", "EVIOCGLED", "EVIOCGSND", "EVIOCGSW",
+"EVIOCGBIT", "EVIOCGABS", "EVIOCSABS", "EVIOCGRAB", "EVIOCREVOKE",
+"EVIOCSCLOCKID"]
+
+bad_recovery = {}
+
+def translate(ty):
+ if len(ty) == 1:
+ return tys.get(ty[0], "FIXME1<%s>" % ty)
+ elif ty[-1] == '*':
+ return "*mut " + translate(ty[:-1])
+ elif len(ty) == 2:
+ if ty[0] == "struct":
+ return "/*struct*/ %s" % ty[1]
+ elif ty[0] == "unsigned":
+ return utys[ty[1]]
+ else:
+ return "FIXME2<%s>" % ty
+ elif ty[-1] == ']':
+ count = ty[-2]
+ return "[%s; %s]" % (translate(ty[:-3]), count)
+ else:
+ return "FIXME3<%s>" % ty
+
+def translate_type_code(ty):
+ if ty[0] == "'":
+ return "b" + ty
+ else:
+ return ty
+
+def bad(name, val):
+ if name in bad_recovery:
+ process(bad_recovery[name])
+ else:
+ pval = None
+ try:
+ pval = int(val, 0)
+ except:
+ pass
+ if pval is None:
+ print("ioctl!(bad %s with %s);" % (name.lower(), val))
+ else:
+ (dr, ty, nr, sz) = decode(pval)
+ if dr == NONE:
+ print("ioctl!(none %s with %s, %s);" % (name.lower(), ty, nr))
+ elif dr == READ:
+ print("ioctl!(read %s with %s, %s; [u8; %s]);" %
+ (name.lower(), ty, nr, sz));
+ elif dr == WRITE:
+ print("ioctl!(write %s with %s, %s; [u8; %s]);" %
+ (name.lower(), ty, nr, sz));
+ elif dr == READ|WRITE:
+ print("ioctl!(readwrite %s with %s, %s; [u8; %s]);" %
+ (name.lower(), ty, nr, sz));
+ else:
+ raise "This really shouldn't happen"
+
+def bad2(name, val1, val2, op):
+ if val1 in ioc_consts:
+ val1 = ioc_consts[val1]
+ else:
+ val1 = int(val1, 0)
+
+ if val2 in ioc_consts:
+ val2 = ioc_consts[val2]
+ else:
+ val2 = int(val2, 0)
+
+ bad(name, str(op(val1, val2)))
+
+def process(ioctl):
+ name = ioctl[0]
+ rhs = ioctl[1:-1] # remove '#' or trailing comment
+ cmd = rhs[0]
+ body = rhs[2:-1]
+
+ if name in manually_bound:
+ return
+ elif cmd == "_IO":
+ print("ioctl!(none %s with %s, %s);" % (name.lower(), translate_type_code(body[0]),
+ body[2]))
+ elif cmd == '_IOR' or cmd == '_IOW' or cmd == '_IOWR':
+ if body[3] == ',':
+ # this looks like _IOR(X, B, type...)
+ first = body[0]
+ second = body[2]
+ ty = body[4:]
+ ty = translate(ty)
+ if "FIXME" in ty or "/*struct*/" in ty and not ty[11:] in known_structs:
+ print("// ioctl!(%s %s with %s, %s; %s);" % (mp[cmd], name.lower(),
+ translate_type_code(first), second, ty))
+ else:
+ print("ioctl!(%s %s with %s, %s; %s);" % (mp[cmd], name.lower(),
+ translate_type_code(first), second, ty))
+ elif body[3] == '+':
+ first = body[0]
+ second = " ".join(body[2:5])
+ ty = body[6:]
+ ty = translate(ty)
+ if "FIXME" in ty or "/*struct*/" in ty and not ty[11:] in known_structs:
+ print("// ioctl!(%s %s with %s, %s; %s);" % (mp[cmd], name.lower(),
+ translate_type_code(first), second, ty))
+ else:
+ print("ioctl!(%s %s with %s, %s; %s);" % (mp[cmd], name.lower(),
+ translate_type_code(first), second, ty))
+ # We probably have _IOR(X, B + C, type...)
+ else:
+ raise "This really shouldn't happen"
+ elif cmd == "DRM_IO" or cmd == "DRM_IOR" or cmd == "DRM_IOW" or cmd == "DRM_IOWR":
+ # rewrite into "canonical" version.
+ process([name, cmd[3:], "(", "DRM_IOCTL_BASE", ","] + rhs[2:] + ["#"])
+ elif len(rhs) == 1: # single constant :(
+ bad(name.lower(), ioc_consts.get(rhs[0], rhs[0]))
+ elif len(rhs) == 3 and rhs[0] == "(": # single constant in parens
+ bad(name.lower(), ioc_consts.get(rhs[1], rhs[1]))
+ elif rhs[2] == "+": # we have the sum of two constants
+ try:
+ bad2(name.lower(), rhs[1], rhs[3], operator.add)
+ except:
+ bad(name.lower(), " ".join(rhs[1:-1]))
+ elif rhs[2] == "|": # we have an or of two constants (eugh)
+ try:
+ bad2(name.lower(), rhs[1], rhs[3], operator.or_)
+ except:
+ bad(name.lower(), " ".join(rhs[1:-1]))
+ else:
+ print("// TODO #define %s %s" % (name, " ".join(rhs)))
+
+for ioctl in ioctls:
+ process(ioctl)
diff --git a/src/sys/ioctl/etc/x86_64/ignore_list b/src/sys/ioctl/etc/x86_64/ignore_list
new file mode 100644
index 00000000..cb6d6a24
--- /dev/null
+++ b/src/sys/ioctl/etc/x86_64/ignore_list
@@ -0,0 +1,113 @@
+['ATMIOC_AREQUIPA', '0xc0', '/* Application requested IP over ATM, glob. u. */']
+['ATMIOC_BACKEND', '0x90', '/* ATM generic backend ioctls, u. per backend */']
+['ATMIOC_BACKEND_END', '0xaf', '/* 0xb0-0xbf: Reserved for future use */']
+['ATMIOC_CLIP', '0xe0', '/* Classical IP over ATM control, globally u. */']
+['ATMIOC_CLIP_END', '0xef', '#']
+['ATMIOC_ITF', '0x80', '/* Interface ioctls, globally unique */']
+['ATMIOC_ITF_END', '0x8f', '#']
+['ATMIOC_LANE', '0xd0', '/* LAN Emulation, globally unique */']
+['ATMIOC_MPOA', '0xd8', '/* MPOA, globally unique */']
+['ATMIOC_PHYCOM', '0x00', '/* PHY device common ioctls, globally unique */']
+['ATMIOC_PHYCOM_END', '0x0f', '#']
+['ATMIOC_PHYPRV', '0x30', '/* PHY dev private ioctls, unique per driver */']
+['ATMIOC_PHYPRV_END', '0x4f', '#']
+['ATMIOC_PHYTYP', '0x10', '/* PHY dev type ioctls, unique per PHY type */']
+['ATMIOC_PHYTYP_END', '0x2f', '#']
+['ATMIOC_SARCOM', '0x50', '/* SAR device common ioctls, globally unique */']
+['ATMIOC_SARCOM_END', '0x50', '#']
+['ATMIOC_SARPRV', '0x60', '/* SAR dev private ioctls, unique per driver */']
+['ATMIOC_SARPRV_END', '0x7f', '#']
+['ATMIOC_SPECIAL', '0xf0', '/* Special-purpose controls, globally unique */']
+['ATMIOC_SPECIAL_END', '0xff', '#']
+['BASE_VIDIOC_PRIVATE', '192', '/* 192-255 are private */']
+['BTRFS_IOCTL_DEV_REPLACE_CMD_CANCEL', '2', '#']
+['BTRFS_IOCTL_DEV_REPLACE_CMD_START', '0', '#']
+['BTRFS_IOCTL_DEV_REPLACE_CMD_STATUS', '1', '#']
+['BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_ALWAYS', '0', '#']
+['BTRFS_IOCTL_DEV_REPLACE_CONT_READING_FROM_SRCDEV_MODE_AVOID', '1', 'struct']
+['BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED', '2', 'struct']
+['BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED', '1', '#']
+['BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR', '0', '#']
+['BTRFS_IOCTL_DEV_REPLACE_STATE_CANCELED', '3', '#']
+['BTRFS_IOCTL_DEV_REPLACE_STATE_FINISHED', '2', '#']
+['BTRFS_IOCTL_DEV_REPLACE_STATE_NEVER_STARTED', '0', '#']
+['BTRFS_IOCTL_DEV_REPLACE_STATE_STARTED', '1', '#']
+['BTRFS_IOCTL_DEV_REPLACE_STATE_SUSPENDED', '4', 'struct']
+['BTRFS_IOCTL_MAGIC', '0x94', '#']
+['CCISS_IOC_MAGIC', "'B'", 'typedef']
+['CM_IOC_MAGIC', "'c'", '#']
+['CM_IOC_MAXNR', '255', '#']
+['COOKED_IOCTL', '1', '#']
+['CUSE_UNRESTRICTED_IOCTL', '(', '1', '<<', '0', ')', '/**\n * Release flags\n */']
+['C_CM_IOCTL', '0x02', '/* re-read CH_CTRL */']
+['C_CM_IOCTLM', '0x04', '/* RS-232 outputs change */']
+['C_CM_IOCTLW', '0x03', '/* re-read CH_CTRL, intr when done */']
+['C_IN_IOCTLW', '0x00020000', '/* I/O control w/ wait */']
+['DECNET_IOCTL_BASE', '0x89', '/* PROTOPRIVATE range */']
+['DM_IOCTL', '0xfd', '#']
+['DRM_IOCTL_BASE', "'d'", '#']
+['DTV_IOCTL_MAX_MSGS', '64', 'struct']
+['FSL_HV_IOCTL_TYPE', '0xAF', '/* Restart another partition */']
+['FUSE_IOCTL_MAX_IOV', '256', '/**\n * Poll flags\n *\n * FUSE_POLL_SCHEDULE_NOTIFY: request poll notify\n */']
+['GIGASET_IOCTL', '0x47', '/* enable/disable device control via character device (lock out ISDN subsys) */']
+['GNUTLS_E_CRYPTODEV_IOCTL_ERROR', '-', '211', '#']
+['IB_IOCTL_MAGIC', '0x1b', '#']
+['IOCB_FLAG_RESFD', '(', '1', '<<', '0', ')', '/* read() from /dev/aio returns these structures. */']
+['MGSL_MAGIC_IOC', "'m'", '#']
+['MMC_IOC_MAX_BYTES', '(', '512L', '*', '256', ')', '#']
+['MMTIMER_IOCTL_BASE', "'m'", '#']
+['MTRR_IOCTL_BASE', "'M'", '/* Warning: this structure has a different order from i386\n on x86-64. The 32bit emulation code takes care of that.\n But you need to use this for 64bit, otherwise your X server\n will break. */']
+['PH_IOC_MAGIC', "'p'", '#']
+['PP_IOCTL', "'p'", '/* Set mode for read/write (e.g. IEEE1284_MODE_EPP) */']
+['RFKILL_IOC_MAGIC', "'R'", '#']
+['RFKILL_IOC_NOINPUT', '1', '#']
+['UBI_CTRL_IOC_MAGIC', "'o'", '/* Attach an MTD device */']
+['UINPUT_IOCTL_BASE', "'U'", '#']
+['USBTMC_IOC_NR', '91', '#']
+['USB_SUBCLASS_AUDIOCONTROL', '0x01', '#']
+['VIOCD_MAJOR', '113', '#']
+['WATCHDOG_IOCTL_BASE', "'W'", 'struct']
+['_ASM_GENERIC_IOCTL_H', "/* ioctl command encoding: 32 bits total, command in lower 16 bits,\n * size of the parameter structure in the lower 14 bits of the\n * upper 16 bits.\n * Encoding the size of the parameter structure in the ioctl request\n * is useful for catching programs compiled with old versions\n * and to avoid overwriting user space outside the user buffer area.\n * The highest 2 bits are reserved for indicating the ``access mode''.\n * NOTE: This limits the max parameter size to 16kB -1 !\n */"]
+['_EVENT_HAVE_SYS_IOCTL_H', '1', '/* Define to 1 if you have the <sys/mman.h> header file. */']
+['_IOC', '(', 'dir', ',', 'type', ',', 'nr', ',', 'size', ')', '(', '(', '(', 'dir', ')', '<<', '_IOC_DIRSHIFT', ')', '|', '(', '(', 'type', ')', '<<', '_IOC_TYPESHIFT', ')', '|', '(', '(', 'nr', ')', '<<', '_IOC_NRSHIFT', ')', '|', '(', '(', 'size', ')', '<<', '_IOC_SIZESHIFT', ')', ')', '#']
+['_IOC_DIR', '(', 'nr', ')', '(', '(', '(', 'nr', ')', '>>', '_IOC_DIRSHIFT', ')', '&', '_IOC_DIRMASK', ')', '#']
+['_IOC_DIRBITS', '2', '#']
+['_IOC_DIRMASK', '(', '(', '1', '<<', '_IOC_DIRBITS', ')', '-', '1', ')', '#']
+['_IOC_DIRSHIFT', '(', '_IOC_SIZESHIFT', '+', '_IOC_SIZEBITS', ')', '/*\n * Direction bits, which any architecture can choose to override\n * before including this file.\n */']
+['_IOC_NONE', '0U', '#']
+['_IOC_NR', '(', 'nr', ')', '(', '(', '(', 'nr', ')', '>>', '_IOC_NRSHIFT', ')', '&', '_IOC_NRMASK', ')', '#']
+['_IOC_NRBITS', '8', '#']
+['_IOC_NRMASK', '(', '(', '1', '<<', '_IOC_NRBITS', ')', '-', '1', ')', '#']
+['_IOC_NRSHIFT', '0', '#']
+['_IOC_READ', '2U', '#']
+['_IOC_SIZE', '(', 'nr', ')', '(', '(', '(', 'nr', ')', '>>', '_IOC_SIZESHIFT', ')', '&', '_IOC_SIZEMASK', ')', '/* ...and for the drivers/sound files... */']
+['_IOC_SIZEBITS', '14', '#']
+['_IOC_SIZEMASK', '(', '(', '1', '<<', '_IOC_SIZEBITS', ')', '-', '1', ')', '#']
+['_IOC_SIZESHIFT', '(', '_IOC_TYPESHIFT', '+', '_IOC_TYPEBITS', ')', '#']
+['_IOC_TYPE', '(', 'nr', ')', '(', '(', '(', 'nr', ')', '>>', '_IOC_TYPESHIFT', ')', '&', '_IOC_TYPEMASK', ')', '#']
+['_IOC_TYPEBITS', '8', '/*\n * Let any architecture override either of the following before\n * including this file.\n */']
+['_IOC_TYPECHECK', '(', 't', ')', '(', 'sizeof', '(', 't', ')', ')', '/* used to create numbers */']
+['_IOC_TYPEMASK', '(', '(', '1', '<<', '_IOC_TYPEBITS', ')', '-', '1', ')', '#']
+['_IOC_TYPESHIFT', '(', '_IOC_NRSHIFT', '+', '_IOC_NRBITS', ')', '#']
+['_IOC_WRITE', '1U', '#']
+['_SIOC_DIR', '_IOC_DIR', '#']
+['_SIOC_NONE', '_IOC_NONE', '#']
+['_SIOC_READ', '_IOC_READ', '#']
+['_SIOC_SIZE', '_IOC_SIZE', '#']
+['_SIOC_WRITE', '_IOC_WRITE', '#']
+['UBI_IOC_MAGIC', "'o'", '/* Create an UBI volume */']
+['UBI_VOL_IOC_MAGIC', "'O'", "/* Start UBI volume update\n * Note: This actually takes a pointer (__s64*), but we can't change\n * that without breaking the ABI on 32bit systems\n */"]
+['IPMI_IOC_MAGIC', "'i'", '/* Messages sent to the interface are this format. */']
+['PACKET_IOCTL_MAGIC', '(', "'X'", ')', '#']
+['PCIIOC_BASE', '(', "'P'", '<<', '24', '|', "'C'", '<<', '16', '|', "'I'", '<<', '8', ')', '#']
+['SNAPSHOT_IOC_MAGIC', "'3'", '#']
+['SNAPSHOT_IOC_MAXNR', '20', '#']
+['SIOC_IN', 'IOC_IN', '#']
+['SIOC_INOUT', 'IOC_INOUT', '#']
+['SIOC_OUT', 'IOC_OUT', '#']
+['SIOC_VOID', 'IOC_VOID', '#']
+['SPI_IOC_MAGIC', "'k'", "/**\n * struct spi_ioc_transfer - describes a single SPI transfer\n * @tx_buf: Holds pointer to userspace buffer with transmit data, or null.\n *\tIf no data is provided, zeroes are shifted out.\n * @rx_buf: Holds pointer to userspace buffer for receive data, or null.\n * @len: Length of tx and rx buffers, in bytes.\n * @speed_hz: Temporary override of the device's bitrate.\n * @bits_per_word: Temporary override of the device's wordsize.\n * @delay_usecs: If nonzero, how long to delay after the last bit transfer\n *\tbefore optionally deselecting the device before the next transfer.\n * @cs_change: True to deselect device before starting the next transfer.\n *\n * This structure is mapped directly to the kernel spi_transfer structure;\n * the fields have the same meanings, except of course that the pointers\n * are in a different address space (and may be of different sizes in some\n * cases, such as 32-bit i386 userspace over a 64-bit x86_64 kernel).\n * Zero-initialize the structure, including currently unused fields, to\n * accommodate potential future updates.\n *\n * SPI_IOC_MESSAGE gives userspace the equivalent of kernel spi_sync().\n * Pass it an array of related transfers, they'll execute together.\n * Each transfer may be half duplex (either direction) or full duplex.\n *\n *\tstruct spi_ioc_transfer mesg[4];\n *\t...\n *\tstatus = ioctl(fd, SPI_IOC_MESSAGE(4), mesg);\n *\n * So for example one transfer might send a nine bit command (right aligned\n * in a 16-bit word), the next could read a block of 8-bit data before\n * terminating that command by temporarily deselecting the chip; the next\n * could send a different nine bit command (re-selecting the chip), and the\n * last transfer might write some register values.\n */"]
+['CZIOC', '(', "'M'", '<<', '8', ')', '#']
+['IOC_IN', '(', '_IOC_WRITE', '<<', '_IOC_DIRSHIFT', ')', '#']
+['IOC_INOUT', '(', '(', '_IOC_WRITE', '|', '_IOC_READ', ')', '<<', '_IOC_DIRSHIFT', ')', '#']
+['IOC_OUT', '(', '_IOC_READ', '<<', '_IOC_DIRSHIFT', ')', '#']
diff --git a/src/sys/ioctl/etc/x86_64/ioctl_list b/src/sys/ioctl/etc/x86_64/ioctl_list
new file mode 100644
index 00000000..9ce954b1
--- /dev/null
+++ b/src/sys/ioctl/etc/x86_64/ioctl_list
@@ -0,0 +1,1014 @@
+['APM_IOC_STANDBY', '_IO', '(', "'A'", ',', '1', ')', '#']
+['APM_IOC_SUSPEND', '_IO', '(', "'A'", ',', '2', ')', '#']
+['BTRFS_IOC_ADD_DEV', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '10', ',', 'struct', 'btrfs_ioctl_vol_args', ')', '#']
+['BTRFS_IOC_BALANCE', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '12', ',', 'struct', 'btrfs_ioctl_vol_args', ')', '#']
+['BTRFS_IOC_BALANCE_CTL', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '33', ',', 'int', ')', '#']
+['BTRFS_IOC_BALANCE_PROGRESS', '_IOR', '(', 'BTRFS_IOCTL_MAGIC', ',', '34', ',', 'struct', 'btrfs_ioctl_balance_args', ')', '#']
+['BTRFS_IOC_BALANCE_V2', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '32', ',', 'struct', 'btrfs_ioctl_balance_args', ')', '#']
+['BTRFS_IOC_CLONE', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '9', ',', 'int', ')', '#']
+['BTRFS_IOC_CLONE_RANGE', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '13', ',', 'struct', 'btrfs_ioctl_clone_range_args', ')', '#']
+['BTRFS_IOC_DEFAULT_SUBVOL', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '19', ',', '__u64', ')', '#']
+['BTRFS_IOC_DEFRAG', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '2', ',', 'struct', 'btrfs_ioctl_vol_args', ')', '#']
+['BTRFS_IOC_DEFRAG_RANGE', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '16', ',', 'struct', 'btrfs_ioctl_defrag_range_args', ')', '#']
+['BTRFS_IOC_DEVICES_READY', '_IOR', '(', 'BTRFS_IOCTL_MAGIC', ',', '39', ',', 'struct', 'btrfs_ioctl_vol_args', ')', '#']
+['BTRFS_IOC_DEV_INFO', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '30', ',', 'struct', 'btrfs_ioctl_dev_info_args', ')', '#']
+['BTRFS_IOC_DEV_REPLACE', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '53', ',', 'struct', 'btrfs_ioctl_dev_replace_args', ')', '#']
+['BTRFS_IOC_FILE_EXTENT_SAME', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '54', ',', 'struct', 'btrfs_ioctl_same_args', ')', '#']
+['BTRFS_IOC_FS_INFO', '_IOR', '(', 'BTRFS_IOCTL_MAGIC', ',', '31', ',', 'struct', 'btrfs_ioctl_fs_info_args', ')', '#']
+['BTRFS_IOC_GET_DEV_STATS', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '52', ',', 'struct', 'btrfs_ioctl_get_dev_stats', ')', '#']
+['BTRFS_IOC_GET_FEATURES', '_IOR', '(', 'BTRFS_IOCTL_MAGIC', ',', '57', ',', 'struct', 'btrfs_ioctl_feature_flags', ')', '#']
+['BTRFS_IOC_GET_FSLABEL', '_IOR', '(', 'BTRFS_IOCTL_MAGIC', ',', '49', ',', 'char', '[', 'BTRFS_LABEL_SIZE', ']', ')', '#']
+['BTRFS_IOC_GET_SUPPORTED_FEATURES', '_IOR', '(', 'BTRFS_IOCTL_MAGIC', ',', '57', ',', 'struct', 'btrfs_ioctl_feature_flags', '[', '3', ']', ')', '#']
+['BTRFS_IOC_INO_LOOKUP', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '18', ',', 'struct', 'btrfs_ioctl_ino_lookup_args', ')', '#']
+['BTRFS_IOC_INO_PATHS', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '35', ',', 'struct', 'btrfs_ioctl_ino_path_args', ')', '#']
+['BTRFS_IOC_LOGICAL_INO', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '36', ',', 'struct', 'btrfs_ioctl_ino_path_args', ')', '#']
+['BTRFS_IOC_QGROUP_ASSIGN', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '41', ',', 'struct', 'btrfs_ioctl_qgroup_assign_args', ')', '#']
+['BTRFS_IOC_QGROUP_CREATE', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '42', ',', 'struct', 'btrfs_ioctl_qgroup_create_args', ')', '#']
+['BTRFS_IOC_QGROUP_LIMIT', '_IOR', '(', 'BTRFS_IOCTL_MAGIC', ',', '43', ',', 'struct', 'btrfs_ioctl_qgroup_limit_args', ')', '#']
+['BTRFS_IOC_QUOTA_CTL', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '40', ',', 'struct', 'btrfs_ioctl_quota_ctl_args', ')', '#']
+['BTRFS_IOC_QUOTA_RESCAN', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '44', ',', 'struct', 'btrfs_ioctl_quota_rescan_args', ')', '#']
+['BTRFS_IOC_QUOTA_RESCAN_STATUS', '_IOR', '(', 'BTRFS_IOCTL_MAGIC', ',', '45', ',', 'struct', 'btrfs_ioctl_quota_rescan_args', ')', '#']
+['BTRFS_IOC_QUOTA_RESCAN_WAIT', '_IO', '(', 'BTRFS_IOCTL_MAGIC', ',', '46', ')', '#']
+['BTRFS_IOC_RESIZE', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '3', ',', 'struct', 'btrfs_ioctl_vol_args', ')', '#']
+['BTRFS_IOC_RM_DEV', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '11', ',', 'struct', 'btrfs_ioctl_vol_args', ')', '#']
+['BTRFS_IOC_SCAN_DEV', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '4', ',', 'struct', 'btrfs_ioctl_vol_args', ')', '/* trans start and trans end are dangerous, and only for\n * use by applications that know how to avoid the\n * resulting deadlocks\n */']
+['BTRFS_IOC_SCRUB', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '27', ',', 'struct', 'btrfs_ioctl_scrub_args', ')', '#']
+['BTRFS_IOC_SCRUB_CANCEL', '_IO', '(', 'BTRFS_IOCTL_MAGIC', ',', '28', ')', '#']
+['BTRFS_IOC_SCRUB_PROGRESS', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '29', ',', 'struct', 'btrfs_ioctl_scrub_args', ')', '#']
+['BTRFS_IOC_SEND', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '38', ',', 'struct', 'btrfs_ioctl_send_args', ')', '#']
+['BTRFS_IOC_SET_FEATURES', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '57', ',', 'struct', 'btrfs_ioctl_feature_flags', '[', '2', ']', ')', '#']
+['BTRFS_IOC_SET_FSLABEL', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '50', ',', 'char', '[', 'BTRFS_LABEL_SIZE', ']', ')', '#']
+['BTRFS_IOC_SET_RECEIVED_SUBVOL', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '37', ',', 'struct', 'btrfs_ioctl_received_subvol_args', ')', '#']
+['BTRFS_IOC_SNAP_CREATE', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '1', ',', 'struct', 'btrfs_ioctl_vol_args', ')', '#']
+['BTRFS_IOC_SNAP_CREATE_V2', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '23', ',', 'struct', 'btrfs_ioctl_vol_args_v2', ')', '#']
+['BTRFS_IOC_SNAP_DESTROY', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '15', ',', 'struct', 'btrfs_ioctl_vol_args', ')', '#']
+['BTRFS_IOC_SPACE_INFO', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '20', ',', 'struct', 'btrfs_ioctl_space_args', ')', '#']
+['BTRFS_IOC_START_SYNC', '_IOR', '(', 'BTRFS_IOCTL_MAGIC', ',', '24', ',', '__u64', ')', '#']
+['BTRFS_IOC_SUBVOL_CREATE', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '14', ',', 'struct', 'btrfs_ioctl_vol_args', ')', '#']
+['BTRFS_IOC_SUBVOL_CREATE_V2', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '24', ',', 'struct', 'btrfs_ioctl_vol_args_v2', ')', '#']
+['BTRFS_IOC_SUBVOL_GETFLAGS', '_IOR', '(', 'BTRFS_IOCTL_MAGIC', ',', '25', ',', '__u64', ')', '#']
+['BTRFS_IOC_SUBVOL_SETFLAGS', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '26', ',', '__u64', ')', '#']
+['BTRFS_IOC_SYNC', '_IO', '(', 'BTRFS_IOCTL_MAGIC', ',', '8', ')', '#']
+['BTRFS_IOC_TRANS_END', '_IO', '(', 'BTRFS_IOCTL_MAGIC', ',', '7', ')', '#']
+['BTRFS_IOC_TRANS_START', '_IO', '(', 'BTRFS_IOCTL_MAGIC', ',', '6', ')', '#']
+['BTRFS_IOC_TREE_SEARCH', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '17', ',', 'struct', 'btrfs_ioctl_search_args', ')', '#']
+['BTRFS_IOC_TREE_SEARCH_V2', '_IOWR', '(', 'BTRFS_IOCTL_MAGIC', ',', '17', ',', 'struct', 'btrfs_ioctl_search_args_v2', ')', '#']
+['BTRFS_IOC_WAIT_SYNC', '_IOW', '(', 'BTRFS_IOCTL_MAGIC', ',', '22', ',', '__u64', ')', '#']
+['CM_IOCARDOFF', '_IO', '(', 'CM_IOC_MAGIC', ',', '4', ')', '#']
+['CM_IOCGATR', '_IOWR', '(', 'CM_IOC_MAGIC', ',', '1', ',', 'atreq_t', '*', ')', '#']
+['CM_IOCGSTATUS', '_IOR', '(', 'CM_IOC_MAGIC', ',', '0', ',', 'unsigned', 'char', '*', ')', '#']
+['CM_IOCSPTS', '_IOW', '(', 'CM_IOC_MAGIC', ',', '2', ',', 'ptsreq_t', '*', ')', '#']
+['CM_IOCSRDR', '_IO', '(', 'CM_IOC_MAGIC', ',', '3', ')', '#']
+['CXL_IOCTL_GET_PROCESS_ELEMENT', '_IOR', '(', 'CXL_MAGIC', ',', '0x01', ',', '__u32', ')', '#']
+['CXL_IOCTL_START_WORK', '_IOW', '(', 'CXL_MAGIC', ',', '0x00', ',', 'struct', 'cxl_ioctl_start_work', ')', '#']
+['DRM_IOCTL_ADD_BUFS', 'DRM_IOWR', '(', '0x16', ',', 'struct', 'drm_buf_desc', ')', '#']
+['DRM_IOCTL_ADD_CTX', 'DRM_IOWR', '(', '0x20', ',', 'struct', 'drm_ctx', ')', '#']
+['DRM_IOCTL_ADD_DRAW', 'DRM_IOWR', '(', '0x27', ',', 'struct', 'drm_draw', ')', '#']
+['DRM_IOCTL_ADD_MAP', 'DRM_IOWR', '(', '0x15', ',', 'struct', 'drm_map', ')', '#']
+['DRM_IOCTL_AGP_ACQUIRE', 'DRM_IO', '(', '0x30', ')', '#']
+['DRM_IOCTL_AGP_ALLOC', 'DRM_IOWR', '(', '0x34', ',', 'struct', 'drm_agp_buffer', ')', '#']
+['DRM_IOCTL_AGP_BIND', 'DRM_IOW', '(', '0x36', ',', 'struct', 'drm_agp_binding', ')', '#']
+['DRM_IOCTL_AGP_ENABLE', 'DRM_IOW', '(', '0x32', ',', 'struct', 'drm_agp_mode', ')', '#']
+['DRM_IOCTL_AGP_FREE', 'DRM_IOW', '(', '0x35', ',', 'struct', 'drm_agp_buffer', ')', '#']
+['DRM_IOCTL_AGP_INFO', 'DRM_IOR', '(', '0x33', ',', 'struct', 'drm_agp_info', ')', '#']
+['DRM_IOCTL_AGP_RELEASE', 'DRM_IO', '(', '0x31', ')', '#']
+['DRM_IOCTL_AGP_UNBIND', 'DRM_IOW', '(', '0x37', ',', 'struct', 'drm_agp_binding', ')', '#']
+['DRM_IOCTL_AUTH_MAGIC', 'DRM_IOW', '(', '0x11', ',', 'struct', 'drm_auth', ')', '#']
+['DRM_IOCTL_BLOCK', 'DRM_IOWR', '(', '0x12', ',', 'struct', 'drm_block', ')', '#']
+['DRM_IOCTL_CONTROL', 'DRM_IOW', '(', '0x14', ',', 'struct', 'drm_control', ')', '#']
+['DRM_IOCTL_DMA', 'DRM_IOWR', '(', '0x29', ',', 'struct', 'drm_dma', ')', '#']
+['DRM_IOCTL_DROP_MASTER', 'DRM_IO', '(', '0x1f', ')', '#']
+['DRM_IOCTL_FINISH', 'DRM_IOW', '(', '0x2c', ',', 'struct', 'drm_lock', ')', '#']
+['DRM_IOCTL_FREE_BUFS', 'DRM_IOW', '(', '0x1a', ',', 'struct', 'drm_buf_free', ')', '#']
+['DRM_IOCTL_GEM_CLOSE', 'DRM_IOW', '(', '0x09', ',', 'struct', 'drm_gem_close', ')', '#']
+['DRM_IOCTL_GEM_FLINK', 'DRM_IOWR', '(', '0x0a', ',', 'struct', 'drm_gem_flink', ')', '#']
+['DRM_IOCTL_GEM_OPEN', 'DRM_IOWR', '(', '0x0b', ',', 'struct', 'drm_gem_open', ')', '#']
+['DRM_IOCTL_GET_CAP', 'DRM_IOWR', '(', '0x0c', ',', 'struct', 'drm_get_cap', ')', '#']
+['DRM_IOCTL_GET_CLIENT', 'DRM_IOWR', '(', '0x05', ',', 'struct', 'drm_client', ')', '#']
+['DRM_IOCTL_GET_CTX', 'DRM_IOWR', '(', '0x23', ',', 'struct', 'drm_ctx', ')', '#']
+['DRM_IOCTL_GET_MAGIC', 'DRM_IOR', '(', '0x02', ',', 'struct', 'drm_auth', ')', '#']
+['DRM_IOCTL_GET_MAP', 'DRM_IOWR', '(', '0x04', ',', 'struct', 'drm_map', ')', '#']
+['DRM_IOCTL_GET_SAREA_CTX', 'DRM_IOWR', '(', '0x1d', ',', 'struct', 'drm_ctx_priv_map', ')', '#']
+['DRM_IOCTL_GET_STATS', 'DRM_IOR', '(', '0x06', ',', 'struct', 'drm_stats', ')', '#']
+['DRM_IOCTL_GET_UNIQUE', 'DRM_IOWR', '(', '0x01', ',', 'struct', 'drm_unique', ')', '#']
+['DRM_IOCTL_INFO_BUFS', 'DRM_IOWR', '(', '0x18', ',', 'struct', 'drm_buf_info', ')', '#']
+['DRM_IOCTL_IRQ_BUSID', 'DRM_IOWR', '(', '0x03', ',', 'struct', 'drm_irq_busid', ')', '#']
+['DRM_IOCTL_LOCK', 'DRM_IOW', '(', '0x2a', ',', 'struct', 'drm_lock', ')', '#']
+['DRM_IOCTL_MAP_BUFS', 'DRM_IOWR', '(', '0x19', ',', 'struct', 'drm_buf_map', ')', '#']
+['DRM_IOCTL_MARK_BUFS', 'DRM_IOW', '(', '0x17', ',', 'struct', 'drm_buf_desc', ')', '#']
+['DRM_IOCTL_MODESET_CTL', 'DRM_IOW', '(', '0x08', ',', 'struct', 'drm_modeset_ctl', ')', '#']
+['DRM_IOCTL_MODE_ADDFB', 'DRM_IOWR', '(', '0xAE', ',', 'struct', 'drm_mode_fb_cmd', ')', '#']
+['DRM_IOCTL_MODE_ADDFB2', 'DRM_IOWR', '(', '0xB8', ',', 'struct', 'drm_mode_fb_cmd2', ')', '#']
+['DRM_IOCTL_MODE_ATTACHMODE', 'DRM_IOWR', '(', '0xA8', ',', 'struct', 'drm_mode_mode_cmd', ')', '#']
+['DRM_IOCTL_MODE_CREATE_DUMB', 'DRM_IOWR', '(', '0xB2', ',', 'struct', 'drm_mode_create_dumb', ')', '#']
+['DRM_IOCTL_MODE_CURSOR', 'DRM_IOWR', '(', '0xA3', ',', 'struct', 'drm_mode_cursor', ')', '#']
+['DRM_IOCTL_MODE_CURSOR2', 'DRM_IOWR', '(', '0xBB', ',', 'struct', 'drm_mode_cursor2', ')', '/**\n * Device specific ioctls should only be in their respective headers\n * The device specific ioctl range is from 0x40 to 0x99.\n * Generic IOCTLS restart at 0xA0.\n *\n * \\sa drmCommandNone(), drmCommandRead(), drmCommandWrite(), and\n * drmCommandReadWrite().\n */']
+['DRM_IOCTL_MODE_DESTROY_DUMB', 'DRM_IOWR', '(', '0xB4', ',', 'struct', 'drm_mode_destroy_dumb', ')', '#']
+['DRM_IOCTL_MODE_DETACHMODE', 'DRM_IOWR', '(', '0xA9', ',', 'struct', 'drm_mode_mode_cmd', ')', '#']
+['DRM_IOCTL_MODE_DIRTYFB', 'DRM_IOWR', '(', '0xB1', ',', 'struct', 'drm_mode_fb_dirty_cmd', ')', '#']
+['DRM_IOCTL_MODE_GETCONNECTOR', 'DRM_IOWR', '(', '0xA7', ',', 'struct', 'drm_mode_get_connector', ')', '#']
+['DRM_IOCTL_MODE_GETCRTC', 'DRM_IOWR', '(', '0xA1', ',', 'struct', 'drm_mode_crtc', ')', '#']
+['DRM_IOCTL_MODE_GETENCODER', 'DRM_IOWR', '(', '0xA6', ',', 'struct', 'drm_mode_get_encoder', ')', '#']
+['DRM_IOCTL_MODE_GETFB', 'DRM_IOWR', '(', '0xAD', ',', 'struct', 'drm_mode_fb_cmd', ')', '#']
+['DRM_IOCTL_MODE_GETGAMMA', 'DRM_IOWR', '(', '0xA4', ',', 'struct', 'drm_mode_crtc_lut', ')', '#']
+['DRM_IOCTL_MODE_GETPLANE', 'DRM_IOWR', '(', '0xB6', ',', 'struct', 'drm_mode_get_plane', ')', '#']
+['DRM_IOCTL_MODE_GETPLANERESOURCES', 'DRM_IOWR', '(', '0xB5', ',', 'struct', 'drm_mode_get_plane_res', ')', '#']
+['DRM_IOCTL_MODE_GETPROPBLOB', 'DRM_IOWR', '(', '0xAC', ',', 'struct', 'drm_mode_get_blob', ')', '#']
+['DRM_IOCTL_MODE_GETPROPERTY', 'DRM_IOWR', '(', '0xAA', ',', 'struct', 'drm_mode_get_property', ')', '#']
+['DRM_IOCTL_MODE_GETRESOURCES', 'DRM_IOWR', '(', '0xA0', ',', 'struct', 'drm_mode_card_res', ')', '#']
+['DRM_IOCTL_MODE_MAP_DUMB', 'DRM_IOWR', '(', '0xB3', ',', 'struct', 'drm_mode_map_dumb', ')', '#']
+['DRM_IOCTL_MODE_OBJ_GETPROPERTIES', 'DRM_IOWR', '(', '0xB9', ',', 'struct', 'drm_mode_obj_get_properties', ')', '#']
+['DRM_IOCTL_MODE_OBJ_SETPROPERTY', 'DRM_IOWR', '(', '0xBA', ',', 'struct', 'drm_mode_obj_set_property', ')', '#']
+['DRM_IOCTL_MODE_PAGE_FLIP', 'DRM_IOWR', '(', '0xB0', ',', 'struct', 'drm_mode_crtc_page_flip', ')', '#']
+['DRM_IOCTL_MODE_RMFB', 'DRM_IOWR', '(', '0xAF', ',', 'unsigned', 'int', ')', '#']
+['DRM_IOCTL_MODE_SETCRTC', 'DRM_IOWR', '(', '0xA2', ',', 'struct', 'drm_mode_crtc', ')', '#']
+['DRM_IOCTL_MODE_SETGAMMA', 'DRM_IOWR', '(', '0xA5', ',', 'struct', 'drm_mode_crtc_lut', ')', '#']
+['DRM_IOCTL_MODE_SETPLANE', 'DRM_IOWR', '(', '0xB7', ',', 'struct', 'drm_mode_set_plane', ')', '#']
+['DRM_IOCTL_MODE_SETPROPERTY', 'DRM_IOWR', '(', '0xAB', ',', 'struct', 'drm_mode_connector_set_property', ')', '#']
+['DRM_IOCTL_MOD_CTX', 'DRM_IOW', '(', '0x22', ',', 'struct', 'drm_ctx', ')', '#']
+['DRM_IOCTL_NEW_CTX', 'DRM_IOW', '(', '0x25', ',', 'struct', 'drm_ctx', ')', '#']
+['DRM_IOCTL_PRIME_FD_TO_HANDLE', 'DRM_IOWR', '(', '0x2e', ',', 'struct', 'drm_prime_handle', ')', '#']
+['DRM_IOCTL_PRIME_HANDLE_TO_FD', 'DRM_IOWR', '(', '0x2d', ',', 'struct', 'drm_prime_handle', ')', '#']
+['DRM_IOCTL_RADEON_ALLOC', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_ALLOC', ',', 'drm_radeon_mem_alloc_t', ')', '#']
+['DRM_IOCTL_RADEON_CLEAR', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_CLEAR', ',', 'drm_radeon_clear_t', ')', '#']
+['DRM_IOCTL_RADEON_CMDBUF', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_CMDBUF', ',', 'drm_radeon_cmd_buffer_t', ')', '#']
+['DRM_IOCTL_RADEON_CP_IDLE', 'DRM_IO', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_CP_IDLE', ')', '#']
+['DRM_IOCTL_RADEON_CP_INIT', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_CP_INIT', ',', 'drm_radeon_init_t', ')', '#']
+['DRM_IOCTL_RADEON_CP_RESET', 'DRM_IO', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_CP_RESET', ')', '#']
+['DRM_IOCTL_RADEON_CP_RESUME', 'DRM_IO', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_CP_RESUME', ')', '#']
+['DRM_IOCTL_RADEON_CP_START', 'DRM_IO', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_CP_START', ')', '#']
+['DRM_IOCTL_RADEON_CP_STOP', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_CP_STOP', ',', 'drm_radeon_cp_stop_t', ')', '#']
+['DRM_IOCTL_RADEON_CS', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_CS', ',', 'struct', 'drm_radeon_cs', ')', '#']
+['DRM_IOCTL_RADEON_FLIP', 'DRM_IO', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_FLIP', ')', '#']
+['DRM_IOCTL_RADEON_FREE', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_FREE', ',', 'drm_radeon_mem_free_t', ')', '#']
+['DRM_IOCTL_RADEON_FULLSCREEN', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_FULLSCREEN', ',', 'drm_radeon_fullscreen_t', ')', '#']
+['DRM_IOCTL_RADEON_GEM_BUSY', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_BUSY', ',', 'struct', 'drm_radeon_gem_busy', ')', '#']
+['DRM_IOCTL_RADEON_GEM_CREATE', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_CREATE', ',', 'struct', 'drm_radeon_gem_create', ')', '#']
+['DRM_IOCTL_RADEON_GEM_GET_TILING', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_GET_TILING', ',', 'struct', 'drm_radeon_gem_get_tiling', ')', '#']
+['DRM_IOCTL_RADEON_GEM_INFO', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_INFO', ',', 'struct', 'drm_radeon_gem_info', ')', '#']
+['DRM_IOCTL_RADEON_GEM_MMAP', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_MMAP', ',', 'struct', 'drm_radeon_gem_mmap', ')', '#']
+['DRM_IOCTL_RADEON_GEM_OP', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_OP', ',', 'struct', 'drm_radeon_gem_op', ')', 'typedef']
+['DRM_IOCTL_RADEON_GEM_PREAD', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_PREAD', ',', 'struct', 'drm_radeon_gem_pread', ')', '#']
+['DRM_IOCTL_RADEON_GEM_PWRITE', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_PWRITE', ',', 'struct', 'drm_radeon_gem_pwrite', ')', '#']
+['DRM_IOCTL_RADEON_GEM_SET_DOMAIN', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_SET_DOMAIN', ',', 'struct', 'drm_radeon_gem_set_domain', ')', '#']
+['DRM_IOCTL_RADEON_GEM_SET_TILING', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_SET_TILING', ',', 'struct', 'drm_radeon_gem_set_tiling', ')', '#']
+['DRM_IOCTL_RADEON_GEM_VA', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_VA', ',', 'struct', 'drm_radeon_gem_va', ')', '#']
+['DRM_IOCTL_RADEON_GEM_WAIT_IDLE', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GEM_WAIT_IDLE', ',', 'struct', 'drm_radeon_gem_wait_idle', ')', '#']
+['DRM_IOCTL_RADEON_GETPARAM', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_GETPARAM', ',', 'drm_radeon_getparam_t', ')', '#']
+['DRM_IOCTL_RADEON_INDICES', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_INDICES', ',', 'drm_radeon_indices_t', ')', '#']
+['DRM_IOCTL_RADEON_INDIRECT', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_INDIRECT', ',', 'drm_radeon_indirect_t', ')', '#']
+['DRM_IOCTL_RADEON_INFO', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_INFO', ',', 'struct', 'drm_radeon_info', ')', '#']
+['DRM_IOCTL_RADEON_INIT_HEAP', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_INIT_HEAP', ',', 'drm_radeon_mem_init_heap_t', ')', '#']
+['DRM_IOCTL_RADEON_IRQ_EMIT', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_IRQ_EMIT', ',', 'drm_radeon_irq_emit_t', ')', '#']
+['DRM_IOCTL_RADEON_IRQ_WAIT', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_IRQ_WAIT', ',', 'drm_radeon_irq_wait_t', ')', '#']
+['DRM_IOCTL_RADEON_RESET', 'DRM_IO', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_RESET', ')', '#']
+['DRM_IOCTL_RADEON_SETPARAM', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_SETPARAM', ',', 'drm_radeon_setparam_t', ')', '#']
+['DRM_IOCTL_RADEON_STIPPLE', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_STIPPLE', ',', 'drm_radeon_stipple_t', ')', '#']
+['DRM_IOCTL_RADEON_SURF_ALLOC', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_SURF_ALLOC', ',', 'drm_radeon_surface_alloc_t', ')', '#']
+['DRM_IOCTL_RADEON_SURF_FREE', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_SURF_FREE', ',', 'drm_radeon_surface_free_t', ')', '/* KMS */']
+['DRM_IOCTL_RADEON_SWAP', 'DRM_IO', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_SWAP', ')', '#']
+['DRM_IOCTL_RADEON_TEXTURE', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_TEXTURE', ',', 'drm_radeon_texture_t', ')', '#']
+['DRM_IOCTL_RADEON_VERTEX', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_VERTEX', ',', 'drm_radeon_vertex_t', ')', '#']
+['DRM_IOCTL_RADEON_VERTEX2', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_RADEON_VERTEX2', ',', 'drm_radeon_vertex2_t', ')', '#']
+['DRM_IOCTL_RES_CTX', 'DRM_IOWR', '(', '0x26', ',', 'struct', 'drm_ctx_res', ')', '#']
+['DRM_IOCTL_RM_CTX', 'DRM_IOWR', '(', '0x21', ',', 'struct', 'drm_ctx', ')', '#']
+['DRM_IOCTL_RM_DRAW', 'DRM_IOWR', '(', '0x28', ',', 'struct', 'drm_draw', ')', '#']
+['DRM_IOCTL_RM_MAP', 'DRM_IOW', '(', '0x1b', ',', 'struct', 'drm_map', ')', '#']
+['DRM_IOCTL_SET_CLIENT_CAP', 'DRM_IOW', '(', '0x0d', ',', 'struct', 'drm_set_client_cap', ')', '#']
+['DRM_IOCTL_SET_MASTER', 'DRM_IO', '(', '0x1e', ')', '#']
+['DRM_IOCTL_SET_SAREA_CTX', 'DRM_IOW', '(', '0x1c', ',', 'struct', 'drm_ctx_priv_map', ')', '#']
+['DRM_IOCTL_SET_UNIQUE', 'DRM_IOW', '(', '0x10', ',', 'struct', 'drm_unique', ')', '#']
+['DRM_IOCTL_SET_VERSION', 'DRM_IOWR', '(', '0x07', ',', 'struct', 'drm_set_version', ')', '#']
+['DRM_IOCTL_SG_ALLOC', 'DRM_IOWR', '(', '0x38', ',', 'struct', 'drm_scatter_gather', ')', '#']
+['DRM_IOCTL_SG_FREE', 'DRM_IOW', '(', '0x39', ',', 'struct', 'drm_scatter_gather', ')', '#']
+['DRM_IOCTL_SIS_AGP_ALLOC', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_SIS_AGP_ALLOC', ',', 'drm_sis_mem_t', ')', '#']
+['DRM_IOCTL_SIS_AGP_FREE', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_SIS_AGP_FREE', ',', 'drm_sis_mem_t', ')', '#']
+['DRM_IOCTL_SIS_AGP_INIT', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_SIS_AGP_INIT', ',', 'drm_sis_agp_t', ')', '#']
+['DRM_IOCTL_SIS_FB_ALLOC', 'DRM_IOWR', '(', 'DRM_COMMAND_BASE', '+', 'DRM_SIS_FB_ALLOC', ',', 'drm_sis_mem_t', ')', '#']
+['DRM_IOCTL_SIS_FB_FREE', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_SIS_FB_FREE', ',', 'drm_sis_mem_t', ')', '#']
+['DRM_IOCTL_SIS_FB_INIT', 'DRM_IOW', '(', 'DRM_COMMAND_BASE', '+', 'DRM_SIS_FB_INIT', ',', 'drm_sis_fb_t', ')', '/*\n#define DRM_IOCTL_SIS_FLIP\t\tDRM_IOW( 0x48, drm_sis_flip_t)\n#define DRM_IOCTL_SIS_FLIP_INIT\t\tDRM_IO( 0x49)\n#define DRM_IOCTL_SIS_FLIP_FINAL\tDRM_IO( 0x50)\n*/']
+['DRM_IOCTL_SWITCH_CTX', 'DRM_IOW', '(', '0x24', ',', 'struct', 'drm_ctx', ')', '#']
+['DRM_IOCTL_UNBLOCK', 'DRM_IOWR', '(', '0x13', ',', 'struct', 'drm_block', ')', '#']
+['DRM_IOCTL_UNLOCK', 'DRM_IOW', '(', '0x2b', ',', 'struct', 'drm_lock', ')', '#']
+['DRM_IOCTL_UPDATE_DRAW', 'DRM_IOW', '(', '0x3f', ',', 'struct', 'drm_update_draw', ')', '#']
+['DRM_IOCTL_VERSION', 'DRM_IOWR', '(', '0x00', ',', 'struct', 'drm_version', ')', '#']
+['DRM_IOCTL_WAIT_VBLANK', 'DRM_IOWR', '(', '0x3a', ',', 'union', 'drm_wait_vblank', ')', '#']
+['EVIOCGABS', '(', 'abs', ')', '_IOR', '(', "'E'", ',', '0x40', '+', '(', 'abs', ')', ',', 'struct', 'input_absinfo', ')', '/* get abs value/limits */']
+['EVIOCGBIT', '(', 'ev', ',', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'E'", ',', '0x20', '+', '(', 'ev', ')', ',', 'len', ')', '/* get event bits */']
+['EVIOCGEFFECTS', '_IOR', '(', "'E'", ',', '0x84', ',', 'int', ')', '/* Report number of effects playable at the same time */']
+['EVIOCGID', '_IOR', '(', "'E'", ',', '0x02', ',', 'struct', 'input_id', ')', '/* get device ID */']
+['EVIOCGKEY', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'E'", ',', '0x18', ',', 'len', ')', '/* get global key state */']
+['EVIOCGKEYCODE', '_IOR', '(', "'E'", ',', '0x04', ',', 'unsigned', 'int', '[', '2', ']', ')', '/* get keycode */']
+['EVIOCGKEYCODE_V2', '_IOR', '(', "'E'", ',', '0x04', ',', 'struct', 'input_keymap_entry', ')', '#']
+['EVIOCGLED', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'E'", ',', '0x19', ',', 'len', ')', '/* get all LEDs */']
+['EVIOCGMTSLOTS', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'E'", ',', '0x0a', ',', 'len', ')', '#']
+['EVIOCGNAME', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'E'", ',', '0x06', ',', 'len', ')', '/* get device name */']
+['EVIOCGPHYS', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'E'", ',', '0x07', ',', 'len', ')', '/* get physical location */']
+['EVIOCGPROP', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'E'", ',', '0x09', ',', 'len', ')', '/* get device properties */']
+['EVIOCGRAB', '_IOW', '(', "'E'", ',', '0x90', ',', 'int', ')', '/* Grab/Release device */']
+['EVIOCGREP', '_IOR', '(', "'E'", ',', '0x03', ',', 'unsigned', 'int', '[', '2', ']', ')', '/* get repeat settings */']
+['EVIOCGSND', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'E'", ',', '0x1a', ',', 'len', ')', '/* get all sounds status */']
+['EVIOCGSW', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'E'", ',', '0x1b', ',', 'len', ')', '/* get all switch states */']
+['EVIOCGUNIQ', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'E'", ',', '0x08', ',', 'len', ')', '/* get unique identifier */']
+['EVIOCGVERSION', '_IOR', '(', "'E'", ',', '0x01', ',', 'int', ')', '/* get driver version */']
+['EVIOCREVOKE', '_IOW', '(', "'E'", ',', '0x91', ',', 'int', ')', '/* Revoke device access */']
+['EVIOCRMFF', '_IOW', '(', "'E'", ',', '0x81', ',', 'int', ')', '/* Erase a force effect */']
+['EVIOCSABS', '(', 'abs', ')', '_IOW', '(', "'E'", ',', '0xc0', '+', '(', 'abs', ')', ',', 'struct', 'input_absinfo', ')', '/* set abs value/limits */']
+['EVIOCSCLOCKID', '_IOW', '(', "'E'", ',', '0xa0', ',', 'int', ')', '/* Set clockid to be used for timestamps */']
+['EVIOCSFF', '_IOC', '(', '_IOC_WRITE', ',', "'E'", ',', '0x80', ',', 'sizeof', '(', 'struct', 'ff_effect', ')', ')', '/* send a force effect to a force feedback device */']
+['EVIOCSKEYCODE', '_IOW', '(', "'E'", ',', '0x04', ',', 'unsigned', 'int', '[', '2', ']', ')', '/* set keycode */']
+['EVIOCSKEYCODE_V2', '_IOW', '(', "'E'", ',', '0x04', ',', 'struct', 'input_keymap_entry', ')', '#']
+['EVIOCSREP', '_IOW', '(', "'E'", ',', '0x03', ',', 'unsigned', 'int', '[', '2', ']', ')', '/* set repeat settings */']
+['EXT2_IOC_GETFLAGS', '_IOR', '(', "'f'", ',', '1', ',', 'long', ')', '#']
+['EXT2_IOC_GETVERSION', '_IOR', '(', "'v'", ',', '1', ',', 'long', ')', '#']
+['EXT2_IOC_GETVERSION_NEW', '_IOR', '(', "'f'", ',', '3', ',', 'long', ')', '#']
+['EXT2_IOC_GROUP_ADD', '_IOW', '(', "'f'", ',', '8', ',', 'struct', 'ext2_new_group_input', ')', '#']
+['EXT2_IOC_GROUP_EXTEND', '_IOW', '(', "'f'", ',', '7', ',', 'unsigned', 'long', ')', '#']
+['EXT2_IOC_SETFLAGS', '_IOW', '(', "'f'", ',', '2', ',', 'long', ')', '#']
+['EXT2_IOC_SETVERSION', '_IOW', '(', "'v'", ',', '2', ',', 'long', ')', '#']
+['EXT2_IOC_SETVERSION_NEW', '_IOW', '(', "'f'", ',', '4', ',', 'long', ')', '#']
+['EXT4_IOC_GROUP_ADD', '_IOW', '(', "'f'", ',', '8', ',', 'struct', 'ext4_new_group_input', ')', '#']
+['EXT4_IOC_RESIZE_FS', '_IOW', '(', "'f'", ',', '16', ',', '__u64', ')', '/*\n * Structure of an inode on the disk\n */']
+['FAT_IOCTL_GET_ATTRIBUTES', '_IOR', '(', "'r'", ',', '0x10', ',', '__u32', ')', '#']
+['FAT_IOCTL_GET_VOLUME_ID', '_IOR', '(', "'r'", ',', '0x13', ',', '__u32', ')', 'struct']
+['FAT_IOCTL_SET_ATTRIBUTES', '_IOW', '(', "'r'", ',', '0x11', ',', '__u32', ')', '/*Android kernel has used 0x12, so we use 0x13*/']
+['FSL_HV_IOCTL_DOORBELL', '_IOWR', '(', 'FSL_HV_IOCTL_TYPE', ',', '6', ',', 'struct', 'fsl_hv_ioctl_doorbell', ')', "/* Get a property from another guest's device tree */"]
+['FSL_HV_IOCTL_GETPROP', '_IOWR', '(', 'FSL_HV_IOCTL_TYPE', ',', '7', ',', 'struct', 'fsl_hv_ioctl_prop', ')', "/* Set a property in another guest's device tree */"]
+['FSL_HV_IOCTL_MEMCPY', '_IOWR', '(', 'FSL_HV_IOCTL_TYPE', ',', '5', ',', 'struct', 'fsl_hv_ioctl_memcpy', ')', '/* Ring a doorbell */']
+['FSL_HV_IOCTL_PARTITION_GET_STATUS', '_IOWR', '(', 'FSL_HV_IOCTL_TYPE', ',', '2', ',', 'struct', 'fsl_hv_ioctl_status', ')', '/* Boot another partition */']
+['FSL_HV_IOCTL_PARTITION_RESTART', '_IOWR', '(', 'FSL_HV_IOCTL_TYPE', ',', '1', ',', 'struct', 'fsl_hv_ioctl_restart', ')', "/* Get a partition's status */"]
+['FSL_HV_IOCTL_PARTITION_START', '_IOWR', '(', 'FSL_HV_IOCTL_TYPE', ',', '3', ',', 'struct', 'fsl_hv_ioctl_start', ')', '/* Stop this or another partition */']
+['FSL_HV_IOCTL_PARTITION_STOP', '_IOWR', '(', 'FSL_HV_IOCTL_TYPE', ',', '4', ',', 'struct', 'fsl_hv_ioctl_stop', ')', '/* Copy data from one partition to another */']
+['FSL_HV_IOCTL_SETPROP', '_IOWR', '(', 'FSL_HV_IOCTL_TYPE', ',', '8', ',', 'struct', 'fsl_hv_ioctl_prop', ')', '#']
+['FS_IOC32_GETFLAGS', '_IOR', '(', "'f'", ',', '1', ',', 'int', ')', '#']
+['FS_IOC32_GETVERSION', '_IOR', '(', "'v'", ',', '1', ',', 'int', ')', '#']
+['FS_IOC32_SETFLAGS', '_IOW', '(', "'f'", ',', '2', ',', 'int', ')', '#']
+['FS_IOC32_SETVERSION', '_IOW', '(', "'v'", ',', '2', ',', 'int', ')', '/*\n * Inode flags (FS_IOC_GETFLAGS / FS_IOC_SETFLAGS)\n */']
+['FS_IOC_FIEMAP', '_IOWR', '(', "'f'", ',', '11', ',', 'struct', 'fiemap', ')', '#']
+['FS_IOC_GETFLAGS', '_IOR', '(', "'f'", ',', '1', ',', 'long', ')', '#']
+['FS_IOC_GETVERSION', '_IOR', '(', "'v'", ',', '1', ',', 'long', ')', '#']
+['FS_IOC_SETFLAGS', '_IOW', '(', "'f'", ',', '2', ',', 'long', ')', '#']
+['FS_IOC_SETVERSION', '_IOW', '(', "'v'", ',', '2', ',', 'long', ')', '#']
+['FW_CDEV_IOC_ADD_DESCRIPTOR', '_IOWR', '(', "'#'", ',', '0x06', ',', 'struct', 'fw_cdev_add_descriptor', ')', '#']
+['FW_CDEV_IOC_ALLOCATE', '_IOWR', '(', "'#'", ',', '0x02', ',', 'struct', 'fw_cdev_allocate', ')', '#']
+['FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE', '_IOWR', '(', "'#'", ',', '0x0d', ',', 'struct', 'fw_cdev_allocate_iso_resource', ')', '#']
+['FW_CDEV_IOC_ALLOCATE_ISO_RESOURCE_ONCE', '_IOW', '(', "'#'", ',', '0x0f', ',', 'struct', 'fw_cdev_allocate_iso_resource', ')', '#']
+['FW_CDEV_IOC_CREATE_ISO_CONTEXT', '_IOWR', '(', "'#'", ',', '0x08', ',', 'struct', 'fw_cdev_create_iso_context', ')', '#']
+['FW_CDEV_IOC_DEALLOCATE', '_IOW', '(', "'#'", ',', '0x03', ',', 'struct', 'fw_cdev_deallocate', ')', '#']
+['FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE', '_IOW', '(', "'#'", ',', '0x0e', ',', 'struct', 'fw_cdev_deallocate', ')', '#']
+['FW_CDEV_IOC_DEALLOCATE_ISO_RESOURCE_ONCE', '_IOW', '(', "'#'", ',', '0x10', ',', 'struct', 'fw_cdev_allocate_iso_resource', ')', '#']
+['FW_CDEV_IOC_FLUSH_ISO', '_IOW', '(', "'#'", ',', '0x18', ',', 'struct', 'fw_cdev_flush_iso', ')', '/*\n * ABI version history\n * 1 (2.6.22) - initial version\n * (2.6.24) - added %FW_CDEV_IOC_GET_CYCLE_TIMER\n * 2 (2.6.30) - changed &fw_cdev_event_iso_interrupt.header if\n * &fw_cdev_create_iso_context.header_size is 8 or more\n * - added %FW_CDEV_IOC_*_ISO_RESOURCE*,\n * %FW_CDEV_IOC_GET_SPEED, %FW_CDEV_IOC_SEND_BROADCAST_REQUEST,\n * %FW_CDEV_IOC_SEND_STREAM_PACKET\n * (2.6.32) - added time stamp to xmit &fw_cdev_event_iso_interrupt\n * (2.6.33) - IR has always packet-per-buffer semantics now, not one of\n * dual-buffer or packet-per-buffer depending on hardware\n * - shared use and auto-response for FCP registers\n * 3 (2.6.34) - made &fw_cdev_get_cycle_timer reliable\n * - added %FW_CDEV_IOC_GET_CYCLE_TIMER2\n * 4 (2.6.36) - added %FW_CDEV_EVENT_REQUEST2, %FW_CDEV_EVENT_PHY_PACKET_*,\n * and &fw_cdev_allocate.region_end\n * - implemented &fw_cdev_event_bus_reset.bm_node_id\n * - added %FW_CDEV_IOC_SEND_PHY_PACKET, _RECEIVE_PHY_PACKETS\n * - added %FW_CDEV_EVENT_ISO_INTERRUPT_MULTICHANNEL,\n * %FW_CDEV_ISO_CONTEXT_RECEIVE_MULTICHANNEL, and\n * %FW_CDEV_IOC_SET_ISO_CHANNELS\n * 5 (3.4) - send %FW_CDEV_EVENT_ISO_INTERRUPT events when needed to\n * avoid dropping data\n * - added %FW_CDEV_IOC_FLUSH_ISO\n */']
+['FW_CDEV_IOC_GET_CYCLE_TIMER', '_IOR', '(', "'#'", ',', '0x0c', ',', 'struct', 'fw_cdev_get_cycle_timer', ')', '/* available since kernel version 2.6.30 */']
+['FW_CDEV_IOC_GET_CYCLE_TIMER2', '_IOWR', '(', "'#'", ',', '0x14', ',', 'struct', 'fw_cdev_get_cycle_timer2', ')', '/* available since kernel version 2.6.36 */']
+['FW_CDEV_IOC_GET_INFO', '_IOWR', '(', "'#'", ',', '0x00', ',', 'struct', 'fw_cdev_get_info', ')', '#']
+['FW_CDEV_IOC_GET_SPEED', '_IO', '(', "'#'", ',', '0x11', ')', '/* returns speed code */']
+['FW_CDEV_IOC_INITIATE_BUS_RESET', '_IOW', '(', "'#'", ',', '0x05', ',', 'struct', 'fw_cdev_initiate_bus_reset', ')', '#']
+['FW_CDEV_IOC_QUEUE_ISO', '_IOWR', '(', "'#'", ',', '0x09', ',', 'struct', 'fw_cdev_queue_iso', ')', '#']
+['FW_CDEV_IOC_RECEIVE_PHY_PACKETS', '_IOW', '(', "'#'", ',', '0x16', ',', 'struct', 'fw_cdev_receive_phy_packets', ')', '#']
+['FW_CDEV_IOC_REMOVE_DESCRIPTOR', '_IOW', '(', "'#'", ',', '0x07', ',', 'struct', 'fw_cdev_remove_descriptor', ')', '#']
+['FW_CDEV_IOC_SEND_BROADCAST_REQUEST', '_IOW', '(', "'#'", ',', '0x12', ',', 'struct', 'fw_cdev_send_request', ')', '#']
+['FW_CDEV_IOC_SEND_PHY_PACKET', '_IOWR', '(', "'#'", ',', '0x15', ',', 'struct', 'fw_cdev_send_phy_packet', ')', '#']
+['FW_CDEV_IOC_SEND_REQUEST', '_IOW', '(', "'#'", ',', '0x01', ',', 'struct', 'fw_cdev_send_request', ')', '#']
+['FW_CDEV_IOC_SEND_RESPONSE', '_IOW', '(', "'#'", ',', '0x04', ',', 'struct', 'fw_cdev_send_response', ')', '#']
+['FW_CDEV_IOC_SEND_STREAM_PACKET', '_IOW', '(', "'#'", ',', '0x13', ',', 'struct', 'fw_cdev_send_stream_packet', ')', '/* available since kernel version 2.6.34 */']
+['FW_CDEV_IOC_SET_ISO_CHANNELS', '_IOW', '(', "'#'", ',', '0x17', ',', 'struct', 'fw_cdev_set_iso_channels', ')', '/* available since kernel version 3.4 */']
+['FW_CDEV_IOC_START_ISO', '_IOW', '(', "'#'", ',', '0x0a', ',', 'struct', 'fw_cdev_start_iso', ')', '#']
+['FW_CDEV_IOC_STOP_ISO', '_IOW', '(', "'#'", ',', '0x0b', ',', 'struct', 'fw_cdev_stop_iso', ')', '/* available since kernel version 2.6.24 */']
+['HIDIOCAPPLICATION', '_IO', '(', "'H'", ',', '0x02', ')', '#']
+['HIDIOCGCOLLECTIONINDEX', '_IOW', '(', "'H'", ',', '0x10', ',', 'struct', 'hiddev_usage_ref', ')', '#']
+['HIDIOCGCOLLECTIONINFO', '_IOWR', '(', "'H'", ',', '0x11', ',', 'struct', 'hiddev_collection_info', ')', '#']
+['HIDIOCGDEVINFO', '_IOR', '(', "'H'", ',', '0x03', ',', 'struct', 'hiddev_devinfo', ')', '#']
+['HIDIOCGFEATURE', '(', 'len', ')', '_IOC', '(', '_IOC_WRITE', '|', '_IOC_READ', ',', "'H'", ',', '0x07', ',', 'len', ')', '#']
+['HIDIOCGFIELDINFO', '_IOWR', '(', "'H'", ',', '0x0A', ',', 'struct', 'hiddev_field_info', ')', '#']
+['HIDIOCGFLAG', '_IOR', '(', "'H'", ',', '0x0E', ',', 'int', ')', '#']
+['HIDIOCGNAME', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'H'", ',', '0x06', ',', 'len', ')', '#']
+['HIDIOCGPHYS', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'H'", ',', '0x12', ',', 'len', ')', '/* For writing/reading to multiple/consecutive usages */']
+['HIDIOCGRAWINFO', '_IOR', '(', "'H'", ',', '0x03', ',', 'struct', 'hidraw_devinfo', ')', '#']
+['HIDIOCGRAWNAME', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'H'", ',', '0x04', ',', 'len', ')', '#']
+['HIDIOCGRAWPHYS', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'H'", ',', '0x05', ',', 'len', ')', '/* The first byte of SFEATURE and GFEATURE is the report number */']
+['HIDIOCGRDESC', '_IOR', '(', "'H'", ',', '0x02', ',', 'struct', 'hidraw_report_descriptor', ')', '#']
+['HIDIOCGRDESCSIZE', '_IOR', '(', "'H'", ',', '0x01', ',', 'int', ')', '#']
+['HIDIOCGREPORT', '_IOW', '(', "'H'", ',', '0x07', ',', 'struct', 'hiddev_report_info', ')', '#']
+['HIDIOCGREPORTINFO', '_IOWR', '(', "'H'", ',', '0x09', ',', 'struct', 'hiddev_report_info', ')', '#']
+['HIDIOCGSTRING', '_IOR', '(', "'H'", ',', '0x04', ',', 'struct', 'hiddev_string_descriptor', ')', '#']
+['HIDIOCGUCODE', '_IOWR', '(', "'H'", ',', '0x0D', ',', 'struct', 'hiddev_usage_ref', ')', '#']
+['HIDIOCGUSAGE', '_IOWR', '(', "'H'", ',', '0x0B', ',', 'struct', 'hiddev_usage_ref', ')', '#']
+['HIDIOCGUSAGES', '_IOWR', '(', "'H'", ',', '0x13', ',', 'struct', 'hiddev_usage_ref_multi', ')', '#']
+['HIDIOCGVERSION', '_IOR', '(', "'H'", ',', '0x01', ',', 'int', ')', '#']
+['HIDIOCINITREPORT', '_IO', '(', "'H'", ',', '0x05', ')', '#']
+['HIDIOCSFEATURE', '(', 'len', ')', '_IOC', '(', '_IOC_WRITE', '|', '_IOC_READ', ',', "'H'", ',', '0x06', ',', 'len', ')', '#']
+['HIDIOCSFLAG', '_IOW', '(', "'H'", ',', '0x0F', ',', 'int', ')', '#']
+['HIDIOCSREPORT', '_IOW', '(', "'H'", ',', '0x08', ',', 'struct', 'hiddev_report_info', ')', '#']
+['HIDIOCSUSAGE', '_IOW', '(', "'H'", ',', '0x0C', ',', 'struct', 'hiddev_usage_ref', ')', '#']
+['HIDIOCSUSAGES', '_IOW', '(', "'H'", ',', '0x14', ',', 'struct', 'hiddev_usage_ref_multi', ')', '/* \n * Flags to be used in HIDIOCSFLAG\n */']
+['IIOCDBGVAR', '_IO', '(', "'I'", ',', '127', ')', '#']
+['IIOCDRVCTL', '_IO', '(', "'I'", ',', '128', ')', '/* cisco hdlck device private ioctls */']
+['IIOCGETCPS', '_IO', '(', "'I'", ',', '21', ')', '#']
+['IIOCGETDVR', '_IO', '(', "'I'", ',', '22', ')', '#']
+['IIOCGETMAP', '_IO', '(', "'I'", ',', '17', ')', '#']
+['IIOCGETPRF', '_IO', '(', "'I'", ',', '15', ')', '#']
+['IIOCGETSET', '_IO', '(', "'I'", ',', '8', ')', '/* no longer supported */']
+['IIOCNETAIF', '_IO', '(', "'I'", ',', '1', ')', '#']
+['IIOCNETALN', '_IO', '(', "'I'", ',', '32', ')', '#']
+['IIOCNETANM', '_IO', '(', "'I'", ',', '5', ')', '#']
+['IIOCNETASL', '_IO', '(', "'I'", ',', '19', ')', '#']
+['IIOCNETDIF', '_IO', '(', "'I'", ',', '2', ')', '#']
+['IIOCNETDIL', '_IO', '(', "'I'", ',', '20', ')', '#']
+['IIOCNETDLN', '_IO', '(', "'I'", ',', '33', ')', '#']
+['IIOCNETDNM', '_IO', '(', "'I'", ',', '6', ')', '#']
+['IIOCNETDWRSET', '_IO', '(', "'I'", ',', '24', ')', '/* dwabc ioctl to reset abc-values to default on a net-interface */']
+['IIOCNETGCF', '_IO', '(', "'I'", ',', '4', ')', '#']
+['IIOCNETGNM', '_IO', '(', "'I'", ',', '7', ')', '#']
+['IIOCNETGPN', '_IO', '(', "'I'", ',', '34', ')', '#']
+['IIOCNETHUP', '_IO', '(', "'I'", ',', '11', ')', '#']
+['IIOCNETLCR', '_IO', '(', "'I'", ',', '23', ')', '/* dwabc ioctl for LCR from isdnlog */']
+['IIOCNETSCF', '_IO', '(', "'I'", ',', '3', ')', '#']
+['IIOCSETBRJ', '_IO', '(', "'I'", ',', '13', ')', '#']
+['IIOCSETGST', '_IO', '(', "'I'", ',', '12', ')', '#']
+['IIOCSETMAP', '_IO', '(', "'I'", ',', '18', ')', '#']
+['IIOCSETPRF', '_IO', '(', "'I'", ',', '16', ')', '#']
+['IIOCSETSET', '_IO', '(', "'I'", ',', '9', ')', '/* no longer supported */']
+['IIOCSETVER', '_IO', '(', "'I'", ',', '10', ')', '#']
+['IIOCSIGPRF', '_IO', '(', "'I'", ',', '14', ')', '#']
+['IOCTL_EVTCHN_BIND_INTERDOMAIN', '_IOC', '(', '_IOC_NONE', ',', "'E'", ',', '1', ',', 'sizeof', '(', 'struct', 'ioctl_evtchn_bind_interdomain', ')', ')', 'struct']
+['IOCTL_EVTCHN_BIND_UNBOUND_PORT', '_IOC', '(', '_IOC_NONE', ',', "'E'", ',', '2', ',', 'sizeof', '(', 'struct', 'ioctl_evtchn_bind_unbound_port', ')', ')', 'struct']
+['IOCTL_EVTCHN_BIND_VIRQ', '_IOC', '(', '_IOC_NONE', ',', "'E'", ',', '0', ',', 'sizeof', '(', 'struct', 'ioctl_evtchn_bind_virq', ')', ')', 'struct']
+['IOCTL_EVTCHN_NOTIFY', '_IOC', '(', '_IOC_NONE', ',', "'E'", ',', '4', ',', 'sizeof', '(', 'struct', 'ioctl_evtchn_notify', ')', ')', 'struct']
+['IOCTL_EVTCHN_RESET', '_IOC', '(', '_IOC_NONE', ',', "'E'", ',', '5', ',', '0', ')', '#']
+['IOCTL_EVTCHN_UNBIND', '_IOC', '(', '_IOC_NONE', ',', "'E'", ',', '3', ',', 'sizeof', '(', 'struct', 'ioctl_evtchn_unbind', ')', ')', 'struct']
+['IOCTL_MEI_CONNECT_CLIENT', '_IOWR', '(', "'H'", ',', '0x01', ',', 'struct', 'mei_connect_client_data', ')', '/*\n * Intel MEI client information struct\n */']
+['IOCTL_WDM_MAX_COMMAND', '_IOR', '(', "'H'", ',', '0xA0', ',', '__u16', ')', '#']
+['IVTVFB_IOC_DMA_FRAME', '_IOW', '(', "'V'", ',', 'BASE_VIDIOC_PRIVATE', '+', '0', ',', 'struct', 'ivtvfb_dma_frame', ')', '#']
+['IVTV_IOC_DMA_FRAME', '_IOW', '(', "'V'", ',', 'BASE_VIDIOC_PRIVATE', '+', '0', ',', 'struct', 'ivtv_dma_frame', ')', '/* Select the passthrough mode (if the argument is non-zero). In the passthrough\n mode the output of the encoder is passed immediately into the decoder. */']
+['IVTV_IOC_PASSTHROUGH_MODE', '_IOW', '(', "'V'", ',', 'BASE_VIDIOC_PRIVATE', '+', '1', ',', 'int', ')', '/* Deprecated defines: applications should use the defines from videodev2.h */']
+['JSIOCGAXES', '_IOR', '(', "'j'", ',', '0x11', ',', '__u8', ')', '/* get number of axes */']
+['JSIOCGAXMAP', '_IOR', '(', "'j'", ',', '0x32', ',', '__u8', '[', 'ABS_CNT', ']', ')', '/* get axis mapping */']
+['JSIOCGBTNMAP', '_IOR', '(', "'j'", ',', '0x34', ',', '__u16', '[', 'KEY_MAX', '-', 'BTN_MISC', '+', '1', ']', ')', '/* get button mapping */']
+['JSIOCGBUTTONS', '_IOR', '(', "'j'", ',', '0x12', ',', '__u8', ')', '/* get number of buttons */']
+['JSIOCGCORR', '_IOR', '(', "'j'", ',', '0x22', ',', 'struct', 'js_corr', ')', '/* get correction values */']
+['JSIOCGNAME', '(', 'len', ')', '_IOC', '(', '_IOC_READ', ',', "'j'", ',', '0x13', ',', 'len', ')', '/* get identifier string */']
+['JSIOCGVERSION', '_IOR', '(', "'j'", ',', '0x01', ',', '__u32', ')', '/* get driver version */']
+['JSIOCSAXMAP', '_IOW', '(', "'j'", ',', '0x31', ',', '__u8', '[', 'ABS_CNT', ']', ')', '/* set axis mapping */']
+['JSIOCSBTNMAP', '_IOW', '(', "'j'", ',', '0x33', ',', '__u16', '[', 'KEY_MAX', '-', 'BTN_MISC', '+', '1', ']', ')', '/* set button mapping */']
+['JSIOCSCORR', '_IOW', '(', "'j'", ',', '0x21', ',', 'struct', 'js_corr', ')', '/* set correction values */']
+['KIOCSOUND', '0x4B2F', '/* start sound generation (0 for off) */']
+['MEDIA_IOC_DEVICE_INFO', '_IOWR', '(', "'|'", ',', '0x00', ',', 'struct', 'media_device_info', ')', '#']
+['MEDIA_IOC_ENUM_ENTITIES', '_IOWR', '(', "'|'", ',', '0x01', ',', 'struct', 'media_entity_desc', ')', '#']
+['MEDIA_IOC_ENUM_LINKS', '_IOWR', '(', "'|'", ',', '0x02', ',', 'struct', 'media_links_enum', ')', '#']
+['MEDIA_IOC_SETUP_LINK', '_IOWR', '(', "'|'", ',', '0x03', ',', 'struct', 'media_link_desc', ')', '#']
+['MEYEIOC_G_PARAMS', '_IOR', '(', "'v'", ',', 'BASE_VIDIOC_PRIVATE', '+', '0', ',', 'struct', 'meye_params', ')', '/* set the extended parameters */']
+['MEYEIOC_QBUF_CAPT', '_IOW', '(', "'v'", ',', 'BASE_VIDIOC_PRIVATE', '+', '2', ',', 'int', ')', '/* sync a previously queued mjpeg buffer */']
+['MEYEIOC_STILLCAPT', '_IO', '(', "'v'", ',', 'BASE_VIDIOC_PRIVATE', '+', '4', ')', '/* get a jpeg compressed snapshot */']
+['MEYEIOC_STILLJCAPT', '_IOR', '(', "'v'", ',', 'BASE_VIDIOC_PRIVATE', '+', '5', ',', 'int', ')', '/* V4L2 private controls */']
+['MEYEIOC_SYNC', '_IOWR', '(', "'v'", ',', 'BASE_VIDIOC_PRIVATE', '+', '3', ',', 'int', ')', '/* get a still uncompressed snapshot */']
+['MEYEIOC_S_PARAMS', '_IOW', '(', "'v'", ',', 'BASE_VIDIOC_PRIVATE', '+', '1', ',', 'struct', 'meye_params', ')', '/* queue a buffer for mjpeg capture */']
+['MGSL_IOCCLRMODCOUNT', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '15', ')', '#']
+['MGSL_IOCGGPIO', '_IOR', '(', 'MGSL_MAGIC_IOC', ',', '17', ',', 'struct', 'gpio_desc', ')', '#']
+['MGSL_IOCGIF', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '11', ')', '#']
+['MGSL_IOCGPARAMS', '_IOR', '(', 'MGSL_MAGIC_IOC', ',', '1', ',', 'struct', '_MGSL_PARAMS', ')', '#']
+['MGSL_IOCGSTATS', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '7', ')', '#']
+['MGSL_IOCGTXIDLE', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '3', ')', '#']
+['MGSL_IOCGXCTRL', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '22', ')', '#']
+['MGSL_IOCGXSYNC', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '20', ')', '#']
+['MGSL_IOCLOOPTXDONE', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '9', ')', '#']
+['MGSL_IOCRXENABLE', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '5', ')', '#']
+['MGSL_IOCSGPIO', '_IOW', '(', 'MGSL_MAGIC_IOC', ',', '16', ',', 'struct', 'gpio_desc', ')', '#']
+['MGSL_IOCSIF', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '10', ')', '#']
+['MGSL_IOCSPARAMS', '_IOW', '(', 'MGSL_MAGIC_IOC', ',', '0', ',', 'struct', '_MGSL_PARAMS', ')', '#']
+['MGSL_IOCSTXIDLE', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '2', ')', '#']
+['MGSL_IOCSXCTRL', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '21', ')', '#']
+['MGSL_IOCSXSYNC', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '19', ')', '#']
+['MGSL_IOCTXABORT', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '6', ')', '#']
+['MGSL_IOCTXENABLE', '_IO', '(', 'MGSL_MAGIC_IOC', ',', '4', ')', '#']
+['MGSL_IOCWAITEVENT', '_IOWR', '(', 'MGSL_MAGIC_IOC', ',', '8', ',', 'int', ')', '#']
+['MGSL_IOCWAITGPIO', '_IOWR', '(', 'MGSL_MAGIC_IOC', ',', '18', ',', 'struct', 'gpio_desc', ')', '#']
+['MMC_IOC_CMD', '_IOWR', '(', 'MMC_BLOCK_MAJOR', ',', '0', ',', 'struct', 'mmc_ioc_cmd', ')', '/*\n * Since this ioctl is only meant to enhance (and not replace) normal access\n * to the mmc bus device, an upper data transfer limit of MMC_IOC_MAX_BYTES\n * is enforced per ioctl call. For larger data transfers, use the normal\n * block device operations.\n */']
+['MTIOCGET', '_IOR', '(', "'m'", ',', '2', ',', 'struct', 'mtget', ')', '/* Get tape status. */']
+['MTIOCGET', '_IOR', '(', "'m'", ',', '2', ',', 'struct', 'mtget', ')', '/* get tape status */']
+['MTIOCGETCONFIG', '_IOR', '(', "'m'", ',', '4', ',', 'struct', 'mtconfiginfo', ')', '/* Get tape config.*/']
+['MTIOCPOS', '_IOR', '(', "'m'", ',', '3', ',', 'struct', 'mtpos', ')', '/* Get tape position.*/']
+['MTIOCPOS', '_IOR', '(', "'m'", ',', '3', ',', 'struct', 'mtpos', ')', '/* get tape position */']
+['MTIOCSETCONFIG', '_IOW', '(', "'m'", ',', '5', ',', 'struct', 'mtconfiginfo', ')', '/* Set tape config.*/']
+['MTIOCTOP', '_IOW', '(', "'m'", ',', '1', ',', 'struct', 'mtop', ')', '/* Do a mag tape op. */']
+['MTIOCTOP', '_IOW', '(', "'m'", ',', '1', ',', 'struct', 'mtop', ')', '/* do a mag tape op */']
+['MTRRIOC_ADD_ENTRY', '_IOW', '(', 'MTRR_IOCTL_BASE', ',', '0', ',', 'struct', 'mtrr_sentry', ')', '#']
+['MTRRIOC_ADD_PAGE_ENTRY', '_IOW', '(', 'MTRR_IOCTL_BASE', ',', '5', ',', 'struct', 'mtrr_sentry', ')', '#']
+['MTRRIOC_DEL_ENTRY', '_IOW', '(', 'MTRR_IOCTL_BASE', ',', '2', ',', 'struct', 'mtrr_sentry', ')', '#']
+['MTRRIOC_DEL_PAGE_ENTRY', '_IOW', '(', 'MTRR_IOCTL_BASE', ',', '7', ',', 'struct', 'mtrr_sentry', ')', '#']
+['MTRRIOC_GET_ENTRY', '_IOWR', '(', 'MTRR_IOCTL_BASE', ',', '3', ',', 'struct', 'mtrr_gentry', ')', '#']
+['MTRRIOC_GET_PAGE_ENTRY', '_IOWR', '(', 'MTRR_IOCTL_BASE', ',', '8', ',', 'struct', 'mtrr_gentry', ')', '#']
+['MTRRIOC_KILL_ENTRY', '_IOW', '(', 'MTRR_IOCTL_BASE', ',', '4', ',', 'struct', 'mtrr_sentry', ')', '#']
+['MTRRIOC_KILL_PAGE_ENTRY', '_IOW', '(', 'MTRR_IOCTL_BASE', ',', '9', ',', 'struct', 'mtrr_sentry', ')', '/* These are the region types */']
+['MTRRIOC_SET_ENTRY', '_IOW', '(', 'MTRR_IOCTL_BASE', ',', '1', ',', 'struct', 'mtrr_sentry', ')', '#']
+['MTRRIOC_SET_PAGE_ENTRY', '_IOW', '(', 'MTRR_IOCTL_BASE', ',', '6', ',', 'struct', 'mtrr_sentry', ')', '#']
+['NVME_IOCTL_ADMIN_CMD', '_IOWR', '(', "'N'", ',', '0x41', ',', 'struct', 'nvme_admin_cmd', ')', '#']
+['NVME_IOCTL_ID', '_IO', '(', "'N'", ',', '0x40', ')', '#']
+['NVME_IOCTL_SUBMIT_IO', '_IOW', '(', "'N'", ',', '0x42', ',', 'struct', 'nvme_user_io', ')', '#']
+['OSIOCGNETADDR', '_IOR', '(', 'DECNET_IOCTL_BASE', ',', '0xe1', ',', 'int', ')', '#']
+['OSIOCSNETADDR', '_IOW', '(', 'DECNET_IOCTL_BASE', ',', '0xe0', ',', 'int', ')', '#']
+['PCIIOC_CONTROLLER', '(', 'PCIIOC_BASE', '|', '0x00', ')', '/* Get controller for PCI device. */']
+['PCIIOC_MMAP_IS_IO', '(', 'PCIIOC_BASE', '|', '0x01', ')', '/* Set mmap state to I/O space. */']
+['PCIIOC_MMAP_IS_MEM', '(', 'PCIIOC_BASE', '|', '0x02', ')', '/* Set mmap state to MEM space. */']
+['PCIIOC_WRITE_COMBINE', '(', 'PCIIOC_BASE', '|', '0x03', ')', '/* Enable/disable write-combining. */']
+['PERF_EVENT_IOC_DISABLE', '_IO', '(', "'$'", ',', '1', ')', '#']
+['PERF_EVENT_IOC_ENABLE', '_IO', '(', "'$'", ',', '0', ')', '#']
+['PERF_EVENT_IOC_ID', '_IOR', '(', "'$'", ',', '7', ',', '__u64', '*', ')', 'enum']
+['PERF_EVENT_IOC_PERIOD', '_IOW', '(', "'$'", ',', '4', ',', '__u64', ')', '#']
+['PERF_EVENT_IOC_REFRESH', '_IO', '(', "'$'", ',', '2', ')', '#']
+['PERF_EVENT_IOC_RESET', '_IO', '(', "'$'", ',', '3', ')', '#']
+['PERF_EVENT_IOC_SET_FILTER', '_IOW', '(', "'$'", ',', '6', ',', 'char', '*', ')', '#']
+['PERF_EVENT_IOC_SET_OUTPUT', '_IO', '(', "'$'", ',', '5', ')', '#']
+['PMU_IOC_CAN_SLEEP', '_IOR', '(', "'B'", ',', '5', ',', 'size_t', ')', "/* no param, but historically was _IOR('B', 6, 0), meaning 4 bytes */"]
+['PMU_IOC_GET_BACKLIGHT', '_IOR', '(', "'B'", ',', '1', ',', 'size_t', ')', '/* in param: u32\tbacklight value: 0 to 15 */']
+['PMU_IOC_GET_MODEL', '_IOR', '(', "'B'", ',', '3', ',', 'size_t', ')', '/* out param: u32*\thas_adb: 0 or 1 */']
+['PMU_IOC_GRAB_BACKLIGHT', '_IOR', '(', "'B'", ',', '6', ',', 'size_t', ')', '#']
+['PMU_IOC_HAS_ADB', '_IOR', '(', "'B'", ',', '4', ',', 'size_t', ')', '/* out param: u32*\tcan_sleep: 0 or 1 */']
+['PMU_IOC_SET_BACKLIGHT', '_IOW', '(', "'B'", ',', '2', ',', 'size_t', ')', '/* out param: u32*\tPMU model */']
+['PMU_IOC_SLEEP', '_IO', '(', "'B'", ',', '0', ')', '/* out param: u32*\tbacklight value: 0 to 15 */']
+['PPPIOCATTACH', '_IOW', '(', "'t'", ',', '61', ',', 'int', ')', '/* attach to ppp unit */']
+['PPPIOCATTCHAN', '_IOW', '(', "'t'", ',', '56', ',', 'int', ')', '/* attach to ppp channel */']
+['PPPIOCBUNDLE', '_IOW', '(', "'t'", ',', '129', ',', 'int', ')', '#']
+['PPPIOCCONNECT', '_IOW', '(', "'t'", ',', '58', ',', 'int', ')', '/* connect channel to unit */']
+['PPPIOCDETACH', '_IOW', '(', "'t'", ',', '60', ',', 'int', ')', '/* detach from ppp unit/chan */']
+['PPPIOCDISCONN', '_IO', '(', "'t'", ',', '57', ')', '/* disconnect channel */']
+['PPPIOCGASYNCMAP', '_IOR', '(', "'t'", ',', '88', ',', 'int', ')', '/* get async map */']
+['PPPIOCGCALLINFO', '_IOWR', '(', "'t'", ',', '128', ',', 'struct', 'pppcallinfo', ')', '#']
+['PPPIOCGCHAN', '_IOR', '(', "'t'", ',', '55', ',', 'int', ')', '/* get ppp channel number */']
+['PPPIOCGCOMPRESSORS', '_IOR', '(', "'t'", ',', '134', ',', 'unsigned', 'long', '[', '8', ']', ')', '#']
+['PPPIOCGDEBUG', '_IOR', '(', "'t'", ',', '65', ',', 'int', ')', '/* Read debug level */']
+['PPPIOCGFLAGS', '_IOR', '(', "'t'", ',', '90', ',', 'int', ')', '/* get configuration flags */']
+['PPPIOCGIDLE', '_IOR', '(', "'t'", ',', '63', ',', 'struct', 'ppp_idle', ')', '/* get idle time */']
+['PPPIOCGIFNAME', '_IOR', '(', "'t'", ',', '136', ',', 'char', '[', 'IFNAMSIZ', ']', ')', '#']
+['PPPIOCGL2TPSTATS', '_IOR', '(', "'t'", ',', '54', ',', 'struct', 'pppol2tp_ioc_stats', ')', '#']
+['PPPIOCGMPFLAGS', '_IOR', '(', "'t'", ',', '130', ',', 'int', ')', '#']
+['PPPIOCGMRU', '_IOR', '(', "'t'", ',', '83', ',', 'int', ')', '/* get max receive unit */']
+['PPPIOCGNPMODE', '_IOWR', '(', "'t'", ',', '76', ',', 'struct', 'npioctl', ')', '/* get NP mode */']
+['PPPIOCGRASYNCMAP', '_IOR', '(', "'t'", ',', '85', ',', 'int', ')', '/* get receive async map */']
+['PPPIOCGUNIT', '_IOR', '(', "'t'", ',', '86', ',', 'int', ')', '/* get ppp unit number */']
+['PPPIOCGXASYNCMAP', '_IOR', '(', "'t'", ',', '80', ',', 'ext_accm', ')', '/* get extended ACCM */']
+['PPPIOCNEWUNIT', '_IOWR', '(', "'t'", ',', '62', ',', 'int', ')', '/* create new ppp unit */']
+['PPPIOCSACTIVE', '_IOW', '(', "'t'", ',', '70', ',', 'struct', 'sock_fprog', ')', '/* set active filt */']
+['PPPIOCSASYNCMAP', '_IOW', '(', "'t'", ',', '87', ',', 'int', ')', '/* set async map */']
+['PPPIOCSCOMPRESS', '_IOW', '(', "'t'", ',', '77', ',', 'struct', 'ppp_option_data', ')', '#']
+['PPPIOCSCOMPRESSOR', '_IOW', '(', "'t'", ',', '135', ',', 'int', ')', '#']
+['PPPIOCSDEBUG', '_IOW', '(', "'t'", ',', '64', ',', 'int', ')', '/* Set debug level */']
+['PPPIOCSFLAGS', '_IOW', '(', "'t'", ',', '89', ',', 'int', ')', '/* set configuration flags */']
+['PPPIOCSMAXCID', '_IOW', '(', "'t'", ',', '81', ',', 'int', ')', '/* set VJ max slot ID */']
+['PPPIOCSMPFLAGS', '_IOW', '(', "'t'", ',', '131', ',', 'int', ')', '#']
+['PPPIOCSMPMRU', '_IOW', '(', "'t'", ',', '133', ',', 'int', ')', '#']
+['PPPIOCSMPMTU', '_IOW', '(', "'t'", ',', '132', ',', 'int', ')', '#']
+['PPPIOCSMRRU', '_IOW', '(', "'t'", ',', '59', ',', 'int', ')', '/* set multilink MRU */']
+['PPPIOCSMRU', '_IOW', '(', "'t'", ',', '82', ',', 'int', ')', '/* set max receive unit */']
+['PPPIOCSNPMODE', '_IOW', '(', "'t'", ',', '75', ',', 'struct', 'npioctl', ')', '/* set NP mode */']
+['PPPIOCSPASS', '_IOW', '(', "'t'", ',', '71', ',', 'struct', 'sock_fprog', ')', '/* set pass filter */']
+['PPPIOCSRASYNCMAP', '_IOW', '(', "'t'", ',', '84', ',', 'int', ')', '/* set receive async map */']
+['PPPIOCSXASYNCMAP', '_IOW', '(', "'t'", ',', '79', ',', 'ext_accm', ')', '/* set extended ACCM */']
+['PPPIOCXFERUNIT', '_IO', '(', "'t'", ',', '78', ')', '/* transfer PPP unit */']
+['REISERFS_IOC_GETFLAGS', '_IOR', '(', "'f'", ',', '1', ',', 'long', ')', '#']
+['REISERFS_IOC_GETVERSION', '_IOR', '(', "'v'", ',', '1', ',', 'long', ')', '#']
+['RESIERFS_IOC_SETFLAGS', '_IOW', '(', "'f'", ',', '2', ',', 'long', ')', '#']
+['REISERFS_IOC_SETVERSION', '_IOW', '(', "'v'", ',', '2', ',', 'long', ')', '#']
+['REISERFS_IOC_UNPACK', '_IOW', '(', '0xCD', ',', '1', ',', 'long', ')', '/* define following flags to be the same as in ext2, so that chattr(1),\n lsattr(1) will work with us. */']
+['RFKILL_IOCTL_NOINPUT', '_IO', '(', 'RFKILL_IOC_MAGIC', ',', 'RFKILL_IOC_NOINPUT', ')', "/* and that's all userspace gets */"]
+['SCSI_IOCTL_BENCHMARK_COMMAND', '3', '#']
+['SCSI_IOCTL_DOORLOCK', '0x5380', '/* Lock the eject mechanism. */']
+['SCSI_IOCTL_DOORUNLOCK', '0x5381', '/* Unlock the mechanism. */']
+['SCSI_IOCTL_GET_BUS_NUMBER', '0x5386', '#']
+['SCSI_IOCTL_GET_IDLUN', '0x5382', '/* Used to turn on and off tagged queuing for scsi devices. */']
+['SCSI_IOCTL_PROBE_HOST', '0x5385', '/* Used to get the bus number for a device. */']
+['SCSI_IOCTL_SEND_COMMAND', '1', '/* Send a command to the SCSI host. */']
+['SCSI_IOCTL_START_UNIT', '5', '#']
+['SCSI_IOCTL_STOP_UNIT', '6', '#']
+['SCSI_IOCTL_SYNC', '4', '/* Request synchronous parameters. */']
+['SCSI_IOCTL_TAGGED_DISABLE', '0x5384', '/* Used to obtain the host number of a device. */']
+['SCSI_IOCTL_TAGGED_ENABLE', '0x5383', '#']
+['SCSI_IOCTL_TEST_UNIT_READY', '2', '/* Test if unit is ready. */']
+['SIOCADDDLCI', '0x8980', '/* Create new DLCI device\t*/']
+['SIOCADDMULTI', '0x8931', '/* Multicast address lists\t*/']
+['SIOCADDRT', '0x890B', '/* add routing table entry\t*/']
+['SIOCAIPXITFCRT', '(', 'SIOCPROTOPRIVATE', ')', '#']
+['SIOCAIPXPRISLT', '(', 'SIOCPROTOPRIVATE', '+', '1', ')', '#']
+['SIOCATALKDIFADDR', '(', 'SIOCPROTOPRIVATE', '+', '0', ')', 'struct']
+['SIOCATMARK', '0x8905', '#']
+['SIOCAX25ADDFWD', '(', 'SIOCPROTOPRIVATE', '+', '10', ')', '#']
+['SIOCAX25ADDUID', '(', 'SIOCPROTOPRIVATE', '+', '1', ')', '#']
+['SIOCAX25BPQADDR', '(', 'SIOCPROTOPRIVATE', '+', '4', ')', '#']
+['SIOCAX25CTLCON', '(', 'SIOCPROTOPRIVATE', '+', '8', ')', '#']
+['SIOCAX25DELFWD', '(', 'SIOCPROTOPRIVATE', '+', '11', ')', '#']
+['SIOCAX25DELUID', '(', 'SIOCPROTOPRIVATE', '+', '2', ')', '#']
+['SIOCAX25DEVCTL', '(', 'SIOCPROTOPRIVATE', '+', '12', ')', '#']
+['SIOCAX25GETINFO', '(', 'SIOCPROTOPRIVATE', '+', '13', ')', '#']
+['SIOCAX25GETINFOOLD', '(', 'SIOCPROTOPRIVATE', '+', '9', ')', '#']
+['SIOCAX25GETPARMS', '(', 'SIOCPROTOPRIVATE', '+', '5', ')', '#']
+['SIOCAX25GETUID', '(', 'SIOCPROTOPRIVATE', ')', '#']
+['SIOCAX25NOUID', '(', 'SIOCPROTOPRIVATE', '+', '3', ')', '#']
+['SIOCAX25OPTRT', '(', 'SIOCPROTOPRIVATE', '+', '7', ')', '#']
+['SIOCAX25SETPARMS', '(', 'SIOCPROTOPRIVATE', '+', '6', ')', '#']
+['SIOCBONDCHANGEACTIVE', '0x8995', '/* update to a new active slave */']
+['SIOCBONDENSLAVE', '0x8990', '/* enslave a device to the bond */']
+['SIOCBONDINFOQUERY', '0x8994', '/* rtn info about bond state */']
+['SIOCBONDRELEASE', '0x8991', '/* release a slave from the bond*/']
+['SIOCBONDSETHWADDR', '0x8992', '/* set the hw addr of the bond */']
+['SIOCBONDSLAVEINFOQUERY', '0x8993', '/* rtn info about slave state */']
+['SIOCBRADDBR', '0x89a0', '/* create new bridge device */']
+['SIOCBRADDIF', '0x89a2', '/* add interface to bridge */']
+['SIOCBRDELBR', '0x89a1', '/* remove bridge device */']
+['SIOCBRDELIF', '0x89a3', '/* remove interface from bridge */']
+['SIOCDARP', '0x8953', '/* delete ARP table entry\t*/']
+['SIOCDELDLCI', '0x8981', '/* Delete DLCI device\t\t*/']
+['SIOCDELMULTI', '0x8932', '#']
+['SIOCDELRT', '0x890C', '/* delete routing table entry\t*/']
+['SIOCDEVPLIP', 'SIOCDEVPRIVATE', 'struct']
+['SIOCDEVPRIVATE', '0x89F0', '/* to 89FF */']
+['SIOCDIFADDR', '0x8936', '/* delete PA address\t\t*/']
+['SIOCDRARP', '0x8960', '/* delete RARP table entry\t*/']
+['SIOCETHTOOL', '0x8946', '/* Ethtool interface\t\t*/']
+['SIOCGARP', '0x8954', '/* get ARP table entry\t\t*/']
+['SIOCGBPQETHPARAM', '0x5000', '/* get Level 1 parameters */']
+['SIOCGCMFIRMWARE', '(', 'SIOCDEVPRIVATE', '+', '1', ')', '/* get cm firmware version */']
+['SIOCGCMFREQUENCY', '(', 'SIOCDEVPRIVATE', '+', '2', ')', '/* get cable modem frequency */']
+['SIOCGCMPIDS', '(', 'SIOCDEVPRIVATE', '+', '4', ')', '/* get cable modem PIDs */']
+['SIOCGCMSTATS', '(', 'SIOCDEVPRIVATE', '+', '0', ')', '/* get cable modem stats */']
+['SIOCGDEBSERINT', '(', 'SIOCDEVPRIVATE', '+', '2', ')', '#']
+['SIOCGDONGLE', '(', 'SIOCDEVPRIVATE', '+', '1', ')', '#']
+['SIOCGETLINKNAME', 'SIOCPROTOPRIVATE', 'struct']
+['SIOCGHWTSTAMP', '0x89b1', '/* get config\t\t\t*/']
+['SIOCGIFADDR', '0x8915', '/* get PA address\t\t*/']
+['SIOCGIFBR', '0x8940', '/* Bridging support\t\t*/']
+['SIOCGIFBRDADDR', '0x8919', '/* get broadcast PA address\t*/']
+['SIOCGIFCONF', '0x8912', '/* get iface list\t\t*/']
+['SIOCGIFCOUNT', '0x8938', '/* get number of devices */']
+['SIOCGIFDSTADDR', '0x8917', '/* get remote PA address\t*/']
+['SIOCGIFENCAP', '0x8925', '/* get/set encapsulations */']
+['SIOCGIFFLAGS', '0x8913', '/* get flags\t\t\t*/']
+['SIOCGIFHWADDR', '0x8927', '/* Get hardware address\t\t*/']
+['SIOCGIFINDEX', '0x8933', '/* name -> if_index mapping\t*/']
+['SIOCGIFMAP', '0x8970', '/* Get device parameters\t*/']
+['SIOCGIFMEM', '0x891f', '/* get memory address (BSD)\t*/']
+['SIOCGIFMETRIC', '0x891d', '/* get metric\t\t\t*/']
+['SIOCGIFMTU', '0x8921', '/* get MTU size\t\t\t*/']
+['SIOCGIFNAME', '0x8910', '/* get iface name\t\t*/']
+['SIOCGIFNETMASK', '0x891b', '/* get network PA mask\t\t*/']
+['SIOCGIFPFLAGS', '0x8935', '#']
+['SIOCGIFSLAVE', '0x8929', '/* Driver slaving support\t*/']
+['SIOCGIFTXQLEN', '0x8942', '/* Get the tx queue length\t*/']
+['SIOCGIFVLAN', '0x8982', '/* 802.1Q VLAN support\t\t*/']
+['SIOCGKEEPALIVE', '(', 'SIOCDEVPRIVATE', '+', '1', ')', '/* Get keepalive timeout */']
+['SIOCGKEEPPERIOD', '(', 'SIOCDEVPRIVATE', '+', '0', ')', '#']
+['SIOCGLEASE', '(', 'SIOCDEVPRIVATE', '+', '5', ')', '/* Get line type */']
+['SIOCGMEDIABUSY', '(', 'SIOCDEVPRIVATE', '+', '4', ')', '#']
+['SIOCGMIIPHY', '0x8947', '/* Get address of MII PHY in use. */']
+['SIOCGMIIREG', '0x8948', '/* Read MII PHY register.\t*/']
+['SIOCGMODE', '(', 'SIOCDEVPRIVATE', '+', '7', ')', '#']
+['SIOCGNETADDR', '_IOR', '(', 'DECNET_IOCTL_BASE', ',', '0xe1', ',', 'struct', 'dn_naddr', ')', '#']
+['SIOCGOUTFILL', '(', 'SIOCDEVPRIVATE', '+', '3', ')', '/* Get outfill timeout */']
+['SIOCGPGRP', '0x8904', '#']
+['SIOCGPPPCSTATS', '(', 'SIOCDEVPRIVATE', '+', '2', ')', '#']
+['SIOCGPPPSTATS', '(', 'SIOCDEVPRIVATE', '+', '0', ')', '#']
+['SIOCGPPPVER', '(', 'SIOCDEVPRIVATE', '+', '1', ')', '/* NEVER change this!! */']
+['SIOCGQOS', '(', 'SIOCDEVPRIVATE', '+', '9', ')', '/* No reason to include <linux/if.h> just because of this one ;-) */']
+['SIOCGRARP', '0x8961', '/* get RARP table entry\t\t*/']
+['SIOCGRECEIVING', '(', 'SIOCDEVPRIVATE', '+', '5', ')', '#']
+['SIOCGSTAMP', '0x8906', '/* Get stamp (timeval) */']
+['SIOCGSTAMPNS', '0x8907', '/* Get stamp (timespec) */']
+['SIOCINQ', 'FIONREAD', '#']
+['SIOCIPXCFGDATA', '(', 'SIOCPROTOPRIVATE', '+', '2', ')', '#']
+['SIOCIPXNCPCONN', '(', 'SIOCPROTOPRIVATE', '+', '3', ')', '#']
+['SIOCMKCLIP', '_IO', '(', "'a'", ',', 'ATMIOC_CLIP', ')', '/* create IP interface */']
+['SIOCNRCTLCON', '(', 'SIOCPROTOPRIVATE', '+', '4', ')', '/* NetRom parameter structure: */']
+['SIOCNRDECOBS', '(', 'SIOCPROTOPRIVATE', '+', '2', ')', '#']
+['SIOCNRGETPARMS', '(', 'SIOCPROTOPRIVATE', '+', '0', ')', '#']
+['SIOCNRRTCTL', '(', 'SIOCPROTOPRIVATE', '+', '3', ')', '#']
+['SIOCNRSETPARMS', '(', 'SIOCPROTOPRIVATE', '+', '1', ')', '#']
+['SIOCOUTQ', 'TIOCOUTQ', '/* output queue size (not sent + not acked) */']
+['SIOCOUTQNSD', '0x894B', '/* output queue size (not sent only) */']
+['SIOCPARM_MASK', '0x1fff', '#']
+['SIOCPROTOPRIVATE', '0x89E0', '/* to 89EF */']
+['SIOCRSACCEPT', '(', 'SIOCPROTOPRIVATE', '+', '3', ')', '#']
+['SIOCRSCLRRT', '(', 'SIOCPROTOPRIVATE', '+', '4', ')', '#']
+['SIOCRSGCAUSE', '(', 'SIOCPROTOPRIVATE', '+', '0', ')', '#']
+['SIOCRSGFACILITIES', '(', 'SIOCPROTOPRIVATE', '+', '6', ')', '#']
+['SIOCRSGL2CALL', '(', 'SIOCPROTOPRIVATE', '+', '5', ')', '#']
+['SIOCRSL2CALL', '(', 'SIOCPROTOPRIVATE', '+', '2', ')', '#']
+['SIOCRSSCAUSE', '(', 'SIOCPROTOPRIVATE', '+', '1', ')', '#']
+['SIOCRSSL2CALL', '(', 'SIOCPROTOPRIVATE', '+', '2', ')', '#']
+['SIOCRTMSG', '0x890D', '/* call to routing system\t*/']
+['SIOCSARP', '0x8955', '/* set ARP table entry\t\t*/']
+['SIOCSBANDWIDTH', '(', 'SIOCDEVPRIVATE', '+', '2', ')', '#']
+['SIOCSBPQETHADDR', '(', 'SIOCDEVPRIVATE', '+', '1', ')', 'struct']
+['SIOCSBPQETHOPT', '(', 'SIOCDEVPRIVATE', '+', '0', ')', '/* reserved */']
+['SIOCSBPQETHPARAM', '0x5001', '/* set */']
+['SIOCSCMFREQUENCY', '(', 'SIOCDEVPRIVATE', '+', '3', ')', '/* set cable modem frequency */']
+['SIOCSCMPIDS', '(', 'SIOCDEVPRIVATE', '+', '5', ')', '/* set cable modem PIDs */']
+['SIOCSDEBSERINT', '(', 'SIOCDEVPRIVATE', '+', '3', ')', '/* Packet encapsulations for net-interfaces */']
+['SIOCSDONGLE', '(', 'SIOCDEVPRIVATE', '+', '0', ')', '#']
+['SIOCSDTRRTS', '(', 'SIOCDEVPRIVATE', '+', '8', ')', '#']
+['SIOCSHWTSTAMP', '0x89b0', '/* set and get config\t\t*/']
+['SIOCSIFADDR', '0x8916', '/* set PA address\t\t*/']
+['SIOCSIFATMTCP', '_IO', '(', "'a'", ',', 'ATMIOC_ITF', ')', '/* set ATMTCP mode */']
+['SIOCSIFBR', '0x8941', '/* Set bridging options \t*/']
+['SIOCSIFBRDADDR', '0x891a', '/* set broadcast PA address\t*/']
+['SIOCSIFDSTADDR', '0x8918', '/* set remote PA address\t*/']
+['SIOCSIFENCAP', '0x8926', '#']
+['SIOCSIFFLAGS', '0x8914', '/* set flags\t\t\t*/']
+['SIOCSIFHWADDR', '0x8924', '/* set hardware address \t*/']
+['SIOCSIFHWBROADCAST', '0x8937', '/* set hardware broadcast addr\t*/']
+['SIOCSIFLINK', '0x8911', '/* set iface channel\t\t*/']
+['SIOCSIFMAP', '0x8971', '/* Set device parameters\t*/']
+['SIOCSIFMEM', '0x8920', '/* set memory address (BSD)\t*/']
+['SIOCSIFMETRIC', '0x891e', '/* set metric\t\t\t*/']
+['SIOCSIFMTU', '0x8922', '/* set MTU size\t\t\t*/']
+['SIOCSIFNAME', '0x8923', '/* set interface name */']
+['SIOCSIFNETMASK', '0x891c', '/* set network PA mask\t\t*/']
+['SIOCSIFPFLAGS', '0x8934', '/* set/get extended flags set\t*/']
+['SIOCSIFSLAVE', '0x8930', '#']
+['SIOCSIFTXQLEN', '0x8943', '/* Set the tx queue length \t*/']
+['SIOCSIFVLAN', '0x8983', '/* Set 802.1Q VLAN options \t*/']
+['SIOCSKEEPALIVE', '(', 'SIOCDEVPRIVATE', ')', '/* Set keepalive timeout in sec */']
+['SIOCSKEEPPERIOD', '(', 'SIOCDEVPRIVATE', '+', '1', ')', '#']
+['SIOCSLEASE', '(', 'SIOCDEVPRIVATE', '+', '4', ')', '/* Set "leased" line type */']
+['SIOCSMEDIABUSY', '(', 'SIOCDEVPRIVATE', '+', '3', ')', '#']
+['SIOCSMIIREG', '0x8949', '/* Write MII PHY register.\t*/']
+['SIOCSMODE', '(', 'SIOCDEVPRIVATE', '+', '6', ')', '#']
+['SIOCSNETADDR', '_IOW', '(', 'DECNET_IOCTL_BASE', ',', '0xe0', ',', 'struct', 'dn_naddr', ')', '#']
+['SIOCSOUTFILL', '(', 'SIOCDEVPRIVATE', '+', '2', ')', '/* Set outfill timeout */']
+['SIOCSPGRP', '0x8902', '#']
+['SIOCSRARP', '0x8962', '/* set RARP table entry\t\t*/']
+['SIOCWANDEV', '0x894A', '/* get/set netdev parameters\t*/']
+['SIOCX25CALLACCPTAPPRV', '(', 'SIOCPROTOPRIVATE', '+', '8', ')', '#']
+['SIOCX25GCALLUSERDATA', '(', 'SIOCPROTOPRIVATE', '+', '4', ')', '#']
+['SIOCX25GCAUSEDIAG', '(', 'SIOCPROTOPRIVATE', '+', '6', ')', '#']
+['SIOCX25GDTEFACILITIES', '(', 'SIOCPROTOPRIVATE', '+', '10', ')', '#']
+['SIOCX25GFACILITIES', '(', 'SIOCPROTOPRIVATE', '+', '2', ')', '#']
+['SIOCX25GSUBSCRIP', '(', 'SIOCPROTOPRIVATE', '+', '0', ')', '#']
+['SIOCX25SCALLUSERDATA', '(', 'SIOCPROTOPRIVATE', '+', '5', ')', '#']
+['SIOCX25SCAUSEDIAG', '(', 'SIOCPROTOPRIVATE', '+', '12', ')', '/*\n *\tValues for {get,set}sockopt.\n */']
+['SIOCX25SCUDMATCHLEN', '(', 'SIOCPROTOPRIVATE', '+', '7', ')', '#']
+['SIOCX25SDTEFACILITIES', '(', 'SIOCPROTOPRIVATE', '+', '11', ')', '#']
+['SIOCX25SENDCALLACCPT', '(', 'SIOCPROTOPRIVATE', '+', '9', ')', '#']
+['SIOCX25SFACILITIES', '(', 'SIOCPROTOPRIVATE', '+', '3', ')', '#']
+['SIOCX25SSUBSCRIP', '(', 'SIOCPROTOPRIVATE', '+', '1', ')', '#']
+['SNDRV_DM_FM_IOCTL_CLEAR_PATCHES', '_IO', '(', "'H'", ',', '0x40', ')', '#']
+['SNDRV_DM_FM_IOCTL_INFO', '_IOR', '(', "'H'", ',', '0x20', ',', 'struct', 'snd_dm_fm_info', ')', '#']
+['SNDRV_DM_FM_IOCTL_PLAY_NOTE', '_IOW', '(', "'H'", ',', '0x22', ',', 'struct', 'snd_dm_fm_note', ')', '#']
+['SNDRV_DM_FM_IOCTL_RESET', '_IO', '(', "'H'", ',', '0x21', ')', '#']
+['SNDRV_DM_FM_IOCTL_SET_CONNECTION', '_IOW', '(', "'H'", ',', '0x26', ',', 'int', ')', '/* SBI patch management */']
+['SNDRV_DM_FM_IOCTL_SET_MODE', '_IOW', '(', "'H'", ',', '0x25', ',', 'int', ')', '/* for OPL3 only */']
+['SNDRV_DM_FM_IOCTL_SET_PARAMS', '_IOW', '(', "'H'", ',', '0x24', ',', 'struct', 'snd_dm_fm_params', ')', '#']
+['SNDRV_DM_FM_IOCTL_SET_VOICE', '_IOW', '(', "'H'", ',', '0x23', ',', 'struct', 'snd_dm_fm_voice', ')', '#']
+['SNDRV_DM_FM_OSS_IOCTL_PLAY_NOTE', '0x21', '#']
+['SNDRV_DM_FM_OSS_IOCTL_RESET', '0x20', '#']
+['SNDRV_DM_FM_OSS_IOCTL_SET_MODE', '0x24', '#']
+['SNDRV_DM_FM_OSS_IOCTL_SET_OPL', '0x25', '/*\n * Patch Record - fixed size for write\n */']
+['SNDRV_DM_FM_OSS_IOCTL_SET_PARAMS', '0x23', '#']
+['SNDRV_DM_FM_OSS_IOCTL_SET_VOICE', '0x22', '#']
+['SNDRV_EMU10K1_IOCTL_CODE_PEEK', '_IOWR', '(', "'H'", ',', '0x12', ',', 'emu10k1_fx8010_code_t', ')', '#']
+['SNDRV_EMU10K1_IOCTL_CODE_POKE', '_IOW', '(', "'H'", ',', '0x11', ',', 'emu10k1_fx8010_code_t', ')', '#']
+['SNDRV_EMU10K1_IOCTL_CONTINUE', '_IO', '(', "'H'", ',', '0x81', ')', '#']
+['SNDRV_EMU10K1_IOCTL_DBG_READ', '_IOR', '(', "'H'", ',', '0x84', ',', 'int', ')', '#']
+['SNDRV_EMU10K1_IOCTL_INFO', '_IOR', '(', "'H'", ',', '0x10', ',', 'emu10k1_fx8010_info_t', ')', '#']
+['SNDRV_EMU10K1_IOCTL_PCM_PEEK', '_IOWR', '(', "'H'", ',', '0x31', ',', 'emu10k1_fx8010_pcm_t', ')', '#']
+['SNDRV_EMU10K1_IOCTL_PCM_POKE', '_IOW', '(', "'H'", ',', '0x30', ',', 'emu10k1_fx8010_pcm_t', ')', '#']
+['SNDRV_EMU10K1_IOCTL_PVERSION', '_IOR', '(', "'H'", ',', '0x40', ',', 'int', ')', '#']
+['SNDRV_EMU10K1_IOCTL_SINGLE_STEP', '_IOW', '(', "'H'", ',', '0x83', ',', 'int', ')', '#']
+['SNDRV_EMU10K1_IOCTL_STOP', '_IO', '(', "'H'", ',', '0x80', ')', '#']
+['SNDRV_EMU10K1_IOCTL_TRAM_PEEK', '_IOWR', '(', "'H'", ',', '0x22', ',', 'emu10k1_fx8010_tram_t', ')', '#']
+['SNDRV_EMU10K1_IOCTL_TRAM_POKE', '_IOW', '(', "'H'", ',', '0x21', ',', 'emu10k1_fx8010_tram_t', ')', '#']
+['SNDRV_EMU10K1_IOCTL_TRAM_SETUP', '_IOW', '(', "'H'", ',', '0x20', ',', 'int', ')', '#']
+['SNDRV_EMU10K1_IOCTL_ZERO_TRAM_COUNTER', '_IO', '(', "'H'", ',', '0x82', ')', '#']
+['SNDRV_FIREWIRE_IOCTL_GET_INFO', '_IOR', '(', "'H'", ',', '0xf8', ',', 'struct', 'snd_firewire_get_info', ')', '#']
+['SNDRV_FIREWIRE_IOCTL_LOCK', '_IO', '(', "'H'", ',', '0xf9', ')', '#']
+['SNDRV_FIREWIRE_IOCTL_UNLOCK', '_IO', '(', "'H'", ',', '0xfa', ')', '#']
+['SNDRV_HDSP_IOCTL_GET_9632_AEB', '_IOR', '(', "'H'", ',', '0x45', ',', 'hdsp_9632_aeb_t', ')', '#']
+['SNDRV_HDSP_IOCTL_GET_9632_AEB', '_IOR', '(', "'H'", ',', '0x45', ',', 'struct', 'hdsp_9632_aeb', ')', '/* typedefs for compatibility to user-space */']
+['SNDRV_HDSP_IOCTL_GET_CONFIG_INFO', '_IOR', '(', "'H'", ',', '0x41', ',', 'hdsp_config_info_t', ')', 'typedef']
+['SNDRV_HDSP_IOCTL_GET_CONFIG_INFO', '_IOR', '(', "'H'", ',', '0x41', ',', 'struct', 'hdsp_config_info', ')', 'struct']
+['SNDRV_HDSP_IOCTL_GET_MIXER', '_IOR', '(', "'H'", ',', '0x44', ',', 'hdsp_mixer_t', ')', 'typedef']
+['SNDRV_HDSP_IOCTL_GET_MIXER', '_IOR', '(', "'H'", ',', '0x44', ',', 'struct', 'hdsp_mixer', ')', 'struct']
+['SNDRV_HDSP_IOCTL_GET_PEAK_RMS', '_IOR', '(', "'H'", ',', '0x40', ',', 'hdsp_peak_rms_t', ')', 'typedef']
+['SNDRV_HDSP_IOCTL_GET_PEAK_RMS', '_IOR', '(', "'H'", ',', '0x40', ',', 'struct', 'hdsp_peak_rms', ')', 'struct']
+['SNDRV_HDSP_IOCTL_GET_VERSION', '_IOR', '(', "'H'", ',', '0x43', ',', 'hdsp_version_t', ')', 'typedef']
+['SNDRV_HDSP_IOCTL_GET_VERSION', '_IOR', '(', "'H'", ',', '0x43', ',', 'struct', 'hdsp_version', ')', 'struct']
+['SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE', '_IOW', '(', "'H'", ',', '0x42', ',', 'hdsp_firmware_t', ')', 'typedef']
+['SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE', '_IOW', '(', "'H'", ',', '0x42', ',', 'struct', 'hdsp_firmware', ')', 'struct']
+['SNDRV_SB_CSP_IOCTL_INFO', '_IOR', '(', "'H'", ',', '0x10', ',', 'snd_sb_csp_info_t', ')', '/* load microcode to CSP */']
+['SNDRV_SB_CSP_IOCTL_INFO', '_IOR', '(', "'H'", ',', '0x10', ',', 'struct', 'snd_sb_csp_info', ')', '/* load microcode to CSP */']
+['SNDRV_SB_CSP_IOCTL_LOAD_CODE', '_IOC', '(', '_IOC_WRITE', ',', "'H'", ',', '0x11', ',', 'sizeof', '(', 'struct', 'snd_sb_csp_microcode', ')', ')', '/* unload microcode from CSP */']
+['SNDRV_SB_CSP_IOCTL_LOAD_CODE', '_IOW', '(', "'H'", ',', '0x11', ',', 'snd_sb_csp_microcode_t', ')', '/* unload microcode from CSP */']
+['SNDRV_SB_CSP_IOCTL_PAUSE', '_IO', '(', "'H'", ',', '0x15', ')', '/* restart CSP and DMA transfer */']
+['SNDRV_SB_CSP_IOCTL_RESTART', '_IO', '(', "'H'", ',', '0x16', ')', '#']
+['SNDRV_SB_CSP_IOCTL_START', '_IOW', '(', "'H'", ',', '0x13', ',', 'snd_sb_csp_start_t', ')', '/* stop CSP */']
+['SNDRV_SB_CSP_IOCTL_START', '_IOW', '(', "'H'", ',', '0x13', ',', 'struct', 'snd_sb_csp_start', ')', '/* stop CSP */']
+['SNDRV_SB_CSP_IOCTL_STOP', '_IO', '(', "'H'", ',', '0x14', ')', '/* pause CSP and DMA transfer */']
+['SNDRV_SB_CSP_IOCTL_UNLOAD_CODE', '_IO', '(', "'H'", ',', '0x12', ')', '/* start CSP */']
+['SONYPI_IOCGBAT1CAP', '_IOR', '(', "'v'", ',', '2', ',', '__u16', ')', '#']
+['SONYPI_IOCGBAT1REM', '_IOR', '(', "'v'", ',', '3', ',', '__u16', ')', '#']
+['SONYPI_IOCGBAT2CAP', '_IOR', '(', "'v'", ',', '4', ',', '__u16', ')', '#']
+['SONYPI_IOCGBAT2REM', '_IOR', '(', "'v'", ',', '5', ',', '__u16', ')', '/* get battery flags: battery1/battery2/ac adapter present */']
+['SONYPI_IOCGBATFLAGS', '_IOR', '(', "'v'", ',', '7', ',', '__u8', ')', '/* get/set bluetooth subsystem state on/off */']
+['SONYPI_IOCGBLUE', '_IOR', '(', "'v'", ',', '8', ',', '__u8', ')', '#']
+['SONYPI_IOCGBRT', '_IOR', '(', "'v'", ',', '0', ',', '__u8', ')', '#']
+['SONYPI_IOCGFAN', '_IOR', '(', "'v'", ',', '10', ',', '__u8', ')', '#']
+['SONYPI_IOCGTEMP', '_IOR', '(', "'v'", ',', '12', ',', '__u8', ')', '#']
+['SONYPI_IOCSBLUE', '_IOW', '(', "'v'", ',', '9', ',', '__u8', ')', '/* get/set fan state on/off */']
+['SONYPI_IOCSBRT', '_IOW', '(', "'v'", ',', '0', ',', '__u8', ')', '/* get battery full capacity/remaining capacity */']
+['SONYPI_IOCSFAN', '_IOW', '(', "'v'", ',', '11', ',', '__u8', ')', '/* get temperature (C) */']
+['SPIOCSTYPE', '_IOW', '(', "'q'", ',', '0x01', ',', 'unsigned', 'long', ')', '/*\n * bit masks for use in "interrupt" flags (3rd argument)\n */']
+['SPI_IOC_MESSAGE', '(', 'N', ')', '_IOW', '(', 'SPI_IOC_MAGIC', ',', '0', ',', 'char', '[', 'SPI_MSGSIZE', '(', 'N', ')', ']', ')', '/* Read / Write of SPI mode (SPI_MODE_0..SPI_MODE_3) (limited to 8 bits) */']
+['SPI_IOC_RD_BITS_PER_WORD', '_IOR', '(', 'SPI_IOC_MAGIC', ',', '3', ',', '__u8', ')', '#']
+['SPI_IOC_RD_LSB_FIRST', '_IOR', '(', 'SPI_IOC_MAGIC', ',', '2', ',', '__u8', ')', '#']
+['SPI_IOC_RD_MAX_SPEED_HZ', '_IOR', '(', 'SPI_IOC_MAGIC', ',', '4', ',', '__u32', ')', '#']
+['SPI_IOC_RD_MODE', '_IOR', '(', 'SPI_IOC_MAGIC', ',', '1', ',', '__u8', ')', '#']
+['SPI_IOC_RD_MODE32', '_IOR', '(', 'SPI_IOC_MAGIC', ',', '5', ',', '__u32', ')', '#']
+['SPI_IOC_WR_BITS_PER_WORD', '_IOW', '(', 'SPI_IOC_MAGIC', ',', '3', ',', '__u8', ')', '/* Read / Write SPI device default max speed hz */']
+['SPI_IOC_WR_LSB_FIRST', '_IOW', '(', 'SPI_IOC_MAGIC', ',', '2', ',', '__u8', ')', '/* Read / Write SPI device word length (1..N) */']
+['SPI_IOC_WR_MAX_SPEED_HZ', '_IOW', '(', 'SPI_IOC_MAGIC', ',', '4', ',', '__u32', ')', '/* Read / Write of the SPI mode field */']
+['SPI_IOC_WR_MODE', '_IOW', '(', 'SPI_IOC_MAGIC', ',', '1', ',', '__u8', ')', '/* Read / Write SPI bit justification */']
+['SPI_IOC_WR_MODE32', '_IOW', '(', 'SPI_IOC_MAGIC', ',', '5', ',', '__u32', ')', '#']
+['SYS_F_IOCTLSOCKET', '5', '#']
+['TIOCCBRK', '0x5428', '/* BSD compatibility */']
+['TIOCCONS', '0x541D', '#']
+['TIOCEXCL', '0x540C', '#']
+['TIOCGDEV', '_IOR', '(', "'T'", ',', '0x32', ',', 'unsigned', 'int', ')', '/* Get primary device node of /dev/console */']
+['TIOCGETD', '0x5424', '#']
+['TIOCGEXCL', '_IOR', '(', "'T'", ',', '0x40', ',', 'int', ')', '/* Get exclusive mode state */']
+['TIOCGICOUNT', '0x545D', '/* read serial port __inline__ interrupt counts */']
+['TIOCGLCKTRMIOS', '0x5456', '#']
+['TIOCGPGRP', '0x540F', '#']
+['TIOCGPKT', '_IOR', '(', "'T'", ',', '0x38', ',', 'int', ')', '/* Get packet mode state */']
+['TIOCGPTLCK', '_IOR', '(', "'T'", ',', '0x39', ',', 'int', ')', '/* Get Pty lock state */']
+['TIOCGPTN', '_IOR', '(', "'T'", ',', '0x30', ',', 'unsigned', 'int', ')', '/* Get Pty Number (of pty-mux device) */']
+['TIOCGRS485', '0x542E', '#']
+['TIOCGSERIAL', '0x541E', '#']
+['TIOCGSID', '0x5429', '/* Return the session ID of FD */']
+['TIOCGSOFTCAR', '0x5419', '#']
+['TIOCGWINSZ', '0x5413', '#']
+['TIOCINQ', 'FIONREAD', '#']
+['TIOCLINUX', '0x541C', '#']
+['TIOCL_BLANKEDSCREEN', '15', '/* return which vt was blanked */']
+['TIOCL_BLANKSCREEN', '14', '/* keep screen blank even if a key is pressed */']
+['TIOCL_GETFGCONSOLE', '12', '/* get foreground vt */']
+['TIOCL_GETKMSGREDIRECT', '17', '/* get the vt the kernel messages are restricted to */']
+['TIOCL_GETMOUSEREPORTING', '7', '/* write whether mouse event are reported */']
+['TIOCL_GETSHIFTSTATE', '6', '/* write shift state */']
+['TIOCL_PASTESEL', '3', '/* paste previous selection */']
+['TIOCL_SCROLLCONSOLE', '13', '/* scroll console */']
+['TIOCL_SELBUTTONMASK', '15', '/* button mask for report */']
+['TIOCL_SELCHAR', '0', '/* select characters */']
+['TIOCL_SELCLEAR', '4', '/* clear visibility of selection */']
+['TIOCL_SELLINE', '2', '/* select whole lines */']
+['TIOCL_SELLOADLUT', '5', '/* set characters to be considered alphabetic when selecting */']
+['TIOCL_SELMOUSEREPORT', '16', '/* report beginning of selection */']
+['TIOCL_SELPOINTER', '3', '/* show the pointer */']
+['TIOCL_SELWORD', '1', '/* select whole words */']
+['TIOCL_SETKMSGREDIRECT', '11', '/* restrict kernel messages to a vt */']
+['TIOCL_SETSEL', '2', '/* set a selection */']
+['TIOCL_SETVESABLANK', '10', '/* set vesa blanking mode */']
+['TIOCL_UNBLANKSCREEN', '4', '/* unblank screen */']
+['TIOCMBIC', '0x5417', '#']
+['TIOCMBIS', '0x5416', '#']
+['TIOCMGET', '0x5415', '#']
+['TIOCMIWAIT', '0x545C', '/* wait for a change on serial input line(s) */']
+['TIOCMSET', '0x5418', '#']
+['TIOCM_CAR', '0x040', '#']
+['TIOCM_CD', 'TIOCM_CAR', '#']
+['TIOCM_CTS', '0x020', '#']
+['TIOCM_DSR', '0x100', '#']
+['TIOCM_DTR', '0x002', '#']
+['TIOCM_LE', '0x001', '#']
+['TIOCM_LOOP', '0x8000', '/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */']
+['TIOCM_OUT1', '0x2000', '#']
+['TIOCM_OUT2', '0x4000', '#']
+['TIOCM_RI', 'TIOCM_RNG', '/* ioctl (fd, TIOCSERGETLSR, &result) where result may be as below */']
+['TIOCM_RNG', '0x080', '#']
+['TIOCM_RTS', '0x004', '#']
+['TIOCM_SR', '0x010', '#']
+['TIOCM_ST', '0x008', '#']
+['TIOCNOTTY', '0x5422', '#']
+['TIOCNXCL', '0x540D', '#']
+['TIOCOUTQ', '0x5411', '#']
+['TIOCPKT', '0x5420', '#']
+['TIOCPKT_DATA', '0', '#']
+['TIOCPKT_DOSTOP', '32', '#']
+['TIOCPKT_FLUSHREAD', '1', '#']
+['TIOCPKT_FLUSHWRITE', '2', '#']
+['TIOCPKT_IOCTL', '64', '#']
+['TIOCPKT_NOSTOP', '16', '#']
+['TIOCPKT_START', '8', '#']
+['TIOCPKT_STOP', '4', '#']
+['TIOCSBRK', '0x5427', '/* BSD compatibility */']
+['TIOCSCTTY', '0x540E', '#']
+['TIOCSERCONFIG', '0x5453', '#']
+['TIOCSERGETLSR', '0x5459', '/* Get line status register */']
+['TIOCSERGETMULTI', '0x545A', '/* Get multiport config */']
+['TIOCSERGSTRUCT', '0x5458', '/* For debugging only */']
+['TIOCSERGWILD', '0x5454', '#']
+['TIOCSERSETMULTI', '0x545B', '/* Set multiport config */']
+['TIOCSERSWILD', '0x5455', '#']
+['TIOCSER_TEMT', '0x01', '/* Transmitter physically empty */']
+['TIOCSETD', '0x5423', '#']
+['TIOCSIG', '_IOW', '(', "'T'", ',', '0x36', ',', 'int', ')', '/* pty: generate signal */']
+['TIOCSLCKTRMIOS', '0x5457', '#']
+['TIOCSPGRP', '0x5410', '#']
+['TIOCSPTLCK', '_IOW', '(', "'T'", ',', '0x31', ',', 'int', ')', '/* Lock/unlock Pty */']
+['TIOCSRS485', '0x542F', '#']
+['TIOCSSERIAL', '0x541F', '#']
+['TIOCSSOFTCAR', '0x541A', '#']
+['TIOCSTI', '0x5412', '#']
+['TIOCSWINSZ', '0x5414', '#']
+['TIOCVHANGUP', '0x5437', '#']
+['UBI_IOCATT', '_IOW', '(', 'UBI_CTRL_IOC_MAGIC', ',', '64', ',', 'struct', 'ubi_attach_req', ')', '/* Detach an MTD device */']
+['UBI_IOCDET', '_IOW', '(', 'UBI_CTRL_IOC_MAGIC', ',', '65', ',', '__s32', ')', '/* ioctl commands of UBI volume character devices */']
+['UBI_IOCEBCH', '_IOW', '(', 'UBI_VOL_IOC_MAGIC', ',', '2', ',', '__s32', ')', '/* Map LEB command */']
+['UBI_IOCEBER', '_IOW', '(', 'UBI_VOL_IOC_MAGIC', ',', '1', ',', '__s32', ')', '/* Atomic LEB change command */']
+['UBI_IOCEBISMAP', '_IOR', '(', 'UBI_VOL_IOC_MAGIC', ',', '5', ',', '__s32', ')', '/* Set an UBI volume property */']
+['UBI_IOCEBMAP', '_IOW', '(', 'UBI_VOL_IOC_MAGIC', ',', '3', ',', 'struct', 'ubi_map_req', ')', '/* Unmap LEB command */']
+['UBI_IOCEBUNMAP', '_IOW', '(', 'UBI_VOL_IOC_MAGIC', ',', '4', ',', '__s32', ')', '/* Check if LEB is mapped command */']
+['UBI_IOCMKVOL', '_IOW', '(', 'UBI_IOC_MAGIC', ',', '0', ',', 'struct', 'ubi_mkvol_req', ')', '/* Remove an UBI volume */']
+['UBI_IOCRMVOL', '_IOW', '(', 'UBI_IOC_MAGIC', ',', '1', ',', '__s32', ')', '/* Re-size an UBI volume */']
+['UBI_IOCRNVOL', '_IOW', '(', 'UBI_IOC_MAGIC', ',', '3', ',', 'struct', 'ubi_rnvol_req', ')', '/* ioctl commands of the UBI control character device */']
+['UBI_IOCRSVOL', '_IOW', '(', 'UBI_IOC_MAGIC', ',', '2', ',', 'struct', 'ubi_rsvol_req', ')', '/* Re-name volumes */']
+['UBI_IOCSETVOLPROP', '_IOW', '(', 'UBI_VOL_IOC_MAGIC', ',', '6', ',', 'struct', 'ubi_set_vol_prop_req', ')', '/* Create a R/O block device on top of an UBI volume */']
+['UBI_IOCVOLCRBLK', '_IOW', '(', 'UBI_VOL_IOC_MAGIC', ',', '7', ',', 'struct', 'ubi_blkcreate_req', ')', '/* Remove the R/O block device */']
+['UBI_IOCVOLRMBLK', '_IO', '(', 'UBI_VOL_IOC_MAGIC', ',', '8', ')', '/* Maximum MTD device name length supported by UBI */']
+['UBI_IOCVOLUP', '_IOW', '(', 'UBI_VOL_IOC_MAGIC', ',', '0', ',', '__s64', ')', '/* LEB erasure command, used for debugging, disabled by default */']
+['USBDEVFS_IOCTL', '_IOWR', '(', "'U'", ',', '18', ',', 'struct', 'usbdevfs_ioctl', ')', '#']
+['USBDEVFS_IOCTL32', '_IOWR', '(', "'U'", ',', '18', ',', 'struct', 'usbdevfs_ioctl32', ')', '#']
+['USBTMC_IOCTL_ABORT_BULK_IN', '_IO', '(', 'USBTMC_IOC_NR', ',', '4', ')', '#']
+['USBTMC_IOCTL_ABORT_BULK_OUT', '_IO', '(', 'USBTMC_IOC_NR', ',', '3', ')', '#']
+['USBTMC_IOCTL_CLEAR', '_IO', '(', 'USBTMC_IOC_NR', ',', '2', ')', '#']
+['USBTMC_IOCTL_CLEAR_IN_HALT', '_IO', '(', 'USBTMC_IOC_NR', ',', '7', ')', '#']
+['USBTMC_IOCTL_CLEAR_OUT_HALT', '_IO', '(', 'USBTMC_IOC_NR', ',', '6', ')', '#']
+['USBTMC_IOCTL_INDICATOR_PULSE', '_IO', '(', 'USBTMC_IOC_NR', ',', '1', ')', '#']
+['UVCIOC_CTRL_MAP', '_IOWR', '(', "'u'", ',', '0x20', ',', 'struct', 'uvc_xu_control_mapping', ')', '#']
+['UVCIOC_CTRL_QUERY', '_IOWR', '(', "'u'", ',', '0x21', ',', 'struct', 'uvc_xu_control_query', ')', '#']
+['VFAT_IOCTL_READDIR_BOTH', '_IOR', '(', "'r'", ',', '1', ',', 'struct', '__fat_dirent', '[', '2', ']', ')', '#']
+['VFAT_IOCTL_READDIR_SHORT', '_IOR', '(', "'r'", ',', '2', ',', 'struct', '__fat_dirent', '[', '2', ']', ')', "/* <linux/videotext.h> has used 0x72 ('r') in collision, so skip a few */"]
+['VIDIOC_CREATE_BUFS', '_IOWR', '(', "'V'", ',', '92', ',', 'struct', 'v4l2_create_buffers', ')', '#']
+['VIDIOC_CROPCAP', '_IOWR', '(', "'V'", ',', '58', ',', 'struct', 'v4l2_cropcap', ')', '#']
+['VIDIOC_DBG_G_CHIP_INFO', '_IOWR', '(', "'V'", ',', '102', ',', 'struct', 'v4l2_dbg_chip_info', ')', '#']
+['VIDIOC_DBG_G_REGISTER', '_IOWR', '(', "'V'", ',', '80', ',', 'struct', 'v4l2_dbg_register', ')', '#']
+['VIDIOC_DBG_S_REGISTER', '_IOW', '(', "'V'", ',', '79', ',', 'struct', 'v4l2_dbg_register', ')', '#']
+['VIDIOC_DECODER_CMD', '_IOWR', '(', "'V'", ',', '96', ',', 'struct', 'v4l2_decoder_cmd', ')', '#']
+['VIDIOC_DQBUF', '_IOWR', '(', "'V'", ',', '17', ',', 'struct', 'v4l2_buffer', ')', '#']
+['VIDIOC_DQEVENT', '_IOR', '(', "'V'", ',', '89', ',', 'struct', 'v4l2_event', ')', '#']
+['VIDIOC_DV_TIMINGS_CAP', '_IOWR', '(', "'V'", ',', '100', ',', 'struct', 'v4l2_dv_timings_cap', ')', '/* Experimental, this ioctl may change over the next couple of kernel\n versions. */']
+['VIDIOC_ENCODER_CMD', '_IOWR', '(', "'V'", ',', '77', ',', 'struct', 'v4l2_encoder_cmd', ')', '#']
+['VIDIOC_ENUMAUDIO', '_IOWR', '(', "'V'", ',', '65', ',', 'struct', 'v4l2_audio', ')', '#']
+['VIDIOC_ENUMAUDOUT', '_IOWR', '(', "'V'", ',', '66', ',', 'struct', 'v4l2_audioout', ')', '#']
+['VIDIOC_ENUMINPUT', '_IOWR', '(', "'V'", ',', '26', ',', 'struct', 'v4l2_input', ')', '#']
+['VIDIOC_ENUMOUTPUT', '_IOWR', '(', "'V'", ',', '48', ',', 'struct', 'v4l2_output', ')', '#']
+['VIDIOC_ENUMSTD', '_IOWR', '(', "'V'", ',', '25', ',', 'struct', 'v4l2_standard', ')', '#']
+['VIDIOC_ENUM_DV_TIMINGS', '_IOWR', '(', "'V'", ',', '98', ',', 'struct', 'v4l2_enum_dv_timings', ')', '#']
+['VIDIOC_ENUM_FMT', '_IOWR', '(', "'V'", ',', '2', ',', 'struct', 'v4l2_fmtdesc', ')', '#']
+['VIDIOC_ENUM_FRAMEINTERVALS', '_IOWR', '(', "'V'", ',', '75', ',', 'struct', 'v4l2_frmivalenum', ')', '#']
+['VIDIOC_ENUM_FRAMESIZES', '_IOWR', '(', "'V'", ',', '74', ',', 'struct', 'v4l2_frmsizeenum', ')', '#']
+['VIDIOC_ENUM_FREQ_BANDS', '_IOWR', '(', "'V'", ',', '101', ',', 'struct', 'v4l2_frequency_band', ')', '/* Experimental, meant for debugging, testing and internal use.\n Never use these in applications! */']
+['VIDIOC_EXPBUF', '_IOWR', '(', "'V'", ',', '16', ',', 'struct', 'v4l2_exportbuffer', ')', '#']
+['VIDIOC_G_AUDIO', '_IOR', '(', "'V'", ',', '33', ',', 'struct', 'v4l2_audio', ')', '#']
+['VIDIOC_G_AUDOUT', '_IOR', '(', "'V'", ',', '49', ',', 'struct', 'v4l2_audioout', ')', '#']
+['VIDIOC_G_CROP', '_IOWR', '(', "'V'", ',', '59', ',', 'struct', 'v4l2_crop', ')', '#']
+['VIDIOC_G_CTRL', '_IOWR', '(', "'V'", ',', '27', ',', 'struct', 'v4l2_control', ')', '#']
+['VIDIOC_G_DV_TIMINGS', '_IOWR', '(', "'V'", ',', '88', ',', 'struct', 'v4l2_dv_timings', ')', '#']
+['VIDIOC_G_EDID', '_IOWR', '(', "'V'", ',', '40', ',', 'struct', 'v4l2_edid', ')', '#']
+['VIDIOC_G_ENC_INDEX', '_IOR', '(', "'V'", ',', '76', ',', 'struct', 'v4l2_enc_idx', ')', '#']
+['VIDIOC_G_EXT_CTRLS', '_IOWR', '(', "'V'", ',', '71', ',', 'struct', 'v4l2_ext_controls', ')', '#']
+['VIDIOC_G_FBUF', '_IOR', '(', "'V'", ',', '10', ',', 'struct', 'v4l2_framebuffer', ')', '#']
+['VIDIOC_G_FMT', '_IOWR', '(', "'V'", ',', '4', ',', 'struct', 'v4l2_format', ')', '#']
+['VIDIOC_G_FREQUENCY', '_IOWR', '(', "'V'", ',', '56', ',', 'struct', 'v4l2_frequency', ')', '#']
+['VIDIOC_G_INPUT', '_IOR', '(', "'V'", ',', '38', ',', 'int', ')', '#']
+['VIDIOC_G_JPEGCOMP', '_IOR', '(', "'V'", ',', '61', ',', 'struct', 'v4l2_jpegcompression', ')', '#']
+['VIDIOC_G_MODULATOR', '_IOWR', '(', "'V'", ',', '54', ',', 'struct', 'v4l2_modulator', ')', '#']
+['VIDIOC_G_OUTPUT', '_IOR', '(', "'V'", ',', '46', ',', 'int', ')', '#']
+['VIDIOC_G_PARM', '_IOWR', '(', "'V'", ',', '21', ',', 'struct', 'v4l2_streamparm', ')', '#']
+['VIDIOC_G_PRIORITY', '_IOR', '(', "'V'", ',', '67', ',', '__u32', ')', '/* enum v4l2_priority */']
+['VIDIOC_G_SELECTION', '_IOWR', '(', "'V'", ',', '94', ',', 'struct', 'v4l2_selection', ')', '#']
+['VIDIOC_G_SLICED_VBI_CAP', '_IOWR', '(', "'V'", ',', '69', ',', 'struct', 'v4l2_sliced_vbi_cap', ')', '#']
+['VIDIOC_G_STD', '_IOR', '(', "'V'", ',', '23', ',', 'v4l2_std_id', ')', '#']
+['VIDIOC_G_TUNER', '_IOWR', '(', "'V'", ',', '29', ',', 'struct', 'v4l2_tuner', ')', '#']
+['VIDIOC_LOG_STATUS', '_IO', '(', "'V'", ',', '70', ')', '#']
+['VIDIOC_OMAP3ISP_AEWB_CFG', '_IOWR', '(', "'V'", ',', 'BASE_VIDIOC_PRIVATE', '+', '3', ',', 'struct', 'omap3isp_h3a_aewb_config', ')', '#']
+['VIDIOC_OMAP3ISP_AF_CFG', '_IOWR', '(', "'V'", ',', 'BASE_VIDIOC_PRIVATE', '+', '5', ',', 'struct', 'omap3isp_h3a_af_config', ')', '#']
+['VIDIOC_OMAP3ISP_CCDC_CFG', '_IOWR', '(', "'V'", ',', 'BASE_VIDIOC_PRIVATE', '+', '1', ',', 'struct', 'omap3isp_ccdc_update_config', ')', '#']
+['VIDIOC_OMAP3ISP_HIST_CFG', '_IOWR', '(', "'V'", ',', 'BASE_VIDIOC_PRIVATE', '+', '4', ',', 'struct', 'omap3isp_hist_config', ')', '#']
+['VIDIOC_OMAP3ISP_PRV_CFG', '_IOWR', '(', "'V'", ',', 'BASE_VIDIOC_PRIVATE', '+', '2', ',', 'struct', 'omap3isp_prev_update_config', ')', '#']
+['VIDIOC_OMAP3ISP_STAT_EN', '_IOWR', '(', "'V'", ',', 'BASE_VIDIOC_PRIVATE', '+', '7', ',', 'unsigned', 'long', ')', '/*\n * Events\n *\n * V4L2_EVENT_OMAP3ISP_AEWB: AEWB statistics data ready\n * V4L2_EVENT_OMAP3ISP_AF: AF statistics data ready\n * V4L2_EVENT_OMAP3ISP_HIST: Histogram statistics data ready\n */']
+['VIDIOC_OMAP3ISP_STAT_REQ', '_IOWR', '(', "'V'", ',', 'BASE_VIDIOC_PRIVATE', '+', '6', ',', 'struct', 'omap3isp_stat_data', ')', '#']
+['VIDIOC_OVERLAY', '_IOW', '(', "'V'", ',', '14', ',', 'int', ')', '#']
+['VIDIOC_PREPARE_BUF', '_IOWR', '(', "'V'", ',', '93', ',', 'struct', 'v4l2_buffer', ')', '/* Experimental selection API */']
+['VIDIOC_QBUF', '_IOWR', '(', "'V'", ',', '15', ',', 'struct', 'v4l2_buffer', ')', '#']
+['VIDIOC_QUERYBUF', '_IOWR', '(', "'V'", ',', '9', ',', 'struct', 'v4l2_buffer', ')', '#']
+['VIDIOC_QUERYCAP', '_IOR', '(', "'V'", ',', '0', ',', 'struct', 'v4l2_capability', ')', '#']
+['VIDIOC_QUERYCTRL', '_IOWR', '(', "'V'", ',', '36', ',', 'struct', 'v4l2_queryctrl', ')', '#']
+['VIDIOC_QUERYMENU', '_IOWR', '(', "'V'", ',', '37', ',', 'struct', 'v4l2_querymenu', ')', '#']
+['VIDIOC_QUERYSTD', '_IOR', '(', "'V'", ',', '63', ',', 'v4l2_std_id', ')', '#']
+['VIDIOC_QUERY_DV_TIMINGS', '_IOR', '(', "'V'", ',', '99', ',', 'struct', 'v4l2_dv_timings', ')', '#']
+['VIDIOC_QUERY_EXT_CTRL', '_IOWR', '(', "'V'", ',', '103', ',', 'struct', 'v4l2_query_ext_ctrl', ')', '/* Reminder: when adding new ioctls please add support for them to\n drivers/media/video/v4l2-compat-ioctl32.c as well! */']
+['VIDIOC_REQBUFS', '_IOWR', '(', "'V'", ',', '8', ',', 'struct', 'v4l2_requestbuffers', ')', '#']
+['VIDIOC_RESERVED', '_IO', '(', "'V'", ',', '1', ')', '#']
+['VIDIOC_STREAMOFF', '_IOW', '(', "'V'", ',', '19', ',', 'int', ')', '#']
+['VIDIOC_STREAMON', '_IOW', '(', "'V'", ',', '18', ',', 'int', ')', '#']
+['VIDIOC_SUBDEV_DV_TIMINGS_CAP', '_IOWR', '(', "'V'", ',', '100', ',', 'struct', 'v4l2_dv_timings_cap', ')', '#']
+['VIDIOC_SUBDEV_ENUM_DV_TIMINGS', '_IOWR', '(', "'V'", ',', '98', ',', 'struct', 'v4l2_enum_dv_timings', ')', '#']
+['VIDIOC_SUBDEV_ENUM_FRAME_INTERVAL', '_IOWR', '(', "'V'", ',', '75', ',', 'struct', 'v4l2_subdev_frame_interval_enum', ')', '#']
+['VIDIOC_SUBDEV_ENUM_FRAME_SIZE', '_IOWR', '(', "'V'", ',', '74', ',', 'struct', 'v4l2_subdev_frame_size_enum', ')', '#']
+['VIDIOC_SUBDEV_ENUM_MBUS_CODE', '_IOWR', '(', "'V'", ',', '2', ',', 'struct', 'v4l2_subdev_mbus_code_enum', ')', '#']
+['VIDIOC_SUBDEV_G_CROP', '_IOWR', '(', "'V'", ',', '59', ',', 'struct', 'v4l2_subdev_crop', ')', '#']
+['VIDIOC_SUBDEV_G_DV_TIMINGS', '_IOWR', '(', "'V'", ',', '88', ',', 'struct', 'v4l2_dv_timings', ')', '#']
+['VIDIOC_SUBDEV_G_EDID', '_IOWR', '(', "'V'", ',', '40', ',', 'struct', 'v4l2_edid', ')', '#']
+['VIDIOC_SUBDEV_G_FMT', '_IOWR', '(', "'V'", ',', '4', ',', 'struct', 'v4l2_subdev_format', ')', '#']
+['VIDIOC_SUBDEV_G_FRAME_INTERVAL', '_IOWR', '(', "'V'", ',', '21', ',', 'struct', 'v4l2_subdev_frame_interval', ')', '#']
+['VIDIOC_SUBDEV_G_SELECTION', '_IOWR', '(', "'V'", ',', '61', ',', 'struct', 'v4l2_subdev_selection', ')', '#']
+['VIDIOC_SUBDEV_QUERY_DV_TIMINGS', '_IOR', '(', "'V'", ',', '99', ',', 'struct', 'v4l2_dv_timings', ')', '#']
+['VIDIOC_SUBDEV_S_CROP', '_IOWR', '(', "'V'", ',', '60', ',', 'struct', 'v4l2_subdev_crop', ')', '#']
+['VIDIOC_SUBDEV_S_DV_TIMINGS', '_IOWR', '(', "'V'", ',', '87', ',', 'struct', 'v4l2_dv_timings', ')', '#']
+['VIDIOC_SUBDEV_S_EDID', '_IOWR', '(', "'V'", ',', '41', ',', 'struct', 'v4l2_edid', ')', '#']
+['VIDIOC_SUBDEV_S_FMT', '_IOWR', '(', "'V'", ',', '5', ',', 'struct', 'v4l2_subdev_format', ')', '#']
+['VIDIOC_SUBDEV_S_FRAME_INTERVAL', '_IOWR', '(', "'V'", ',', '22', ',', 'struct', 'v4l2_subdev_frame_interval', ')', '#']
+['VIDIOC_SUBDEV_S_SELECTION', '_IOWR', '(', "'V'", ',', '62', ',', 'struct', 'v4l2_subdev_selection', ')', '/* The following ioctls are identical to the ioctls in videodev2.h */']
+['VIDIOC_SUBSCRIBE_EVENT', '_IOW', '(', "'V'", ',', '90', ',', 'struct', 'v4l2_event_subscription', ')', '#']
+['VIDIOC_S_AUDIO', '_IOW', '(', "'V'", ',', '34', ',', 'struct', 'v4l2_audio', ')', '#']
+['VIDIOC_S_AUDOUT', '_IOW', '(', "'V'", ',', '50', ',', 'struct', 'v4l2_audioout', ')', '#']
+['VIDIOC_S_CROP', '_IOW', '(', "'V'", ',', '60', ',', 'struct', 'v4l2_crop', ')', '#']
+['VIDIOC_S_CTRL', '_IOWR', '(', "'V'", ',', '28', ',', 'struct', 'v4l2_control', ')', '#']
+['VIDIOC_S_DV_TIMINGS', '_IOWR', '(', "'V'", ',', '87', ',', 'struct', 'v4l2_dv_timings', ')', '#']
+['VIDIOC_S_EDID', '_IOWR', '(', "'V'", ',', '41', ',', 'struct', 'v4l2_edid', ')', '#']
+['VIDIOC_S_EXT_CTRLS', '_IOWR', '(', "'V'", ',', '72', ',', 'struct', 'v4l2_ext_controls', ')', '#']
+['VIDIOC_S_FBUF', '_IOW', '(', "'V'", ',', '11', ',', 'struct', 'v4l2_framebuffer', ')', '#']
+['VIDIOC_S_FMT', '_IOWR', '(', "'V'", ',', '5', ',', 'struct', 'v4l2_format', ')', '#']
+['VIDIOC_S_FREQUENCY', '_IOW', '(', "'V'", ',', '57', ',', 'struct', 'v4l2_frequency', ')', '#']
+['VIDIOC_S_HW_FREQ_SEEK', '_IOW', '(', "'V'", ',', '82', ',', 'struct', 'v4l2_hw_freq_seek', ')', '#']
+['VIDIOC_S_INPUT', '_IOWR', '(', "'V'", ',', '39', ',', 'int', ')', '#']
+['VIDIOC_S_JPEGCOMP', '_IOW', '(', "'V'", ',', '62', ',', 'struct', 'v4l2_jpegcompression', ')', '#']
+['VIDIOC_S_MODULATOR', '_IOW', '(', "'V'", ',', '55', ',', 'struct', 'v4l2_modulator', ')', '#']
+['VIDIOC_S_OUTPUT', '_IOWR', '(', "'V'", ',', '47', ',', 'int', ')', '#']
+['VIDIOC_S_PARM', '_IOWR', '(', "'V'", ',', '22', ',', 'struct', 'v4l2_streamparm', ')', '#']
+['VIDIOC_S_PRIORITY', '_IOW', '(', "'V'", ',', '68', ',', '__u32', ')', '/* enum v4l2_priority */']
+['VIDIOC_S_SELECTION', '_IOWR', '(', "'V'", ',', '95', ',', 'struct', 'v4l2_selection', ')', '/* Experimental, these two ioctls may change over the next couple of kernel\n versions. */']
+['VIDIOC_S_STD', '_IOW', '(', "'V'", ',', '24', ',', 'v4l2_std_id', ')', '#']
+['VIDIOC_S_TUNER', '_IOW', '(', "'V'", ',', '30', ',', 'struct', 'v4l2_tuner', ')', '#']
+['VIDIOC_TRY_DECODER_CMD', '_IOWR', '(', "'V'", ',', '97', ',', 'struct', 'v4l2_decoder_cmd', ')', '/* Experimental, these three ioctls may change over the next couple of kernel\n versions. */']
+['VIDIOC_TRY_ENCODER_CMD', '_IOWR', '(', "'V'", ',', '78', ',', 'struct', 'v4l2_encoder_cmd', ')', '/* Experimental, meant for debugging, testing and internal use.\n Only implemented if CONFIG_VIDEO_ADV_DEBUG is defined.\n You must be root to use these ioctls. Never use these in applications! */']
+['VIDIOC_TRY_EXT_CTRLS', '_IOWR', '(', "'V'", ',', '73', ',', 'struct', 'v4l2_ext_controls', ')', '#']
+['VIDIOC_TRY_FMT', '_IOWR', '(', "'V'", ',', '64', ',', 'struct', 'v4l2_format', ')', '#']
+['VIDIOC_UNSUBSCRIBE_EVENT', '_IOW', '(', "'V'", ',', '91', ',', 'struct', 'v4l2_event_subscription', ')', '/* Experimental, the below two ioctls may change over the next couple of kernel\n versions */']
+['WDIOC_GETBOOTSTATUS', '_IOR', '(', 'WATCHDOG_IOCTL_BASE', ',', '2', ',', 'int', ')', '#']
+['WDIOC_GETPRETIMEOUT', '_IOR', '(', 'WATCHDOG_IOCTL_BASE', ',', '9', ',', 'int', ')', '#']
+['WDIOC_GETSTATUS', '_IOR', '(', 'WATCHDOG_IOCTL_BASE', ',', '1', ',', 'int', ')', '#']
+['WDIOC_GETSUPPORT', '_IOR', '(', 'WATCHDOG_IOCTL_BASE', ',', '0', ',', 'struct', 'watchdog_info', ')', '#']
+['WDIOC_GETTEMP', '_IOR', '(', 'WATCHDOG_IOCTL_BASE', ',', '3', ',', 'int', ')', '#']
+['WDIOC_GETTIMELEFT', '_IOR', '(', 'WATCHDOG_IOCTL_BASE', ',', '10', ',', 'int', ')', '#']
+['WDIOC_GETTIMEOUT', '_IOR', '(', 'WATCHDOG_IOCTL_BASE', ',', '7', ',', 'int', ')', '#']
+['WDIOC_KEEPALIVE', '_IOR', '(', 'WATCHDOG_IOCTL_BASE', ',', '5', ',', 'int', ')', '#']
+['WDIOC_SETOPTIONS', '_IOR', '(', 'WATCHDOG_IOCTL_BASE', ',', '4', ',', 'int', ')', '#']
+['WDIOC_SETPRETIMEOUT', '_IOWR', '(', 'WATCHDOG_IOCTL_BASE', ',', '8', ',', 'int', ')', '#']
+['WDIOC_SETTIMEOUT', '_IOWR', '(', 'WATCHDOG_IOCTL_BASE', ',', '6', ',', 'int', ')', '#']
+['X86_IOC_RDMSR_REGS', '_IOWR', '(', "'c'", ',', '0xA0', ',', '__u32', '[', '8', ']', ')', '#']
+['X86_IOC_WRMSR_REGS', '_IOWR', '(', "'c'", ',', '0xA1', ',', '__u32', '[', '8', ']', ')', '#']
+['XFS_IOC_ALLOCSP', '_IOW', '(', "'X'", ',', '10', ',', 'struct', 'xfs_flock64', ')', '#']
+['XFS_IOC_ALLOCSP64', '_IOW', '(', "'X'", ',', '36', ',', 'struct', 'xfs_flock64', ')', '#']
+['XFS_IOC_ATTRLIST_BY_HANDLE', '_IOW', '(', "'X'", ',', '122', ',', 'struct', 'xfs_fsop_attrlist_handlereq', ')', '#']
+['XFS_IOC_ATTRMULTI_BY_HANDLE', '_IOW', '(', "'X'", ',', '123', ',', 'struct', 'xfs_fsop_attrmulti_handlereq', ')', '#']
+['XFS_IOC_DIOINFO', '_IOR', '(', "'X'", ',', '30', ',', 'struct', 'dioattr', ')', '#']
+['XFS_IOC_ERROR_CLEARALL', '_IOW', '(', "'X'", ',', '117', ',', 'struct', 'xfs_error_injection', ')', '/*\tXFS_IOC_ATTRCTL_BY_HANDLE -- deprecated 118\t */']
+['XFS_IOC_ERROR_INJECTION', '_IOW', '(', "'X'", ',', '116', ',', 'struct', 'xfs_error_injection', ')', '#']
+['XFS_IOC_FD_TO_HANDLE', '_IOWR', '(', "'X'", ',', '106', ',', 'struct', 'xfs_fsop_handlereq', ')', '#']
+['XFS_IOC_FREESP', '_IOW', '(', "'X'", ',', '11', ',', 'struct', 'xfs_flock64', ')', '#']
+['XFS_IOC_FREESP64', '_IOW', '(', "'X'", ',', '37', ',', 'struct', 'xfs_flock64', ')', '#']
+['XFS_IOC_FREEZE', '_IOWR', '(', "'X'", ',', '119', ',', 'int', ')', '#']
+['XFS_IOC_FREE_EOFBLOCKS', '_IOR', '(', "'X'", ',', '58', ',', 'struct', 'xfs_fs_eofblocks', ')', "/*\n * ioctl commands that replace IRIX syssgi()'s\n */"]
+['XFS_IOC_FSBULKSTAT', '_IOWR', '(', "'X'", ',', '101', ',', 'struct', 'xfs_fsop_bulkreq', ')', '#']
+['XFS_IOC_FSBULKSTAT_SINGLE', '_IOWR', '(', "'X'", ',', '102', ',', 'struct', 'xfs_fsop_bulkreq', ')', '#']
+['XFS_IOC_FSCOUNTS', '_IOR', '(', "'X'", ',', '113', ',', 'struct', 'xfs_fsop_counts', ')', '#']
+['XFS_IOC_FSGEOMETRY', '_IOR', '(', "'X'", ',', '124', ',', 'struct', 'xfs_fsop_geom', ')', '#']
+['XFS_IOC_FSGEOMETRY_V1', '_IOR', '(', "'X'", ',', '100', ',', 'struct', 'xfs_fsop_geom_v1', ')', '#']
+['XFS_IOC_FSGETXATTR', '_IOR', '(', "'X'", ',', '31', ',', 'struct', 'fsxattr', ')', '#']
+['XFS_IOC_FSGETXATTRA', '_IOR', '(', "'X'", ',', '45', ',', 'struct', 'fsxattr', ')', '/*\tXFS_IOC_SETBIOSIZE ---- deprecated 46\t */']
+['XFS_IOC_FSGROWFSDATA', '_IOW', '(', "'X'", ',', '110', ',', 'struct', 'xfs_growfs_data', ')', '#']
+['XFS_IOC_FSGROWFSLOG', '_IOW', '(', "'X'", ',', '111', ',', 'struct', 'xfs_growfs_log', ')', '#']
+['XFS_IOC_FSGROWFSRT', '_IOW', '(', "'X'", ',', '112', ',', 'struct', 'xfs_growfs_rt', ')', '#']
+['XFS_IOC_FSINUMBERS', '_IOWR', '(', "'X'", ',', '103', ',', 'struct', 'xfs_fsop_bulkreq', ')', '#']
+['XFS_IOC_FSSETDM', '_IOW', '(', "'X'", ',', '39', ',', 'struct', 'fsdmidata', ')', '#']
+['XFS_IOC_FSSETDM_BY_HANDLE', '_IOW', '(', "'X'", ',', '121', ',', 'struct', 'xfs_fsop_setdm_handlereq', ')', '#']
+['XFS_IOC_FSSETXATTR', '_IOW', '(', "'X'", ',', '32', ',', 'struct', 'fsxattr', ')', '#']
+['XFS_IOC_GETBMAP', '_IOWR', '(', "'X'", ',', '38', ',', 'struct', 'getbmap', ')', '#']
+['XFS_IOC_GETBMAPA', '_IOWR', '(', "'X'", ',', '44', ',', 'struct', 'getbmap', ')', '#']
+['XFS_IOC_GETBMAPX', '_IOWR', '(', "'X'", ',', '56', ',', 'struct', 'getbmap', ')', '#']
+['XFS_IOC_GETVERSION', '_IOR', '(', "'v'", ',', '1', ',', 'long', ')', '#']
+['XFS_IOC_GETXFLAGS', '_IOR', '(', "'f'", ',', '1', ',', 'long', ')', '#']
+['XFS_IOC_GET_RESBLKS', '_IOR', '(', "'X'", ',', '115', ',', 'struct', 'xfs_fsop_resblks', ')', '#']
+['XFS_IOC_GOINGDOWN', '_IOR', '(', "'X'", ',', '125', ',', '__uint32_t', ')', '/*\tXFS_IOC_GETFSUUID ---------- deprecated 140\t */']
+['XFS_IOC_OPEN_BY_HANDLE', '_IOWR', '(', "'X'", ',', '107', ',', 'struct', 'xfs_fsop_handlereq', ')', '#']
+['XFS_IOC_PATH_TO_FSHANDLE', '_IOWR', '(', "'X'", ',', '104', ',', 'struct', 'xfs_fsop_handlereq', ')', '#']
+['XFS_IOC_PATH_TO_HANDLE', '_IOWR', '(', "'X'", ',', '105', ',', 'struct', 'xfs_fsop_handlereq', ')', '#']
+['XFS_IOC_READLINK_BY_HANDLE', '_IOWR', '(', "'X'", ',', '108', ',', 'struct', 'xfs_fsop_handlereq', ')', '#']
+['XFS_IOC_RESVSP', '_IOW', '(', "'X'", ',', '40', ',', 'struct', 'xfs_flock64', ')', '#']
+['XFS_IOC_RESVSP64', '_IOW', '(', "'X'", ',', '42', ',', 'struct', 'xfs_flock64', ')', '#']
+['XFS_IOC_SETXFLAGS', '_IOW', '(', "'f'", ',', '2', ',', 'long', ')', '#']
+['XFS_IOC_SET_RESBLKS', '_IOWR', '(', "'X'", ',', '114', ',', 'struct', 'xfs_fsop_resblks', ')', '#']
+['XFS_IOC_SWAPEXT', '_IOWR', '(', "'X'", ',', '109', ',', 'struct', 'xfs_swapext', ')', '#']
+['XFS_IOC_THAW', '_IOWR', '(', "'X'", ',', '120', ',', 'int', ')', '#']
+['XFS_IOC_UNRESVSP', '_IOW', '(', "'X'", ',', '41', ',', 'struct', 'xfs_flock64', ')', '#']
+['XFS_IOC_UNRESVSP64', '_IOW', '(', "'X'", ',', '43', ',', 'struct', 'xfs_flock64', ')', '#']
+['XFS_IOC_ZERO_RANGE', '_IOW', '(', "'X'", ',', '57', ',', 'struct', 'xfs_flock64', ')', '#']
+['FIOCLEX', '0x5451', '#']
diff --git a/src/sys/ioctl/etc/x86_64/manually_found b/src/sys/ioctl/etc/x86_64/manually_found
new file mode 100644
index 00000000..5865f4f3
--- /dev/null
+++ b/src/sys/ioctl/etc/x86_64/manually_found
@@ -0,0 +1,5 @@
+['CZ_NBOARDS', '(', 'CZIOC', '|', '0xfa', ')', '#']
+['CZ_BOOT_START', '(', 'CZIOC', '|', '0xfb', ')', '#']
+['CZ_BOOT_DATA', '(', 'CZIOC', '|', '0xfc', ')', '#']
+['CZ_BOOT_END', '(', 'CZIOC', '|', '0xfd', ')', '#']
+['CZ_TEST', '(', 'CZIOC', '|', '0xfe', ')', '#']
diff --git a/src/sys/ioctl/mod.rs b/src/sys/ioctl/mod.rs
new file mode 100644
index 00000000..8839e934
--- /dev/null
+++ b/src/sys/ioctl/mod.rs
@@ -0,0 +1,116 @@
+//! Provide helpers for making ioctl system calls
+//!
+//! # Overview of IOCTLs
+//!
+//! The `ioctl` system call is a widely support system
+//! call on *nix systems providing access to functions
+//! and data that do not fit nicely into the standard
+//! read and write operations on a file itself. It is
+//! common to see ioctls used for the following purposes:
+//!
+//! * Provide read/write access to out-of-band data related
+//! to a device such as configuration (for instance, setting
+//! serial port options)
+//! * Provide a mechanism for performing full-duplex data
+//! transfers (for instance, xfer on SPI devices).
+//! * Provide access to control functions on a device (for example,
+//! on Linux you can send commands like pause, resume, and eject
+//! to the CDROM device.
+//! * Do whatever else the device driver creator thought made most sense.
+//!
+//! Ioctls are synchronous system calls and are similar to read and
+//! write calls in that regard.
+//!
+//! The prototype for the ioctl system call in libc is as follows:
+//!
+//! ```c
+//! int ioctl(int fd, unsigned long request, ...);
+//! ```
+//!
+//! Typically, an ioctl takes 3 parameters as arguments:
+//!
+//! 1. An open file descriptor, `fd`.
+//! 2. An device-dependennt request code or operation. This request
+//! code is referred to as `op` in this module.
+//! 3. Either a pointer to a location in memory or an integer. This
+//! number of pointer may either be used by the kernel or written
+//! to by the kernel depending on how the operation is documented
+//! to work.
+//!
+//! The `op` request code is essentially an arbitrary integer having
+//! a device-driver specific meaning. Over time, it proved difficult
+//! for various driver implementors to use this field sanely, so a
+//! convention with macros was introduced to the Linux Kernel that
+//! is used by most newer drivers. See
+//! https://github.com/torvalds/linux/blob/master/Documentation/ioctl/ioctl-number.txt
+//! for additional details. The macros exposed by the kernel for
+//! consumers are implemented in this module and may be used to
+//! instead of calls like `_IOC`, `_IO`, `_IOR`, and `_IOW`.
+//!
+//! # Interface Overview
+//!
+//! This ioctl module seeks to tame the ioctl beast by providing
+//! a set of safer (although not safe) functions
+//! implementing the most common ioctl access patterns.
+//!
+//! The most common access patterns for ioctls are as follows:
+//!
+//! 1. `read`: A pointer is provided to the kernel which is populated
+//! with a value containing the "result" of the operation. The
+//! result may be an integer or structure. The kernel may also
+//! read values from the provided pointer (usually a structure).
+//! 2. `write`: A pointer is provided to the kernel containing values
+//! that the kernel will read in order to perform the operation.
+//! 3. `execute`: The operation is passed to the kernel but no
+//! additional pointer is passed. The operation is enough
+//! and it either succeeds or results in an error.
+//!
+//! Where appropriate, versions of these interface function are provided
+//! taking either refernces or pointers. The pointer versions are
+//! necessary for cases (notably slices) where a reference cannot
+//! be generically cast to a pointer.
+
+#[cfg(any(target_os = "linux", target_os = "android"))]
+#[path = "platform/linux.rs"]
+#[macro_use]
+mod platform;
+
+#[cfg(target_os = "macos")]
+#[path = "platform/macos.rs"]
+#[macro_use]
+mod platform;
+
+#[cfg(target_os = "ios")]
+#[path = "platform/ios.rs"]
+#[macro_use]
+mod platform;
+
+#[cfg(target_os = "freebsd")]
+#[path = "platform/freebsd.rs"]
+#[macro_use]
+mod platform;
+
+#[cfg(target_os = "openbsd")]
+#[path = "platform/openbsd.rs"]
+#[macro_use]
+mod platform;
+
+#[cfg(target_os = "dragonfly")]
+#[path = "platform/dragonfly.rs"]
+#[macro_use]
+mod platform;
+
+pub use self::platform::*;
+
+// liblibc has the wrong decl for linux :| hack until #26809 lands.
+extern "C" {
+ #[doc(hidden)]
+ pub fn ioctl(fd: libc::c_int, req: libc::c_ulong, ...) -> libc::c_int;
+}
+
+/// A hack to get the macros to work nicely.
+#[doc(hidden)]
+pub use ::libc as libc;
+
+//#[cfg(not(target_os = "linux"))]
+//use platform_not_supported;
diff --git a/src/sys/ioctl/platform/dragonfly.rs b/src/sys/ioctl/platform/dragonfly.rs
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/sys/ioctl/platform/dragonfly.rs
diff --git a/src/sys/ioctl/platform/freebsd.rs b/src/sys/ioctl/platform/freebsd.rs
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/sys/ioctl/platform/freebsd.rs
diff --git a/src/sys/ioctl/platform/ios.rs b/src/sys/ioctl/platform/ios.rs
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/sys/ioctl/platform/ios.rs
diff --git a/src/sys/ioctl/platform/linux-generated-x86_64.rs b/src/sys/ioctl/platform/linux-generated-x86_64.rs
new file mode 100644
index 00000000..7663d8a0
--- /dev/null
+++ b/src/sys/ioctl/platform/linux-generated-x86_64.rs
@@ -0,0 +1,1005 @@
+// Initially generated by process_ioctls.py
+ioctl!(none apm_ioc_standby with b'A', 1);
+ioctl!(none apm_ioc_suspend with b'A', 2);
+// ioctl!(write btrfs_ioc_add_dev with BTRFS_IOCTL_MAGIC, 10; /*struct*/ btrfs_ioctl_vol_args);
+// ioctl!(write btrfs_ioc_balance with BTRFS_IOCTL_MAGIC, 12; /*struct*/ btrfs_ioctl_vol_args);
+ioctl!(write btrfs_ioc_balance_ctl with BTRFS_IOCTL_MAGIC, 33; ::libc::c_int);
+// ioctl!(read btrfs_ioc_balance_progress with BTRFS_IOCTL_MAGIC, 34; /*struct*/ btrfs_ioctl_balance_args);
+// ioctl!(readwrite btrfs_ioc_balance_v2 with BTRFS_IOCTL_MAGIC, 32; /*struct*/ btrfs_ioctl_balance_args);
+ioctl!(write btrfs_ioc_clone with BTRFS_IOCTL_MAGIC, 9; ::libc::c_int);
+// ioctl!(write btrfs_ioc_clone_range with BTRFS_IOCTL_MAGIC, 13; /*struct*/ btrfs_ioctl_clone_range_args);
+ioctl!(write btrfs_ioc_default_subvol with BTRFS_IOCTL_MAGIC, 19; u64);
+// ioctl!(write btrfs_ioc_defrag with BTRFS_IOCTL_MAGIC, 2; /*struct*/ btrfs_ioctl_vol_args);
+// ioctl!(write btrfs_ioc_defrag_range with BTRFS_IOCTL_MAGIC, 16; /*struct*/ btrfs_ioctl_defrag_range_args);
+// ioctl!(read btrfs_ioc_devices_ready with BTRFS_IOCTL_MAGIC, 39; /*struct*/ btrfs_ioctl_vol_args);
+// ioctl!(readwrite btrfs_ioc_dev_info with BTRFS_IOCTL_MAGIC, 30; /*struct*/ btrfs_ioctl_dev_info_args);
+// ioctl!(readwrite btrfs_ioc_dev_replace with BTRFS_IOCTL_MAGIC, 53; /*struct*/ btrfs_ioctl_dev_replace_args);
+// ioctl!(readwrite btrfs_ioc_file_extent_same with BTRFS_IOCTL_MAGIC, 54; /*struct*/ btrfs_ioctl_same_args);
+// ioctl!(read btrfs_ioc_fs_info with BTRFS_IOCTL_MAGIC, 31; /*struct*/ btrfs_ioctl_fs_info_args);
+// ioctl!(readwrite btrfs_ioc_get_dev_stats with BTRFS_IOCTL_MAGIC, 52; /*struct*/ btrfs_ioctl_get_dev_stats);
+// ioctl!(read btrfs_ioc_get_features with BTRFS_IOCTL_MAGIC, 57; /*struct*/ btrfs_ioctl_feature_flags);
+ioctl!(read btrfs_ioc_get_fslabel with BTRFS_IOCTL_MAGIC, 49; [::libc::c_char; BTRFS_LABEL_SIZE]);
+// ioctl!(read btrfs_ioc_get_supported_features with BTRFS_IOCTL_MAGIC, 57; [/*struct*/ btrfs_ioctl_feature_flags; 3]);
+// ioctl!(readwrite btrfs_ioc_ino_lookup with BTRFS_IOCTL_MAGIC, 18; /*struct*/ btrfs_ioctl_ino_lookup_args);
+// ioctl!(readwrite btrfs_ioc_ino_paths with BTRFS_IOCTL_MAGIC, 35; /*struct*/ btrfs_ioctl_ino_path_args);
+// ioctl!(readwrite btrfs_ioc_logical_ino with BTRFS_IOCTL_MAGIC, 36; /*struct*/ btrfs_ioctl_ino_path_args);
+// ioctl!(write btrfs_ioc_qgroup_assign with BTRFS_IOCTL_MAGIC, 41; /*struct*/ btrfs_ioctl_qgroup_assign_args);
+// ioctl!(write btrfs_ioc_qgroup_create with BTRFS_IOCTL_MAGIC, 42; /*struct*/ btrfs_ioctl_qgroup_create_args);
+// ioctl!(read btrfs_ioc_qgroup_limit with BTRFS_IOCTL_MAGIC, 43; /*struct*/ btrfs_ioctl_qgroup_limit_args);
+// ioctl!(readwrite btrfs_ioc_quota_ctl with BTRFS_IOCTL_MAGIC, 40; /*struct*/ btrfs_ioctl_quota_ctl_args);
+// ioctl!(write btrfs_ioc_quota_rescan with BTRFS_IOCTL_MAGIC, 44; /*struct*/ btrfs_ioctl_quota_rescan_args);
+// ioctl!(read btrfs_ioc_quota_rescan_status with BTRFS_IOCTL_MAGIC, 45; /*struct*/ btrfs_ioctl_quota_rescan_args);
+ioctl!(none btrfs_ioc_quota_rescan_wait with BTRFS_IOCTL_MAGIC, 46);
+// ioctl!(write btrfs_ioc_resize with BTRFS_IOCTL_MAGIC, 3; /*struct*/ btrfs_ioctl_vol_args);
+// ioctl!(write btrfs_ioc_rm_dev with BTRFS_IOCTL_MAGIC, 11; /*struct*/ btrfs_ioctl_vol_args);
+// ioctl!(write btrfs_ioc_scan_dev with BTRFS_IOCTL_MAGIC, 4; /*struct*/ btrfs_ioctl_vol_args);
+// ioctl!(readwrite btrfs_ioc_scrub with BTRFS_IOCTL_MAGIC, 27; /*struct*/ btrfs_ioctl_scrub_args);
+ioctl!(none btrfs_ioc_scrub_cancel with BTRFS_IOCTL_MAGIC, 28);
+// ioctl!(readwrite btrfs_ioc_scrub_progress with BTRFS_IOCTL_MAGIC, 29; /*struct*/ btrfs_ioctl_scrub_args);
+// ioctl!(write btrfs_ioc_send with BTRFS_IOCTL_MAGIC, 38; /*struct*/ btrfs_ioctl_send_args);
+// ioctl!(write btrfs_ioc_set_features with BTRFS_IOCTL_MAGIC, 57; [/*struct*/ btrfs_ioctl_feature_flags; 2]);
+ioctl!(write btrfs_ioc_set_fslabel with BTRFS_IOCTL_MAGIC, 50; [::libc::c_char; BTRFS_LABEL_SIZE]);
+// ioctl!(readwrite btrfs_ioc_set_received_subvol with BTRFS_IOCTL_MAGIC, 37; /*struct*/ btrfs_ioctl_received_subvol_args);
+// ioctl!(write btrfs_ioc_snap_create with BTRFS_IOCTL_MAGIC, 1; /*struct*/ btrfs_ioctl_vol_args);
+// ioctl!(write btrfs_ioc_snap_create_v2 with BTRFS_IOCTL_MAGIC, 23; /*struct*/ btrfs_ioctl_vol_args_v2);
+// ioctl!(write btrfs_ioc_snap_destroy with BTRFS_IOCTL_MAGIC, 15; /*struct*/ btrfs_ioctl_vol_args);
+// ioctl!(readwrite btrfs_ioc_space_info with BTRFS_IOCTL_MAGIC, 20; /*struct*/ btrfs_ioctl_space_args);
+ioctl!(read btrfs_ioc_start_sync with BTRFS_IOCTL_MAGIC, 24; u64);
+// ioctl!(write btrfs_ioc_subvol_create with BTRFS_IOCTL_MAGIC, 14; /*struct*/ btrfs_ioctl_vol_args);
+// ioctl!(write btrfs_ioc_subvol_create_v2 with BTRFS_IOCTL_MAGIC, 24; /*struct*/ btrfs_ioctl_vol_args_v2);
+ioctl!(read btrfs_ioc_subvol_getflags with BTRFS_IOCTL_MAGIC, 25; u64);
+ioctl!(write btrfs_ioc_subvol_setflags with BTRFS_IOCTL_MAGIC, 26; u64);
+ioctl!(none btrfs_ioc_sync with BTRFS_IOCTL_MAGIC, 8);
+ioctl!(none btrfs_ioc_trans_end with BTRFS_IOCTL_MAGIC, 7);
+ioctl!(none btrfs_ioc_trans_start with BTRFS_IOCTL_MAGIC, 6);
+// ioctl!(readwrite btrfs_ioc_tree_search with BTRFS_IOCTL_MAGIC, 17; /*struct*/ btrfs_ioctl_search_args);
+// ioctl!(readwrite btrfs_ioc_tree_search_v2 with BTRFS_IOCTL_MAGIC, 17; /*struct*/ btrfs_ioctl_search_args_v2);
+ioctl!(write btrfs_ioc_wait_sync with BTRFS_IOCTL_MAGIC, 22; u64);
+ioctl!(none cm_iocardoff with CM_IOC_MAGIC, 4);
+// ioctl!(readwrite cm_iocgatr with CM_IOC_MAGIC, 1; *mut FIXME1<['atreq_t']>);
+ioctl!(read cm_iocgstatus with CM_IOC_MAGIC, 0; *mut ::libc::c_uchar);
+// ioctl!(write cm_iocspts with CM_IOC_MAGIC, 2; *mut FIXME1<['ptsreq_t']>);
+ioctl!(none cm_iocsrdr with CM_IOC_MAGIC, 3);
+ioctl!(read cxl_ioctl_get_process_element with CXL_MAGIC, 0x01; u32);
+// ioctl!(write cxl_ioctl_start_work with CXL_MAGIC, 0x00; /*struct*/ cxl_ioctl_start_work);
+// ioctl!(readwrite drm_ioctl_add_bufs with DRM_IOCTL_BASE, 0x16; /*struct*/ drm_buf_desc);
+// ioctl!(readwrite drm_ioctl_add_ctx with DRM_IOCTL_BASE, 0x20; /*struct*/ drm_ctx);
+// ioctl!(readwrite drm_ioctl_add_draw with DRM_IOCTL_BASE, 0x27; /*struct*/ drm_draw);
+// ioctl!(readwrite drm_ioctl_add_map with DRM_IOCTL_BASE, 0x15; /*struct*/ drm_map);
+ioctl!(none drm_ioctl_agp_acquire with DRM_IOCTL_BASE, 0x30);
+// ioctl!(readwrite drm_ioctl_agp_alloc with DRM_IOCTL_BASE, 0x34; /*struct*/ drm_agp_buffer);
+// ioctl!(write drm_ioctl_agp_bind with DRM_IOCTL_BASE, 0x36; /*struct*/ drm_agp_binding);
+// ioctl!(write drm_ioctl_agp_enable with DRM_IOCTL_BASE, 0x32; /*struct*/ drm_agp_mode);
+// ioctl!(write drm_ioctl_agp_free with DRM_IOCTL_BASE, 0x35; /*struct*/ drm_agp_buffer);
+// ioctl!(read drm_ioctl_agp_info with DRM_IOCTL_BASE, 0x33; /*struct*/ drm_agp_info);
+ioctl!(none drm_ioctl_agp_release with DRM_IOCTL_BASE, 0x31);
+// ioctl!(write drm_ioctl_agp_unbind with DRM_IOCTL_BASE, 0x37; /*struct*/ drm_agp_binding);
+// ioctl!(write drm_ioctl_auth_magic with DRM_IOCTL_BASE, 0x11; /*struct*/ drm_auth);
+// ioctl!(readwrite drm_ioctl_block with DRM_IOCTL_BASE, 0x12; /*struct*/ drm_block);
+// ioctl!(write drm_ioctl_control with DRM_IOCTL_BASE, 0x14; /*struct*/ drm_control);
+// ioctl!(readwrite drm_ioctl_dma with DRM_IOCTL_BASE, 0x29; /*struct*/ drm_dma);
+ioctl!(none drm_ioctl_drop_master with DRM_IOCTL_BASE, 0x1f);
+// ioctl!(write drm_ioctl_finish with DRM_IOCTL_BASE, 0x2c; /*struct*/ drm_lock);
+// ioctl!(write drm_ioctl_free_bufs with DRM_IOCTL_BASE, 0x1a; /*struct*/ drm_buf_free);
+// ioctl!(write drm_ioctl_gem_close with DRM_IOCTL_BASE, 0x09; /*struct*/ drm_gem_close);
+// ioctl!(readwrite drm_ioctl_gem_flink with DRM_IOCTL_BASE, 0x0a; /*struct*/ drm_gem_flink);
+// ioctl!(readwrite drm_ioctl_gem_open with DRM_IOCTL_BASE, 0x0b; /*struct*/ drm_gem_open);
+// ioctl!(readwrite drm_ioctl_get_cap with DRM_IOCTL_BASE, 0x0c; /*struct*/ drm_get_cap);
+// ioctl!(readwrite drm_ioctl_get_client with DRM_IOCTL_BASE, 0x05; /*struct*/ drm_client);
+// ioctl!(readwrite drm_ioctl_get_ctx with DRM_IOCTL_BASE, 0x23; /*struct*/ drm_ctx);
+// ioctl!(read drm_ioctl_get_magic with DRM_IOCTL_BASE, 0x02; /*struct*/ drm_auth);
+// ioctl!(readwrite drm_ioctl_get_map with DRM_IOCTL_BASE, 0x04; /*struct*/ drm_map);
+// ioctl!(readwrite drm_ioctl_get_sarea_ctx with DRM_IOCTL_BASE, 0x1d; /*struct*/ drm_ctx_priv_map);
+// ioctl!(read drm_ioctl_get_stats with DRM_IOCTL_BASE, 0x06; /*struct*/ drm_stats);
+// ioctl!(readwrite drm_ioctl_get_unique with DRM_IOCTL_BASE, 0x01; /*struct*/ drm_unique);
+// ioctl!(readwrite drm_ioctl_info_bufs with DRM_IOCTL_BASE, 0x18; /*struct*/ drm_buf_info);
+// ioctl!(readwrite drm_ioctl_irq_busid with DRM_IOCTL_BASE, 0x03; /*struct*/ drm_irq_busid);
+// ioctl!(write drm_ioctl_lock with DRM_IOCTL_BASE, 0x2a; /*struct*/ drm_lock);
+// ioctl!(readwrite drm_ioctl_map_bufs with DRM_IOCTL_BASE, 0x19; /*struct*/ drm_buf_map);
+// ioctl!(write drm_ioctl_mark_bufs with DRM_IOCTL_BASE, 0x17; /*struct*/ drm_buf_desc);
+// ioctl!(write drm_ioctl_modeset_ctl with DRM_IOCTL_BASE, 0x08; /*struct*/ drm_modeset_ctl);
+// ioctl!(readwrite drm_ioctl_mode_addfb with DRM_IOCTL_BASE, 0xAE; /*struct*/ drm_mode_fb_cmd);
+// ioctl!(readwrite drm_ioctl_mode_addfb2 with DRM_IOCTL_BASE, 0xB8; /*struct*/ drm_mode_fb_cmd2);
+// ioctl!(readwrite drm_ioctl_mode_attachmode with DRM_IOCTL_BASE, 0xA8; /*struct*/ drm_mode_mode_cmd);
+// ioctl!(readwrite drm_ioctl_mode_create_dumb with DRM_IOCTL_BASE, 0xB2; /*struct*/ drm_mode_create_dumb);
+// ioctl!(readwrite drm_ioctl_mode_cursor with DRM_IOCTL_BASE, 0xA3; /*struct*/ drm_mode_cursor);
+// ioctl!(readwrite drm_ioctl_mode_cursor2 with DRM_IOCTL_BASE, 0xBB; /*struct*/ drm_mode_cursor2);
+// ioctl!(readwrite drm_ioctl_mode_destroy_dumb with DRM_IOCTL_BASE, 0xB4; /*struct*/ drm_mode_destroy_dumb);
+// ioctl!(readwrite drm_ioctl_mode_detachmode with DRM_IOCTL_BASE, 0xA9; /*struct*/ drm_mode_mode_cmd);
+// ioctl!(readwrite drm_ioctl_mode_dirtyfb with DRM_IOCTL_BASE, 0xB1; /*struct*/ drm_mode_fb_dirty_cmd);
+// ioctl!(readwrite drm_ioctl_mode_getconnector with DRM_IOCTL_BASE, 0xA7; /*struct*/ drm_mode_get_connector);
+// ioctl!(readwrite drm_ioctl_mode_getcrtc with DRM_IOCTL_BASE, 0xA1; /*struct*/ drm_mode_crtc);
+// ioctl!(readwrite drm_ioctl_mode_getencoder with DRM_IOCTL_BASE, 0xA6; /*struct*/ drm_mode_get_encoder);
+// ioctl!(readwrite drm_ioctl_mode_getfb with DRM_IOCTL_BASE, 0xAD; /*struct*/ drm_mode_fb_cmd);
+// ioctl!(readwrite drm_ioctl_mode_getgamma with DRM_IOCTL_BASE, 0xA4; /*struct*/ drm_mode_crtc_lut);
+// ioctl!(readwrite drm_ioctl_mode_getplane with DRM_IOCTL_BASE, 0xB6; /*struct*/ drm_mode_get_plane);
+// ioctl!(readwrite drm_ioctl_mode_getplaneresources with DRM_IOCTL_BASE, 0xB5; /*struct*/ drm_mode_get_plane_res);
+// ioctl!(readwrite drm_ioctl_mode_getpropblob with DRM_IOCTL_BASE, 0xAC; /*struct*/ drm_mode_get_blob);
+// ioctl!(readwrite drm_ioctl_mode_getproperty with DRM_IOCTL_BASE, 0xAA; /*struct*/ drm_mode_get_property);
+// ioctl!(readwrite drm_ioctl_mode_getresources with DRM_IOCTL_BASE, 0xA0; /*struct*/ drm_mode_card_res);
+// ioctl!(readwrite drm_ioctl_mode_map_dumb with DRM_IOCTL_BASE, 0xB3; /*struct*/ drm_mode_map_dumb);
+// ioctl!(readwrite drm_ioctl_mode_obj_getproperties with DRM_IOCTL_BASE, 0xB9; /*struct*/ drm_mode_obj_get_properties);
+// ioctl!(readwrite drm_ioctl_mode_obj_setproperty with DRM_IOCTL_BASE, 0xBA; /*struct*/ drm_mode_obj_set_property);
+// ioctl!(readwrite drm_ioctl_mode_page_flip with DRM_IOCTL_BASE, 0xB0; /*struct*/ drm_mode_crtc_page_flip);
+ioctl!(readwrite drm_ioctl_mode_rmfb with DRM_IOCTL_BASE, 0xAF; ::libc::c_uint);
+// ioctl!(readwrite drm_ioctl_mode_setcrtc with DRM_IOCTL_BASE, 0xA2; /*struct*/ drm_mode_crtc);
+// ioctl!(readwrite drm_ioctl_mode_setgamma with DRM_IOCTL_BASE, 0xA5; /*struct*/ drm_mode_crtc_lut);
+// ioctl!(readwrite drm_ioctl_mode_setplane with DRM_IOCTL_BASE, 0xB7; /*struct*/ drm_mode_set_plane);
+// ioctl!(readwrite drm_ioctl_mode_setproperty with DRM_IOCTL_BASE, 0xAB; /*struct*/ drm_mode_connector_set_property);
+// ioctl!(write drm_ioctl_mod_ctx with DRM_IOCTL_BASE, 0x22; /*struct*/ drm_ctx);
+// ioctl!(write drm_ioctl_new_ctx with DRM_IOCTL_BASE, 0x25; /*struct*/ drm_ctx);
+// ioctl!(readwrite drm_ioctl_prime_fd_to_handle with DRM_IOCTL_BASE, 0x2e; /*struct*/ drm_prime_handle);
+// ioctl!(readwrite drm_ioctl_prime_handle_to_fd with DRM_IOCTL_BASE, 0x2d; /*struct*/ drm_prime_handle);
+// ioctl!(readwrite drm_ioctl_radeon_alloc with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_ALLOC; FIXME1<['drm_radeon_mem_alloc_t']>);
+// ioctl!(write drm_ioctl_radeon_clear with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_CLEAR; FIXME1<['drm_radeon_clear_t']>);
+// ioctl!(write drm_ioctl_radeon_cmdbuf with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_CMDBUF; FIXME1<['drm_radeon_cmd_buffer_t']>);
+ioctl!(none drm_ioctl_radeon_cp_idle with DRM_IOCTL_BASE, DRM_COMMAND_BASE);
+// ioctl!(write drm_ioctl_radeon_cp_init with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_CP_INIT; FIXME1<['drm_radeon_init_t']>);
+ioctl!(none drm_ioctl_radeon_cp_reset with DRM_IOCTL_BASE, DRM_COMMAND_BASE);
+ioctl!(none drm_ioctl_radeon_cp_resume with DRM_IOCTL_BASE, DRM_COMMAND_BASE);
+ioctl!(none drm_ioctl_radeon_cp_start with DRM_IOCTL_BASE, DRM_COMMAND_BASE);
+// ioctl!(write drm_ioctl_radeon_cp_stop with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_CP_STOP; FIXME1<['drm_radeon_cp_stop_t']>);
+// ioctl!(readwrite drm_ioctl_radeon_cs with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_CS; /*struct*/ drm_radeon_cs);
+ioctl!(none drm_ioctl_radeon_flip with DRM_IOCTL_BASE, DRM_COMMAND_BASE);
+// ioctl!(write drm_ioctl_radeon_free with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_FREE; FIXME1<['drm_radeon_mem_free_t']>);
+// ioctl!(write drm_ioctl_radeon_fullscreen with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_FULLSCREEN; FIXME1<['drm_radeon_fullscreen_t']>);
+// ioctl!(readwrite drm_ioctl_radeon_gem_busy with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_BUSY; /*struct*/ drm_radeon_gem_busy);
+// ioctl!(readwrite drm_ioctl_radeon_gem_create with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_CREATE; /*struct*/ drm_radeon_gem_create);
+// ioctl!(readwrite drm_ioctl_radeon_gem_get_tiling with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_GET_TILING; /*struct*/ drm_radeon_gem_get_tiling);
+// ioctl!(readwrite drm_ioctl_radeon_gem_info with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_INFO; /*struct*/ drm_radeon_gem_info);
+// ioctl!(readwrite drm_ioctl_radeon_gem_mmap with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_MMAP; /*struct*/ drm_radeon_gem_mmap);
+// ioctl!(readwrite drm_ioctl_radeon_gem_op with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_OP; /*struct*/ drm_radeon_gem_op);
+// ioctl!(readwrite drm_ioctl_radeon_gem_pread with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_PREAD; /*struct*/ drm_radeon_gem_pread);
+// ioctl!(readwrite drm_ioctl_radeon_gem_pwrite with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_PWRITE; /*struct*/ drm_radeon_gem_pwrite);
+// ioctl!(readwrite drm_ioctl_radeon_gem_set_domain with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_DOMAIN; /*struct*/ drm_radeon_gem_set_domain);
+// ioctl!(readwrite drm_ioctl_radeon_gem_set_tiling with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_SET_TILING; /*struct*/ drm_radeon_gem_set_tiling);
+// ioctl!(readwrite drm_ioctl_radeon_gem_va with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_VA; /*struct*/ drm_radeon_gem_va);
+// ioctl!(write drm_ioctl_radeon_gem_wait_idle with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GEM_WAIT_IDLE; /*struct*/ drm_radeon_gem_wait_idle);
+// ioctl!(readwrite drm_ioctl_radeon_getparam with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_GETPARAM; FIXME1<['drm_radeon_getparam_t']>);
+// ioctl!(write drm_ioctl_radeon_indices with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_INDICES; FIXME1<['drm_radeon_indices_t']>);
+// ioctl!(readwrite drm_ioctl_radeon_indirect with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_INDIRECT; FIXME1<['drm_radeon_indirect_t']>);
+// ioctl!(readwrite drm_ioctl_radeon_info with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_INFO; /*struct*/ drm_radeon_info);
+// ioctl!(write drm_ioctl_radeon_init_heap with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_INIT_HEAP; FIXME1<['drm_radeon_mem_init_heap_t']>);
+// ioctl!(readwrite drm_ioctl_radeon_irq_emit with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_IRQ_EMIT; FIXME1<['drm_radeon_irq_emit_t']>);
+// ioctl!(write drm_ioctl_radeon_irq_wait with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_IRQ_WAIT; FIXME1<['drm_radeon_irq_wait_t']>);
+ioctl!(none drm_ioctl_radeon_reset with DRM_IOCTL_BASE, DRM_COMMAND_BASE);
+// ioctl!(write drm_ioctl_radeon_setparam with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_SETPARAM; FIXME1<['drm_radeon_setparam_t']>);
+// ioctl!(write drm_ioctl_radeon_stipple with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_STIPPLE; FIXME1<['drm_radeon_stipple_t']>);
+// ioctl!(write drm_ioctl_radeon_surf_alloc with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_SURF_ALLOC; FIXME1<['drm_radeon_surface_alloc_t']>);
+// ioctl!(write drm_ioctl_radeon_surf_free with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_SURF_FREE; FIXME1<['drm_radeon_surface_free_t']>);
+ioctl!(none drm_ioctl_radeon_swap with DRM_IOCTL_BASE, DRM_COMMAND_BASE);
+// ioctl!(readwrite drm_ioctl_radeon_texture with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_TEXTURE; FIXME1<['drm_radeon_texture_t']>);
+// ioctl!(write drm_ioctl_radeon_vertex with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_VERTEX; FIXME1<['drm_radeon_vertex_t']>);
+// ioctl!(write drm_ioctl_radeon_vertex2 with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_RADEON_VERTEX2; FIXME1<['drm_radeon_vertex2_t']>);
+// ioctl!(readwrite drm_ioctl_res_ctx with DRM_IOCTL_BASE, 0x26; /*struct*/ drm_ctx_res);
+// ioctl!(readwrite drm_ioctl_rm_ctx with DRM_IOCTL_BASE, 0x21; /*struct*/ drm_ctx);
+// ioctl!(readwrite drm_ioctl_rm_draw with DRM_IOCTL_BASE, 0x28; /*struct*/ drm_draw);
+// ioctl!(write drm_ioctl_rm_map with DRM_IOCTL_BASE, 0x1b; /*struct*/ drm_map);
+// ioctl!(write drm_ioctl_set_client_cap with DRM_IOCTL_BASE, 0x0d; /*struct*/ drm_set_client_cap);
+ioctl!(none drm_ioctl_set_master with DRM_IOCTL_BASE, 0x1e);
+// ioctl!(write drm_ioctl_set_sarea_ctx with DRM_IOCTL_BASE, 0x1c; /*struct*/ drm_ctx_priv_map);
+// ioctl!(write drm_ioctl_set_unique with DRM_IOCTL_BASE, 0x10; /*struct*/ drm_unique);
+// ioctl!(readwrite drm_ioctl_set_version with DRM_IOCTL_BASE, 0x07; /*struct*/ drm_set_version);
+// ioctl!(readwrite drm_ioctl_sg_alloc with DRM_IOCTL_BASE, 0x38; /*struct*/ drm_scatter_gather);
+// ioctl!(write drm_ioctl_sg_free with DRM_IOCTL_BASE, 0x39; /*struct*/ drm_scatter_gather);
+// ioctl!(readwrite drm_ioctl_sis_agp_alloc with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_SIS_AGP_ALLOC; FIXME1<['drm_sis_mem_t']>);
+// ioctl!(write drm_ioctl_sis_agp_free with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_SIS_AGP_FREE; FIXME1<['drm_sis_mem_t']>);
+// ioctl!(readwrite drm_ioctl_sis_agp_init with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_SIS_AGP_INIT; FIXME1<['drm_sis_agp_t']>);
+// ioctl!(readwrite drm_ioctl_sis_fb_alloc with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_SIS_FB_ALLOC; FIXME1<['drm_sis_mem_t']>);
+// ioctl!(write drm_ioctl_sis_fb_free with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_SIS_FB_FREE; FIXME1<['drm_sis_mem_t']>);
+// ioctl!(write drm_ioctl_sis_fb_init with DRM_IOCTL_BASE, DRM_COMMAND_BASE + DRM_SIS_FB_INIT; FIXME1<['drm_sis_fb_t']>);
+// ioctl!(write drm_ioctl_switch_ctx with DRM_IOCTL_BASE, 0x24; /*struct*/ drm_ctx);
+// ioctl!(readwrite drm_ioctl_unblock with DRM_IOCTL_BASE, 0x13; /*struct*/ drm_block);
+// ioctl!(write drm_ioctl_unlock with DRM_IOCTL_BASE, 0x2b; /*struct*/ drm_lock);
+// ioctl!(write drm_ioctl_update_draw with DRM_IOCTL_BASE, 0x3f; /*struct*/ drm_update_draw);
+// ioctl!(readwrite drm_ioctl_version with DRM_IOCTL_BASE, 0x00; /*struct*/ drm_version);
+// ioctl!(readwrite drm_ioctl_wait_vblank with DRM_IOCTL_BASE, 0x3a; FIXME2<['union', 'drm_wait_vblank']>);
+ioctl!(read eviocgeffects with b'E', 0x84; ::libc::c_int);
+ioctl!(read eviocgid with b'E', 0x02; /*struct*/ input_id);
+ioctl!(read eviocgkeycode with b'E', 0x04; [::libc::c_uint; 2]);
+// ioctl!(read eviocgkeycode_v2 with b'E', 0x04; /*struct*/ input_keymap_entry);
+ioctl!(read eviocgrep with b'E', 0x03; [::libc::c_uint; 2]);
+ioctl!(read eviocgversion with b'E', 0x01; ::libc::c_int);
+ioctl!(write eviocrmff with b'E', 0x81; ::libc::c_int);
+// TODO #define EVIOCSFF _IOC ( _IOC_WRITE , 'E' , 0x80 , sizeof ( struct ff_effect ) )
+ioctl!(write eviocskeycode with b'E', 0x04; [::libc::c_uint; 2]);
+// ioctl!(write eviocskeycode_v2 with b'E', 0x04; /*struct*/ input_keymap_entry);
+ioctl!(write eviocsrep with b'E', 0x03; [::libc::c_uint; 2]);
+ioctl!(read ext2_ioc_getflags with b'f', 1; ::libc::c_long);
+ioctl!(read ext2_ioc_getversion with b'v', 1; ::libc::c_long);
+ioctl!(read ext2_ioc_getversion_new with b'f', 3; ::libc::c_long);
+// ioctl!(write ext2_ioc_group_add with b'f', 8; /*struct*/ ext2_new_group_input);
+ioctl!(write ext2_ioc_group_extend with b'f', 7; ::libc::c_ulong);
+ioctl!(write ext2_ioc_setflags with b'f', 2; ::libc::c_long);
+ioctl!(write ext2_ioc_setversion with b'v', 2; ::libc::c_long);
+ioctl!(write ext2_ioc_setversion_new with b'f', 4; ::libc::c_long);
+// ioctl!(write ext4_ioc_group_add with b'f', 8; /*struct*/ ext4_new_group_input);
+ioctl!(write ext4_ioc_resize_fs with b'f', 16; u64);
+ioctl!(read fat_ioctl_get_attributes with b'r', 0x10; u32);
+ioctl!(read fat_ioctl_get_volume_id with b'r', 0x13; u32);
+ioctl!(write fat_ioctl_set_attributes with b'r', 0x11; u32);
+// ioctl!(readwrite fsl_hv_ioctl_doorbell with FSL_HV_IOCTL_TYPE, 6; /*struct*/ fsl_hv_ioctl_doorbell);
+// ioctl!(readwrite fsl_hv_ioctl_getprop with FSL_HV_IOCTL_TYPE, 7; /*struct*/ fsl_hv_ioctl_prop);
+// ioctl!(readwrite fsl_hv_ioctl_memcpy with FSL_HV_IOCTL_TYPE, 5; /*struct*/ fsl_hv_ioctl_memcpy);
+// ioctl!(readwrite fsl_hv_ioctl_partition_get_status with FSL_HV_IOCTL_TYPE, 2; /*struct*/ fsl_hv_ioctl_status);
+// ioctl!(readwrite fsl_hv_ioctl_partition_restart with FSL_HV_IOCTL_TYPE, 1; /*struct*/ fsl_hv_ioctl_restart);
+// ioctl!(readwrite fsl_hv_ioctl_partition_start with FSL_HV_IOCTL_TYPE, 3; /*struct*/ fsl_hv_ioctl_start);
+// ioctl!(readwrite fsl_hv_ioctl_partition_stop with FSL_HV_IOCTL_TYPE, 4; /*struct*/ fsl_hv_ioctl_stop);
+// ioctl!(readwrite fsl_hv_ioctl_setprop with FSL_HV_IOCTL_TYPE, 8; /*struct*/ fsl_hv_ioctl_prop);
+ioctl!(read fs_ioc32_getflags with b'f', 1; ::libc::c_int);
+ioctl!(read fs_ioc32_getversion with b'v', 1; ::libc::c_int);
+ioctl!(write fs_ioc32_setflags with b'f', 2; ::libc::c_int);
+ioctl!(write fs_ioc32_setversion with b'v', 2; ::libc::c_int);
+// ioctl!(readwrite fs_ioc_fiemap with b'f', 11; /*struct*/ fiemap);
+ioctl!(read fs_ioc_getflags with b'f', 1; ::libc::c_long);
+ioctl!(read fs_ioc_getversion with b'v', 1; ::libc::c_long);
+ioctl!(write fs_ioc_setflags with b'f', 2; ::libc::c_long);
+ioctl!(write fs_ioc_setversion with b'v', 2; ::libc::c_long);
+// ioctl!(readwrite fw_cdev_ioc_add_descriptor with b'#', 0x06; /*struct*/ fw_cdev_add_descriptor);
+// ioctl!(readwrite fw_cdev_ioc_allocate with b'#', 0x02; /*struct*/ fw_cdev_allocate);
+// ioctl!(readwrite fw_cdev_ioc_allocate_iso_resource with b'#', 0x0d; /*struct*/ fw_cdev_allocate_iso_resource);
+// ioctl!(write fw_cdev_ioc_allocate_iso_resource_once with b'#', 0x0f; /*struct*/ fw_cdev_allocate_iso_resource);
+// ioctl!(readwrite fw_cdev_ioc_create_iso_context with b'#', 0x08; /*struct*/ fw_cdev_create_iso_context);
+// ioctl!(write fw_cdev_ioc_deallocate with b'#', 0x03; /*struct*/ fw_cdev_deallocate);
+// ioctl!(write fw_cdev_ioc_deallocate_iso_resource with b'#', 0x0e; /*struct*/ fw_cdev_deallocate);
+// ioctl!(write fw_cdev_ioc_deallocate_iso_resource_once with b'#', 0x10; /*struct*/ fw_cdev_allocate_iso_resource);
+// ioctl!(write fw_cdev_ioc_flush_iso with b'#', 0x18; /*struct*/ fw_cdev_flush_iso);
+// ioctl!(read fw_cdev_ioc_get_cycle_timer with b'#', 0x0c; /*struct*/ fw_cdev_get_cycle_timer);
+// ioctl!(readwrite fw_cdev_ioc_get_cycle_timer2 with b'#', 0x14; /*struct*/ fw_cdev_get_cycle_timer2);
+// ioctl!(readwrite fw_cdev_ioc_get_info with b'#', 0x00; /*struct*/ fw_cdev_get_info);
+ioctl!(none fw_cdev_ioc_get_speed with b'#', 0x11);
+// ioctl!(write fw_cdev_ioc_initiate_bus_reset with b'#', 0x05; /*struct*/ fw_cdev_initiate_bus_reset);
+// ioctl!(readwrite fw_cdev_ioc_queue_iso with b'#', 0x09; /*struct*/ fw_cdev_queue_iso);
+// ioctl!(write fw_cdev_ioc_receive_phy_packets with b'#', 0x16; /*struct*/ fw_cdev_receive_phy_packets);
+// ioctl!(write fw_cdev_ioc_remove_descriptor with b'#', 0x07; /*struct*/ fw_cdev_remove_descriptor);
+// ioctl!(write fw_cdev_ioc_send_broadcast_request with b'#', 0x12; /*struct*/ fw_cdev_send_request);
+// ioctl!(readwrite fw_cdev_ioc_send_phy_packet with b'#', 0x15; /*struct*/ fw_cdev_send_phy_packet);
+// ioctl!(write fw_cdev_ioc_send_request with b'#', 0x01; /*struct*/ fw_cdev_send_request);
+// ioctl!(write fw_cdev_ioc_send_response with b'#', 0x04; /*struct*/ fw_cdev_send_response);
+// ioctl!(write fw_cdev_ioc_send_stream_packet with b'#', 0x13; /*struct*/ fw_cdev_send_stream_packet);
+// ioctl!(write fw_cdev_ioc_set_iso_channels with b'#', 0x17; /*struct*/ fw_cdev_set_iso_channels);
+// ioctl!(write fw_cdev_ioc_start_iso with b'#', 0x0a; /*struct*/ fw_cdev_start_iso);
+// ioctl!(write fw_cdev_ioc_stop_iso with b'#', 0x0b; /*struct*/ fw_cdev_stop_iso);
+ioctl!(none hidiocapplication with b'H', 0x02);
+// ioctl!(write hidiocgcollectionindex with b'H', 0x10; /*struct*/ hiddev_usage_ref);
+// ioctl!(readwrite hidiocgcollectioninfo with b'H', 0x11; /*struct*/ hiddev_collection_info);
+// ioctl!(read hidiocgdevinfo with b'H', 0x03; /*struct*/ hiddev_devinfo);
+// TODO #define HIDIOCGFEATURE ( len ) _IOC ( _IOC_WRITE | _IOC_READ , 'H' , 0x07 , len )
+// ioctl!(readwrite hidiocgfieldinfo with b'H', 0x0A; /*struct*/ hiddev_field_info);
+ioctl!(read hidiocgflag with b'H', 0x0E; ::libc::c_int);
+// TODO #define HIDIOCGNAME ( len ) _IOC ( _IOC_READ , 'H' , 0x06 , len )
+// TODO #define HIDIOCGPHYS ( len ) _IOC ( _IOC_READ , 'H' , 0x12 , len )
+// ioctl!(read hidiocgrawinfo with b'H', 0x03; /*struct*/ hidraw_devinfo);
+// TODO #define HIDIOCGRAWNAME ( len ) _IOC ( _IOC_READ , 'H' , 0x04 , len )
+// TODO #define HIDIOCGRAWPHYS ( len ) _IOC ( _IOC_READ , 'H' , 0x05 , len )
+// ioctl!(read hidiocgrdesc with b'H', 0x02; /*struct*/ hidraw_report_descriptor);
+ioctl!(read hidiocgrdescsize with b'H', 0x01; ::libc::c_int);
+// ioctl!(write hidiocgreport with b'H', 0x07; /*struct*/ hiddev_report_info);
+// ioctl!(readwrite hidiocgreportinfo with b'H', 0x09; /*struct*/ hiddev_report_info);
+// ioctl!(read hidiocgstring with b'H', 0x04; /*struct*/ hiddev_string_descriptor);
+// ioctl!(readwrite hidiocgucode with b'H', 0x0D; /*struct*/ hiddev_usage_ref);
+// ioctl!(readwrite hidiocgusage with b'H', 0x0B; /*struct*/ hiddev_usage_ref);
+// ioctl!(readwrite hidiocgusages with b'H', 0x13; /*struct*/ hiddev_usage_ref_multi);
+ioctl!(read hidiocgversion with b'H', 0x01; ::libc::c_int);
+ioctl!(none hidiocinitreport with b'H', 0x05);
+// TODO #define HIDIOCSFEATURE ( len ) _IOC ( _IOC_WRITE | _IOC_READ , 'H' , 0x06 , len )
+ioctl!(write hidiocsflag with b'H', 0x0F; ::libc::c_int);
+// ioctl!(write hidiocsreport with b'H', 0x08; /*struct*/ hiddev_report_info);
+// ioctl!(write hidiocsusage with b'H', 0x0C; /*struct*/ hiddev_usage_ref);
+// ioctl!(write hidiocsusages with b'H', 0x14; /*struct*/ hiddev_usage_ref_multi);
+ioctl!(none iiocdbgvar with b'I', 127);
+ioctl!(none iiocdrvctl with b'I', 128);
+ioctl!(none iiocgetcps with b'I', 21);
+ioctl!(none iiocgetdvr with b'I', 22);
+ioctl!(none iiocgetmap with b'I', 17);
+ioctl!(none iiocgetprf with b'I', 15);
+ioctl!(none iiocgetset with b'I', 8);
+ioctl!(none iiocnetaif with b'I', 1);
+ioctl!(none iiocnetaln with b'I', 32);
+ioctl!(none iiocnetanm with b'I', 5);
+ioctl!(none iiocnetasl with b'I', 19);
+ioctl!(none iiocnetdif with b'I', 2);
+ioctl!(none iiocnetdil with b'I', 20);
+ioctl!(none iiocnetdln with b'I', 33);
+ioctl!(none iiocnetdnm with b'I', 6);
+ioctl!(none iiocnetdwrset with b'I', 24);
+ioctl!(none iiocnetgcf with b'I', 4);
+ioctl!(none iiocnetgnm with b'I', 7);
+ioctl!(none iiocnetgpn with b'I', 34);
+ioctl!(none iiocnethup with b'I', 11);
+ioctl!(none iiocnetlcr with b'I', 23);
+ioctl!(none iiocnetscf with b'I', 3);
+ioctl!(none iiocsetbrj with b'I', 13);
+ioctl!(none iiocsetgst with b'I', 12);
+ioctl!(none iiocsetmap with b'I', 18);
+ioctl!(none iiocsetprf with b'I', 16);
+ioctl!(none iiocsetset with b'I', 9);
+ioctl!(none iiocsetver with b'I', 10);
+ioctl!(none iiocsigprf with b'I', 14);
+// TODO #define IOCTL_EVTCHN_BIND_INTERDOMAIN _IOC ( _IOC_NONE , 'E' , 1 , sizeof ( struct ioctl_evtchn_bind_interdomain ) )
+// TODO #define IOCTL_EVTCHN_BIND_UNBOUND_PORT _IOC ( _IOC_NONE , 'E' , 2 , sizeof ( struct ioctl_evtchn_bind_unbound_port ) )
+// TODO #define IOCTL_EVTCHN_BIND_VIRQ _IOC ( _IOC_NONE , 'E' , 0 , sizeof ( struct ioctl_evtchn_bind_virq ) )
+// TODO #define IOCTL_EVTCHN_NOTIFY _IOC ( _IOC_NONE , 'E' , 4 , sizeof ( struct ioctl_evtchn_notify ) )
+// TODO #define IOCTL_EVTCHN_RESET _IOC ( _IOC_NONE , 'E' , 5 , 0 )
+// TODO #define IOCTL_EVTCHN_UNBIND _IOC ( _IOC_NONE , 'E' , 3 , sizeof ( struct ioctl_evtchn_unbind ) )
+// ioctl!(readwrite ioctl_mei_connect_client with b'H', 0x01; /*struct*/ mei_connect_client_data);
+ioctl!(read ioctl_wdm_max_command with b'H', 0xA0; u16);
+// ioctl!(write ivtvfb_ioc_dma_frame with b'V', BASE_VIDIOC_PRIVATE + 0; /*struct*/ ivtvfb_dma_frame);
+// ioctl!(write ivtv_ioc_dma_frame with b'V', BASE_VIDIOC_PRIVATE + 0; /*struct*/ ivtv_dma_frame);
+ioctl!(write ivtv_ioc_passthrough_mode with b'V', BASE_VIDIOC_PRIVATE + 1; ::libc::c_int);
+ioctl!(read jsiocgaxes with b'j', 0x11; u8);
+ioctl!(read jsiocgaxmap with b'j', 0x32; [u8; ABS_CNT]);
+// ioctl!(read jsiocgbtnmap with b'j', 0x34; [FIXME3<['__u16', '[', 'KEY_MAX', '-', 'BTN_MISC']>; 1]);
+ioctl!(read jsiocgbuttons with b'j', 0x12; u8);
+// ioctl!(read jsiocgcorr with b'j', 0x22; /*struct*/ js_corr);
+// TODO #define JSIOCGNAME ( len ) _IOC ( _IOC_READ , 'j' , 0x13 , len )
+ioctl!(read jsiocgversion with b'j', 0x01; u32);
+ioctl!(write jsiocsaxmap with b'j', 0x31; [u8; ABS_CNT]);
+// ioctl!(write jsiocsbtnmap with b'j', 0x33; [FIXME3<['__u16', '[', 'KEY_MAX', '-', 'BTN_MISC']>; 1]);
+// ioctl!(write jsiocscorr with b'j', 0x21; /*struct*/ js_corr);
+ioctl!(none kiocsound with 75, 47);
+// ioctl!(readwrite media_ioc_device_info with b'|', 0x00; /*struct*/ media_device_info);
+// ioctl!(readwrite media_ioc_enum_entities with b'|', 0x01; /*struct*/ media_entity_desc);
+// ioctl!(readwrite media_ioc_enum_links with b'|', 0x02; /*struct*/ media_links_enum);
+// ioctl!(readwrite media_ioc_setup_link with b'|', 0x03; /*struct*/ media_link_desc);
+// ioctl!(read meyeioc_g_params with b'v', BASE_VIDIOC_PRIVATE + 0; /*struct*/ meye_params);
+ioctl!(write meyeioc_qbuf_capt with b'v', BASE_VIDIOC_PRIVATE + 2; ::libc::c_int);
+ioctl!(none meyeioc_stillcapt with b'v', BASE_VIDIOC_PRIVATE);
+ioctl!(read meyeioc_stilljcapt with b'v', BASE_VIDIOC_PRIVATE + 5; ::libc::c_int);
+ioctl!(readwrite meyeioc_sync with b'v', BASE_VIDIOC_PRIVATE + 3; ::libc::c_int);
+// ioctl!(write meyeioc_s_params with b'v', BASE_VIDIOC_PRIVATE + 1; /*struct*/ meye_params);
+ioctl!(none mgsl_iocclrmodcount with MGSL_MAGIC_IOC, 15);
+// ioctl!(read mgsl_iocggpio with MGSL_MAGIC_IOC, 17; /*struct*/ gpio_desc);
+ioctl!(none mgsl_iocgif with MGSL_MAGIC_IOC, 11);
+// ioctl!(read mgsl_iocgparams with MGSL_MAGIC_IOC, 1; /*struct*/ _MGSL_PARAMS);
+ioctl!(none mgsl_iocgstats with MGSL_MAGIC_IOC, 7);
+ioctl!(none mgsl_iocgtxidle with MGSL_MAGIC_IOC, 3);
+ioctl!(none mgsl_iocgxctrl with MGSL_MAGIC_IOC, 22);
+ioctl!(none mgsl_iocgxsync with MGSL_MAGIC_IOC, 20);
+ioctl!(none mgsl_ioclooptxdone with MGSL_MAGIC_IOC, 9);
+ioctl!(none mgsl_iocrxenable with MGSL_MAGIC_IOC, 5);
+// ioctl!(write mgsl_iocsgpio with MGSL_MAGIC_IOC, 16; /*struct*/ gpio_desc);
+ioctl!(none mgsl_iocsif with MGSL_MAGIC_IOC, 10);
+// ioctl!(write mgsl_iocsparams with MGSL_MAGIC_IOC, 0; /*struct*/ _MGSL_PARAMS);
+ioctl!(none mgsl_iocstxidle with MGSL_MAGIC_IOC, 2);
+ioctl!(none mgsl_iocsxctrl with MGSL_MAGIC_IOC, 21);
+ioctl!(none mgsl_iocsxsync with MGSL_MAGIC_IOC, 19);
+ioctl!(none mgsl_ioctxabort with MGSL_MAGIC_IOC, 6);
+ioctl!(none mgsl_ioctxenable with MGSL_MAGIC_IOC, 4);
+ioctl!(readwrite mgsl_iocwaitevent with MGSL_MAGIC_IOC, 8; ::libc::c_int);
+// ioctl!(readwrite mgsl_iocwaitgpio with MGSL_MAGIC_IOC, 18; /*struct*/ gpio_desc);
+// ioctl!(readwrite mmc_ioc_cmd with MMC_BLOCK_MAJOR, 0; /*struct*/ mmc_ioc_cmd);
+// ioctl!(read mtiocget with b'm', 2; /*struct*/ mtget);
+// ioctl!(read mtiocget with b'm', 2; /*struct*/ mtget);
+// ioctl!(read mtiocgetconfig with b'm', 4; /*struct*/ mtconfiginfo);
+// ioctl!(read mtiocpos with b'm', 3; /*struct*/ mtpos);
+// ioctl!(read mtiocpos with b'm', 3; /*struct*/ mtpos);
+// ioctl!(write mtiocsetconfig with b'm', 5; /*struct*/ mtconfiginfo);
+// ioctl!(write mtioctop with b'm', 1; /*struct*/ mtop);
+// ioctl!(write mtioctop with b'm', 1; /*struct*/ mtop);
+// ioctl!(write mtrrioc_add_entry with MTRR_IOCTL_BASE, 0; /*struct*/ mtrr_sentry);
+// ioctl!(write mtrrioc_add_page_entry with MTRR_IOCTL_BASE, 5; /*struct*/ mtrr_sentry);
+// ioctl!(write mtrrioc_del_entry with MTRR_IOCTL_BASE, 2; /*struct*/ mtrr_sentry);
+// ioctl!(write mtrrioc_del_page_entry with MTRR_IOCTL_BASE, 7; /*struct*/ mtrr_sentry);
+// ioctl!(readwrite mtrrioc_get_entry with MTRR_IOCTL_BASE, 3; /*struct*/ mtrr_gentry);
+// ioctl!(readwrite mtrrioc_get_page_entry with MTRR_IOCTL_BASE, 8; /*struct*/ mtrr_gentry);
+// ioctl!(write mtrrioc_kill_entry with MTRR_IOCTL_BASE, 4; /*struct*/ mtrr_sentry);
+// ioctl!(write mtrrioc_kill_page_entry with MTRR_IOCTL_BASE, 9; /*struct*/ mtrr_sentry);
+// ioctl!(write mtrrioc_set_entry with MTRR_IOCTL_BASE, 1; /*struct*/ mtrr_sentry);
+// ioctl!(write mtrrioc_set_page_entry with MTRR_IOCTL_BASE, 6; /*struct*/ mtrr_sentry);
+// ioctl!(readwrite nvme_ioctl_admin_cmd with b'N', 0x41; /*struct*/ nvme_admin_cmd);
+ioctl!(none nvme_ioctl_id with b'N', 0x40);
+// ioctl!(write nvme_ioctl_submit_io with b'N', 0x42; /*struct*/ nvme_user_io);
+ioctl!(read osiocgnetaddr with DECNET_IOCTL_BASE, 0xe1; ::libc::c_int);
+ioctl!(write osiocsnetaddr with DECNET_IOCTL_BASE, 0xe0; ::libc::c_int);
+ioctl!(none pciioc_controller with 73, 0);
+ioctl!(none pciioc_mmap_is_io with 73, 1);
+ioctl!(none pciioc_mmap_is_mem with 73, 2);
+ioctl!(none pciioc_write_combine with 73, 3);
+ioctl!(none perf_event_ioc_disable with b'$', 1);
+ioctl!(none perf_event_ioc_enable with b'$', 0);
+ioctl!(read perf_event_ioc_id with b'$', 7; *mut u64);
+ioctl!(write perf_event_ioc_period with b'$', 4; u64);
+ioctl!(none perf_event_ioc_refresh with b'$', 2);
+ioctl!(none perf_event_ioc_reset with b'$', 3);
+ioctl!(write perf_event_ioc_set_filter with b'$', 6; *mut ::libc::c_char);
+ioctl!(none perf_event_ioc_set_output with b'$', 5);
+ioctl!(read pmu_ioc_can_sleep with b'B', 5; ::libc::size_t);
+ioctl!(read pmu_ioc_get_backlight with b'B', 1; ::libc::size_t);
+ioctl!(read pmu_ioc_get_model with b'B', 3; ::libc::size_t);
+ioctl!(read pmu_ioc_grab_backlight with b'B', 6; ::libc::size_t);
+ioctl!(read pmu_ioc_has_adb with b'B', 4; ::libc::size_t);
+ioctl!(write pmu_ioc_set_backlight with b'B', 2; ::libc::size_t);
+ioctl!(none pmu_ioc_sleep with b'B', 0);
+ioctl!(write pppiocattach with b't', 61; ::libc::c_int);
+ioctl!(write pppiocattchan with b't', 56; ::libc::c_int);
+ioctl!(write pppiocbundle with b't', 129; ::libc::c_int);
+ioctl!(write pppiocconnect with b't', 58; ::libc::c_int);
+ioctl!(write pppiocdetach with b't', 60; ::libc::c_int);
+ioctl!(none pppiocdisconn with b't', 57);
+ioctl!(read pppiocgasyncmap with b't', 88; ::libc::c_int);
+// ioctl!(readwrite pppiocgcallinfo with b't', 128; /*struct*/ pppcallinfo);
+ioctl!(read pppiocgchan with b't', 55; ::libc::c_int);
+ioctl!(read pppiocgcompressors with b't', 134; [::libc::c_ulong; 8]);
+ioctl!(read pppiocgdebug with b't', 65; ::libc::c_int);
+ioctl!(read pppiocgflags with b't', 90; ::libc::c_int);
+// ioctl!(read pppiocgidle with b't', 63; /*struct*/ ppp_idle);
+ioctl!(read pppiocgifname with b't', 136; [::libc::c_char; IFNAMSIZ]);
+// ioctl!(read pppiocgl2tpstats with b't', 54; /*struct*/ pppol2tp_ioc_stats);
+ioctl!(read pppiocgmpflags with b't', 130; ::libc::c_int);
+ioctl!(read pppiocgmru with b't', 83; ::libc::c_int);
+// ioctl!(readwrite pppiocgnpmode with b't', 76; /*struct*/ npioctl);
+ioctl!(read pppiocgrasyncmap with b't', 85; ::libc::c_int);
+ioctl!(read pppiocgunit with b't', 86; ::libc::c_int);
+// ioctl!(read pppiocgxasyncmap with b't', 80; FIXME1<['ext_accm']>);
+ioctl!(readwrite pppiocnewunit with b't', 62; ::libc::c_int);
+// ioctl!(write pppiocsactive with b't', 70; /*struct*/ sock_fprog);
+ioctl!(write pppiocsasyncmap with b't', 87; ::libc::c_int);
+// ioctl!(write pppiocscompress with b't', 77; /*struct*/ ppp_option_data);
+ioctl!(write pppiocscompressor with b't', 135; ::libc::c_int);
+ioctl!(write pppiocsdebug with b't', 64; ::libc::c_int);
+ioctl!(write pppiocsflags with b't', 89; ::libc::c_int);
+ioctl!(write pppiocsmaxcid with b't', 81; ::libc::c_int);
+ioctl!(write pppiocsmpflags with b't', 131; ::libc::c_int);
+ioctl!(write pppiocsmpmru with b't', 133; ::libc::c_int);
+ioctl!(write pppiocsmpmtu with b't', 132; ::libc::c_int);
+ioctl!(write pppiocsmrru with b't', 59; ::libc::c_int);
+ioctl!(write pppiocsmru with b't', 82; ::libc::c_int);
+// ioctl!(write pppiocsnpmode with b't', 75; /*struct*/ npioctl);
+// ioctl!(write pppiocspass with b't', 71; /*struct*/ sock_fprog);
+ioctl!(write pppiocsrasyncmap with b't', 84; ::libc::c_int);
+// ioctl!(write pppiocsxasyncmap with b't', 79; FIXME1<['ext_accm']>);
+ioctl!(none pppiocxferunit with b't', 78);
+ioctl!(read reiserfs_ioc_getflags with b'f', 1; ::libc::c_long);
+ioctl!(read reiserfs_ioc_getversion with b'v', 1; ::libc::c_long);
+ioctl!(write resierfs_ioc_setflags with b'f', 2; ::libc::c_long);
+ioctl!(write reiserfs_ioc_setversion with b'v', 2; ::libc::c_long);
+ioctl!(write reiserfs_ioc_unpack with 0xCD, 1; ::libc::c_long);
+ioctl!(none rfkill_ioctl_noinput with RFKILL_IOC_MAGIC, RFKILL_IOC_NOINPUT);
+ioctl!(none scsi_ioctl_benchmark_command with 0, 3);
+ioctl!(none scsi_ioctl_doorlock with 83, 128);
+ioctl!(none scsi_ioctl_doorunlock with 83, 129);
+ioctl!(none scsi_ioctl_get_bus_number with 83, 134);
+ioctl!(none scsi_ioctl_get_idlun with 83, 130);
+ioctl!(none scsi_ioctl_probe_host with 83, 133);
+ioctl!(none scsi_ioctl_send_command with 0, 1);
+ioctl!(none scsi_ioctl_start_unit with 0, 5);
+ioctl!(none scsi_ioctl_stop_unit with 0, 6);
+ioctl!(none scsi_ioctl_sync with 0, 4);
+ioctl!(none scsi_ioctl_tagged_disable with 83, 132);
+ioctl!(none scsi_ioctl_tagged_enable with 83, 131);
+ioctl!(none scsi_ioctl_test_unit_ready with 0, 2);
+ioctl!(none siocadddlci with 137, 128);
+ioctl!(none siocaddmulti with 137, 49);
+ioctl!(none siocaddrt with 137, 11);
+ioctl!(bad siocaipxitfcrt with 35296);
+ioctl!(none siocaipxprislt with 137, 225);
+ioctl!(none siocatalkdifaddr with 137, 224);
+ioctl!(none siocatmark with 137, 5);
+ioctl!(none siocax25addfwd with 137, 234);
+ioctl!(none siocax25adduid with 137, 225);
+ioctl!(none siocax25bpqaddr with 137, 228);
+ioctl!(none siocax25ctlcon with 137, 232);
+ioctl!(none siocax25delfwd with 137, 235);
+ioctl!(none siocax25deluid with 137, 226);
+ioctl!(none siocax25devctl with 137, 236);
+ioctl!(none siocax25getinfo with 137, 237);
+ioctl!(none siocax25getinfoold with 137, 233);
+ioctl!(none siocax25getparms with 137, 229);
+ioctl!(bad siocax25getuid with 35296);
+ioctl!(none siocax25nouid with 137, 227);
+ioctl!(none siocax25optrt with 137, 231);
+ioctl!(none siocax25setparms with 137, 230);
+ioctl!(none siocbondchangeactive with 137, 149);
+ioctl!(none siocbondenslave with 137, 144);
+ioctl!(none siocbondinfoquery with 137, 148);
+ioctl!(none siocbondrelease with 137, 145);
+ioctl!(none siocbondsethwaddr with 137, 146);
+ioctl!(none siocbondslaveinfoquery with 137, 147);
+ioctl!(none siocbraddbr with 137, 160);
+ioctl!(none siocbraddif with 137, 162);
+ioctl!(none siocbrdelbr with 137, 161);
+ioctl!(none siocbrdelif with 137, 163);
+ioctl!(none siocdarp with 137, 83);
+ioctl!(none siocdeldlci with 137, 129);
+ioctl!(none siocdelmulti with 137, 50);
+ioctl!(none siocdelrt with 137, 12);
+ioctl!(bad siocdevplip with 35312);
+ioctl!(none siocdevprivate with 137, 240);
+ioctl!(none siocdifaddr with 137, 54);
+ioctl!(none siocdrarp with 137, 96);
+ioctl!(none siocethtool with 137, 70);
+ioctl!(none siocgarp with 137, 84);
+ioctl!(none siocgbpqethparam with 80, 0);
+ioctl!(none siocgcmfirmware with 137, 241);
+ioctl!(none siocgcmfrequency with 137, 242);
+ioctl!(none siocgcmpids with 137, 244);
+ioctl!(none siocgcmstats with 137, 240);
+ioctl!(none siocgdebserint with 137, 242);
+ioctl!(none siocgdongle with 137, 241);
+ioctl!(bad siocgetlinkname with 35296);
+ioctl!(none siocghwtstamp with 137, 177);
+ioctl!(none siocgifaddr with 137, 21);
+ioctl!(none siocgifbr with 137, 64);
+ioctl!(none siocgifbrdaddr with 137, 25);
+ioctl!(none siocgifconf with 137, 18);
+ioctl!(none siocgifcount with 137, 56);
+ioctl!(none siocgifdstaddr with 137, 23);
+ioctl!(none siocgifencap with 137, 37);
+ioctl!(none siocgifflags with 137, 19);
+ioctl!(none siocgifhwaddr with 137, 39);
+ioctl!(none siocgifindex with 137, 51);
+ioctl!(none siocgifmap with 137, 112);
+ioctl!(none siocgifmem with 137, 31);
+ioctl!(none siocgifmetric with 137, 29);
+ioctl!(none siocgifmtu with 137, 33);
+ioctl!(none siocgifname with 137, 16);
+ioctl!(none siocgifnetmask with 137, 27);
+ioctl!(none siocgifpflags with 137, 53);
+ioctl!(none siocgifslave with 137, 41);
+ioctl!(none siocgiftxqlen with 137, 66);
+ioctl!(none siocgifvlan with 137, 130);
+ioctl!(none siocgkeepalive with 137, 241);
+ioctl!(none siocgkeepperiod with 137, 240);
+ioctl!(none siocglease with 137, 245);
+ioctl!(none siocgmediabusy with 137, 244);
+ioctl!(none siocgmiiphy with 137, 71);
+ioctl!(none siocgmiireg with 137, 72);
+ioctl!(none siocgmode with 137, 247);
+// ioctl!(read siocgnetaddr with DECNET_IOCTL_BASE, 0xe1; /*struct*/ dn_naddr);
+ioctl!(none siocgoutfill with 137, 243);
+ioctl!(none siocgpgrp with 137, 4);
+ioctl!(none siocgpppcstats with 137, 242);
+ioctl!(none siocgpppstats with 137, 240);
+ioctl!(none siocgpppver with 137, 241);
+ioctl!(none siocgqos with 137, 249);
+ioctl!(none siocgrarp with 137, 97);
+ioctl!(none siocgreceiving with 137, 245);
+ioctl!(none siocgstamp with 137, 6);
+ioctl!(none siocgstampns with 137, 7);
+ioctl!(bad siocinq with 21531);
+ioctl!(none siocipxcfgdata with 137, 226);
+ioctl!(none siocipxncpconn with 137, 227);
+ioctl!(none siocmkclip with b'a', ATMIOC_CLIP);
+ioctl!(none siocnrctlcon with 137, 228);
+ioctl!(none siocnrdecobs with 137, 226);
+ioctl!(none siocnrgetparms with 137, 224);
+ioctl!(none siocnrrtctl with 137, 227);
+ioctl!(none siocnrsetparms with 137, 225);
+ioctl!(bad siocoutq with 21521);
+ioctl!(none siocoutqnsd with 137, 75);
+ioctl!(none siocparm_mask with 31, 255);
+ioctl!(none siocprotoprivate with 137, 224);
+ioctl!(none siocrsaccept with 137, 227);
+ioctl!(none siocrsclrrt with 137, 228);
+ioctl!(none siocrsgcause with 137, 224);
+ioctl!(none siocrsgfacilities with 137, 230);
+ioctl!(none siocrsgl2call with 137, 229);
+ioctl!(none siocrsl2call with 137, 226);
+ioctl!(none siocrsscause with 137, 225);
+ioctl!(none siocrssl2call with 137, 226);
+ioctl!(none siocrtmsg with 137, 13);
+ioctl!(none siocsarp with 137, 85);
+ioctl!(none siocsbandwidth with 137, 242);
+ioctl!(none siocsbpqethaddr with 137, 241);
+ioctl!(none siocsbpqethopt with 137, 240);
+ioctl!(none siocsbpqethparam with 80, 1);
+ioctl!(none siocscmfrequency with 137, 243);
+ioctl!(none siocscmpids with 137, 245);
+ioctl!(none siocsdebserint with 137, 243);
+ioctl!(none siocsdongle with 137, 240);
+ioctl!(none siocsdtrrts with 137, 248);
+ioctl!(none siocshwtstamp with 137, 176);
+ioctl!(none siocsifaddr with 137, 22);
+ioctl!(none siocsifatmtcp with b'a', ATMIOC_ITF);
+ioctl!(none siocsifbr with 137, 65);
+ioctl!(none siocsifbrdaddr with 137, 26);
+ioctl!(none siocsifdstaddr with 137, 24);
+ioctl!(none siocsifencap with 137, 38);
+ioctl!(none siocsifflags with 137, 20);
+ioctl!(none siocsifhwaddr with 137, 36);
+ioctl!(none siocsifhwbroadcast with 137, 55);
+ioctl!(none siocsiflink with 137, 17);
+ioctl!(none siocsifmap with 137, 113);
+ioctl!(none siocsifmem with 137, 32);
+ioctl!(none siocsifmetric with 137, 30);
+ioctl!(none siocsifmtu with 137, 34);
+ioctl!(none siocsifname with 137, 35);
+ioctl!(none siocsifnetmask with 137, 28);
+ioctl!(none siocsifpflags with 137, 52);
+ioctl!(none siocsifslave with 137, 48);
+ioctl!(none siocsiftxqlen with 137, 67);
+ioctl!(none siocsifvlan with 137, 131);
+ioctl!(bad siocskeepalive with 35312);
+ioctl!(none siocskeepperiod with 137, 241);
+ioctl!(none siocslease with 137, 244);
+ioctl!(none siocsmediabusy with 137, 243);
+ioctl!(none siocsmiireg with 137, 73);
+ioctl!(none siocsmode with 137, 246);
+// ioctl!(write siocsnetaddr with DECNET_IOCTL_BASE, 0xe0; /*struct*/ dn_naddr);
+ioctl!(none siocsoutfill with 137, 242);
+ioctl!(none siocspgrp with 137, 2);
+ioctl!(none siocsrarp with 137, 98);
+ioctl!(none siocwandev with 137, 74);
+ioctl!(none siocx25callaccptapprv with 137, 232);
+ioctl!(none siocx25gcalluserdata with 137, 228);
+ioctl!(none siocx25gcausediag with 137, 230);
+ioctl!(none siocx25gdtefacilities with 137, 234);
+ioctl!(none siocx25gfacilities with 137, 226);
+ioctl!(none siocx25gsubscrip with 137, 224);
+ioctl!(none siocx25scalluserdata with 137, 229);
+ioctl!(none siocx25scausediag with 137, 236);
+ioctl!(none siocx25scudmatchlen with 137, 231);
+ioctl!(none siocx25sdtefacilities with 137, 235);
+ioctl!(none siocx25sendcallaccpt with 137, 233);
+ioctl!(none siocx25sfacilities with 137, 227);
+ioctl!(none siocx25ssubscrip with 137, 225);
+ioctl!(none sndrv_dm_fm_ioctl_clear_patches with b'H', 0x40);
+// ioctl!(read sndrv_dm_fm_ioctl_info with b'H', 0x20; /*struct*/ snd_dm_fm_info);
+// ioctl!(write sndrv_dm_fm_ioctl_play_note with b'H', 0x22; /*struct*/ snd_dm_fm_note);
+ioctl!(none sndrv_dm_fm_ioctl_reset with b'H', 0x21);
+ioctl!(write sndrv_dm_fm_ioctl_set_connection with b'H', 0x26; ::libc::c_int);
+ioctl!(write sndrv_dm_fm_ioctl_set_mode with b'H', 0x25; ::libc::c_int);
+// ioctl!(write sndrv_dm_fm_ioctl_set_params with b'H', 0x24; /*struct*/ snd_dm_fm_params);
+// ioctl!(write sndrv_dm_fm_ioctl_set_voice with b'H', 0x23; /*struct*/ snd_dm_fm_voice);
+ioctl!(none sndrv_dm_fm_oss_ioctl_play_note with 0, 33);
+ioctl!(none sndrv_dm_fm_oss_ioctl_reset with 0, 32);
+ioctl!(none sndrv_dm_fm_oss_ioctl_set_mode with 0, 36);
+ioctl!(none sndrv_dm_fm_oss_ioctl_set_opl with 0, 37);
+ioctl!(none sndrv_dm_fm_oss_ioctl_set_params with 0, 35);
+ioctl!(none sndrv_dm_fm_oss_ioctl_set_voice with 0, 34);
+// ioctl!(readwrite sndrv_emu10k1_ioctl_code_peek with b'H', 0x12; FIXME1<['emu10k1_fx8010_code_t']>);
+// ioctl!(write sndrv_emu10k1_ioctl_code_poke with b'H', 0x11; FIXME1<['emu10k1_fx8010_code_t']>);
+ioctl!(none sndrv_emu10k1_ioctl_continue with b'H', 0x81);
+ioctl!(read sndrv_emu10k1_ioctl_dbg_read with b'H', 0x84; ::libc::c_int);
+// ioctl!(read sndrv_emu10k1_ioctl_info with b'H', 0x10; FIXME1<['emu10k1_fx8010_info_t']>);
+// ioctl!(readwrite sndrv_emu10k1_ioctl_pcm_peek with b'H', 0x31; FIXME1<['emu10k1_fx8010_pcm_t']>);
+// ioctl!(write sndrv_emu10k1_ioctl_pcm_poke with b'H', 0x30; FIXME1<['emu10k1_fx8010_pcm_t']>);
+ioctl!(read sndrv_emu10k1_ioctl_pversion with b'H', 0x40; ::libc::c_int);
+ioctl!(write sndrv_emu10k1_ioctl_single_step with b'H', 0x83; ::libc::c_int);
+ioctl!(none sndrv_emu10k1_ioctl_stop with b'H', 0x80);
+// ioctl!(readwrite sndrv_emu10k1_ioctl_tram_peek with b'H', 0x22; FIXME1<['emu10k1_fx8010_tram_t']>);
+// ioctl!(write sndrv_emu10k1_ioctl_tram_poke with b'H', 0x21; FIXME1<['emu10k1_fx8010_tram_t']>);
+ioctl!(write sndrv_emu10k1_ioctl_tram_setup with b'H', 0x20; ::libc::c_int);
+ioctl!(none sndrv_emu10k1_ioctl_zero_tram_counter with b'H', 0x82);
+// ioctl!(read sndrv_firewire_ioctl_get_info with b'H', 0xf8; /*struct*/ snd_firewire_get_info);
+ioctl!(none sndrv_firewire_ioctl_lock with b'H', 0xf9);
+ioctl!(none sndrv_firewire_ioctl_unlock with b'H', 0xfa);
+// ioctl!(read sndrv_hdsp_ioctl_get_9632_aeb with b'H', 0x45; FIXME1<['hdsp_9632_aeb_t']>);
+// ioctl!(read sndrv_hdsp_ioctl_get_9632_aeb with b'H', 0x45; /*struct*/ hdsp_9632_aeb);
+// ioctl!(read sndrv_hdsp_ioctl_get_config_info with b'H', 0x41; FIXME1<['hdsp_config_info_t']>);
+// ioctl!(read sndrv_hdsp_ioctl_get_config_info with b'H', 0x41; /*struct*/ hdsp_config_info);
+// ioctl!(read sndrv_hdsp_ioctl_get_mixer with b'H', 0x44; FIXME1<['hdsp_mixer_t']>);
+// ioctl!(read sndrv_hdsp_ioctl_get_mixer with b'H', 0x44; /*struct*/ hdsp_mixer);
+// ioctl!(read sndrv_hdsp_ioctl_get_peak_rms with b'H', 0x40; FIXME1<['hdsp_peak_rms_t']>);
+// ioctl!(read sndrv_hdsp_ioctl_get_peak_rms with b'H', 0x40; /*struct*/ hdsp_peak_rms);
+// ioctl!(read sndrv_hdsp_ioctl_get_version with b'H', 0x43; FIXME1<['hdsp_version_t']>);
+// ioctl!(read sndrv_hdsp_ioctl_get_version with b'H', 0x43; /*struct*/ hdsp_version);
+// ioctl!(write sndrv_hdsp_ioctl_upload_firmware with b'H', 0x42; FIXME1<['hdsp_firmware_t']>);
+// ioctl!(write sndrv_hdsp_ioctl_upload_firmware with b'H', 0x42; /*struct*/ hdsp_firmware);
+// ioctl!(read sndrv_sb_csp_ioctl_info with b'H', 0x10; FIXME1<['snd_sb_csp_info_t']>);
+// ioctl!(read sndrv_sb_csp_ioctl_info with b'H', 0x10; /*struct*/ snd_sb_csp_info);
+// TODO #define SNDRV_SB_CSP_IOCTL_LOAD_CODE _IOC ( _IOC_WRITE , 'H' , 0x11 , sizeof ( struct snd_sb_csp_microcode ) )
+// ioctl!(write sndrv_sb_csp_ioctl_load_code with b'H', 0x11; FIXME1<['snd_sb_csp_microcode_t']>);
+ioctl!(none sndrv_sb_csp_ioctl_pause with b'H', 0x15);
+ioctl!(none sndrv_sb_csp_ioctl_restart with b'H', 0x16);
+// ioctl!(write sndrv_sb_csp_ioctl_start with b'H', 0x13; FIXME1<['snd_sb_csp_start_t']>);
+// ioctl!(write sndrv_sb_csp_ioctl_start with b'H', 0x13; /*struct*/ snd_sb_csp_start);
+ioctl!(none sndrv_sb_csp_ioctl_stop with b'H', 0x14);
+ioctl!(none sndrv_sb_csp_ioctl_unload_code with b'H', 0x12);
+ioctl!(read sonypi_iocgbat1cap with b'v', 2; u16);
+ioctl!(read sonypi_iocgbat1rem with b'v', 3; u16);
+ioctl!(read sonypi_iocgbat2cap with b'v', 4; u16);
+ioctl!(read sonypi_iocgbat2rem with b'v', 5; u16);
+ioctl!(read sonypi_iocgbatflags with b'v', 7; u8);
+ioctl!(read sonypi_iocgblue with b'v', 8; u8);
+ioctl!(read sonypi_iocgbrt with b'v', 0; u8);
+ioctl!(read sonypi_iocgfan with b'v', 10; u8);
+ioctl!(read sonypi_iocgtemp with b'v', 12; u8);
+ioctl!(write sonypi_iocsblue with b'v', 9; u8);
+ioctl!(write sonypi_iocsbrt with b'v', 0; u8);
+ioctl!(write sonypi_iocsfan with b'v', 11; u8);
+ioctl!(write spiocstype with b'q', 0x01; ::libc::c_ulong);
+// TODO #define SPI_IOC_MESSAGE ( N ) _IOW ( SPI_IOC_MAGIC , 0 , char [ SPI_MSGSIZE ( N ) ] )
+ioctl!(read spi_ioc_rd_bits_per_word with SPI_IOC_MAGIC, 3; u8);
+ioctl!(read spi_ioc_rd_lsb_first with SPI_IOC_MAGIC, 2; u8);
+ioctl!(read spi_ioc_rd_max_speed_hz with SPI_IOC_MAGIC, 4; u32);
+ioctl!(read spi_ioc_rd_mode with SPI_IOC_MAGIC, 1; u8);
+ioctl!(read spi_ioc_rd_mode32 with SPI_IOC_MAGIC, 5; u32);
+ioctl!(write spi_ioc_wr_bits_per_word with SPI_IOC_MAGIC, 3; u8);
+ioctl!(write spi_ioc_wr_lsb_first with SPI_IOC_MAGIC, 2; u8);
+ioctl!(write spi_ioc_wr_max_speed_hz with SPI_IOC_MAGIC, 4; u32);
+ioctl!(write spi_ioc_wr_mode with SPI_IOC_MAGIC, 1; u8);
+ioctl!(write spi_ioc_wr_mode32 with SPI_IOC_MAGIC, 5; u32);
+ioctl!(none sys_f_ioctlsocket with 0, 5);
+ioctl!(none tioccbrk with 84, 40);
+ioctl!(none tioccons with 84, 29);
+ioctl!(none tiocexcl with 84, 12);
+ioctl!(read tiocgdev with b'T', 0x32; ::libc::c_uint);
+ioctl!(none tiocgetd with 84, 36);
+ioctl!(read tiocgexcl with b'T', 0x40; ::libc::c_int);
+ioctl!(none tiocgicount with 84, 93);
+ioctl!(none tiocglcktrmios with 84, 86);
+ioctl!(none tiocgpgrp with 84, 15);
+ioctl!(read tiocgpkt with b'T', 0x38; ::libc::c_int);
+ioctl!(read tiocgptlck with b'T', 0x39; ::libc::c_int);
+ioctl!(read tiocgptn with b'T', 0x30; ::libc::c_uint);
+ioctl!(none tiocgrs485 with 84, 46);
+ioctl!(none tiocgserial with 84, 30);
+ioctl!(none tiocgsid with 84, 41);
+ioctl!(none tiocgsoftcar with 84, 25);
+ioctl!(none tiocgwinsz with 84, 19);
+ioctl!(bad tiocinq with 21531);
+ioctl!(none tioclinux with 84, 28);
+ioctl!(none tiocl_blankedscreen with 0, 15);
+ioctl!(none tiocl_blankscreen with 0, 14);
+ioctl!(none tiocl_getfgconsole with 0, 12);
+ioctl!(none tiocl_getkmsgredirect with 0, 17);
+ioctl!(none tiocl_getmousereporting with 0, 7);
+ioctl!(none tiocl_getshiftstate with 0, 6);
+ioctl!(none tiocl_pastesel with 0, 3);
+ioctl!(none tiocl_scrollconsole with 0, 13);
+ioctl!(none tiocl_selbuttonmask with 0, 15);
+ioctl!(none tiocl_selchar with 0, 0);
+ioctl!(none tiocl_selclear with 0, 4);
+ioctl!(none tiocl_selline with 0, 2);
+ioctl!(none tiocl_selloadlut with 0, 5);
+ioctl!(none tiocl_selmousereport with 0, 16);
+ioctl!(none tiocl_selpointer with 0, 3);
+ioctl!(none tiocl_selword with 0, 1);
+ioctl!(none tiocl_setkmsgredirect with 0, 11);
+ioctl!(none tiocl_setsel with 0, 2);
+ioctl!(none tiocl_setvesablank with 0, 10);
+ioctl!(none tiocl_unblankscreen with 0, 4);
+ioctl!(none tiocmbic with 84, 23);
+ioctl!(none tiocmbis with 84, 22);
+ioctl!(none tiocmget with 84, 21);
+ioctl!(none tiocmiwait with 84, 92);
+ioctl!(none tiocmset with 84, 24);
+ioctl!(none tiocm_car with 0, 64);
+ioctl!(bad tiocm_cd with 64);
+ioctl!(none tiocm_cts with 0, 32);
+ioctl!(none tiocm_dsr with 1, 0);
+ioctl!(none tiocm_dtr with 0, 2);
+ioctl!(none tiocm_le with 0, 1);
+ioctl!(none tiocm_loop with 128, 0);
+ioctl!(none tiocm_out1 with 32, 0);
+ioctl!(none tiocm_out2 with 64, 0);
+ioctl!(bad tiocm_ri with 128);
+ioctl!(none tiocm_rng with 0, 128);
+ioctl!(none tiocm_rts with 0, 4);
+ioctl!(none tiocm_sr with 0, 16);
+ioctl!(none tiocm_st with 0, 8);
+ioctl!(none tiocnotty with 84, 34);
+ioctl!(none tiocnxcl with 84, 13);
+ioctl!(none tiocoutq with 84, 17);
+ioctl!(none tiocpkt with 84, 32);
+ioctl!(none tiocpkt_data with 0, 0);
+ioctl!(none tiocpkt_dostop with 0, 32);
+ioctl!(none tiocpkt_flushread with 0, 1);
+ioctl!(none tiocpkt_flushwrite with 0, 2);
+ioctl!(none tiocpkt_ioctl with 0, 64);
+ioctl!(none tiocpkt_nostop with 0, 16);
+ioctl!(none tiocpkt_start with 0, 8);
+ioctl!(none tiocpkt_stop with 0, 4);
+ioctl!(none tiocsbrk with 84, 39);
+ioctl!(none tiocsctty with 84, 14);
+ioctl!(none tiocserconfig with 84, 83);
+ioctl!(none tiocsergetlsr with 84, 89);
+ioctl!(none tiocsergetmulti with 84, 90);
+ioctl!(none tiocsergstruct with 84, 88);
+ioctl!(none tiocsergwild with 84, 84);
+ioctl!(none tiocsersetmulti with 84, 91);
+ioctl!(none tiocserswild with 84, 85);
+ioctl!(none tiocser_temt with 0, 1);
+ioctl!(none tiocsetd with 84, 35);
+ioctl!(write tiocsig with b'T', 0x36; ::libc::c_int);
+ioctl!(none tiocslcktrmios with 84, 87);
+ioctl!(none tiocspgrp with 84, 16);
+ioctl!(write tiocsptlck with b'T', 0x31; ::libc::c_int);
+ioctl!(none tiocsrs485 with 84, 47);
+ioctl!(none tiocsserial with 84, 31);
+ioctl!(none tiocssoftcar with 84, 26);
+ioctl!(none tiocsti with 84, 18);
+ioctl!(none tiocswinsz with 84, 20);
+ioctl!(none tiocvhangup with 84, 55);
+// ioctl!(write ubi_iocatt with UBI_CTRL_IOC_MAGIC, 64; /*struct*/ ubi_attach_req);
+ioctl!(write ubi_iocdet with UBI_CTRL_IOC_MAGIC, 65; i32);
+ioctl!(write ubi_iocebch with UBI_VOL_IOC_MAGIC, 2; i32);
+ioctl!(write ubi_ioceber with UBI_VOL_IOC_MAGIC, 1; i32);
+ioctl!(read ubi_iocebismap with UBI_VOL_IOC_MAGIC, 5; i32);
+// ioctl!(write ubi_iocebmap with UBI_VOL_IOC_MAGIC, 3; /*struct*/ ubi_map_req);
+ioctl!(write ubi_iocebunmap with UBI_VOL_IOC_MAGIC, 4; i32);
+// ioctl!(write ubi_iocmkvol with UBI_IOC_MAGIC, 0; /*struct*/ ubi_mkvol_req);
+ioctl!(write ubi_iocrmvol with UBI_IOC_MAGIC, 1; i32);
+// ioctl!(write ubi_iocrnvol with UBI_IOC_MAGIC, 3; /*struct*/ ubi_rnvol_req);
+// ioctl!(write ubi_iocrsvol with UBI_IOC_MAGIC, 2; /*struct*/ ubi_rsvol_req);
+// ioctl!(write ubi_iocsetvolprop with UBI_VOL_IOC_MAGIC, 6; /*struct*/ ubi_set_vol_prop_req);
+// ioctl!(write ubi_iocvolcrblk with UBI_VOL_IOC_MAGIC, 7; /*struct*/ ubi_blkcreate_req);
+ioctl!(none ubi_iocvolrmblk with UBI_VOL_IOC_MAGIC, 8);
+ioctl!(write ubi_iocvolup with UBI_VOL_IOC_MAGIC, 0; i64);
+// ioctl!(readwrite usbdevfs_ioctl with b'U', 18; /*struct*/ usbdevfs_ioctl);
+// ioctl!(readwrite usbdevfs_ioctl32 with b'U', 18; /*struct*/ usbdevfs_ioctl32);
+ioctl!(none usbtmc_ioctl_abort_bulk_in with USBTMC_IOC_NR, 4);
+ioctl!(none usbtmc_ioctl_abort_bulk_out with USBTMC_IOC_NR, 3);
+ioctl!(none usbtmc_ioctl_clear with USBTMC_IOC_NR, 2);
+ioctl!(none usbtmc_ioctl_clear_in_halt with USBTMC_IOC_NR, 7);
+ioctl!(none usbtmc_ioctl_clear_out_halt with USBTMC_IOC_NR, 6);
+ioctl!(none usbtmc_ioctl_indicator_pulse with USBTMC_IOC_NR, 1);
+// ioctl!(readwrite uvcioc_ctrl_map with b'u', 0x20; /*struct*/ uvc_xu_control_mapping);
+// ioctl!(readwrite uvcioc_ctrl_query with b'u', 0x21; /*struct*/ uvc_xu_control_query);
+// ioctl!(read vfat_ioctl_readdir_both with b'r', 1; [/*struct*/ __fat_dirent; 2]);
+// ioctl!(read vfat_ioctl_readdir_short with b'r', 2; [/*struct*/ __fat_dirent; 2]);
+// ioctl!(readwrite vidioc_create_bufs with b'V', 92; /*struct*/ v4l2_create_buffers);
+// ioctl!(readwrite vidioc_cropcap with b'V', 58; /*struct*/ v4l2_cropcap);
+// ioctl!(readwrite vidioc_dbg_g_chip_info with b'V', 102; /*struct*/ v4l2_dbg_chip_info);
+// ioctl!(readwrite vidioc_dbg_g_register with b'V', 80; /*struct*/ v4l2_dbg_register);
+// ioctl!(write vidioc_dbg_s_register with b'V', 79; /*struct*/ v4l2_dbg_register);
+// ioctl!(readwrite vidioc_decoder_cmd with b'V', 96; /*struct*/ v4l2_decoder_cmd);
+// ioctl!(readwrite vidioc_dqbuf with b'V', 17; /*struct*/ v4l2_buffer);
+// ioctl!(read vidioc_dqevent with b'V', 89; /*struct*/ v4l2_event);
+// ioctl!(readwrite vidioc_dv_timings_cap with b'V', 100; /*struct*/ v4l2_dv_timings_cap);
+// ioctl!(readwrite vidioc_encoder_cmd with b'V', 77; /*struct*/ v4l2_encoder_cmd);
+// ioctl!(readwrite vidioc_enumaudio with b'V', 65; /*struct*/ v4l2_audio);
+// ioctl!(readwrite vidioc_enumaudout with b'V', 66; /*struct*/ v4l2_audioout);
+// ioctl!(readwrite vidioc_enuminput with b'V', 26; /*struct*/ v4l2_input);
+// ioctl!(readwrite vidioc_enumoutput with b'V', 48; /*struct*/ v4l2_output);
+// ioctl!(readwrite vidioc_enumstd with b'V', 25; /*struct*/ v4l2_standard);
+// ioctl!(readwrite vidioc_enum_dv_timings with b'V', 98; /*struct*/ v4l2_enum_dv_timings);
+// ioctl!(readwrite vidioc_enum_fmt with b'V', 2; /*struct*/ v4l2_fmtdesc);
+// ioctl!(readwrite vidioc_enum_frameintervals with b'V', 75; /*struct*/ v4l2_frmivalenum);
+// ioctl!(readwrite vidioc_enum_framesizes with b'V', 74; /*struct*/ v4l2_frmsizeenum);
+// ioctl!(readwrite vidioc_enum_freq_bands with b'V', 101; /*struct*/ v4l2_frequency_band);
+// ioctl!(readwrite vidioc_expbuf with b'V', 16; /*struct*/ v4l2_exportbuffer);
+// ioctl!(read vidioc_g_audio with b'V', 33; /*struct*/ v4l2_audio);
+// ioctl!(read vidioc_g_audout with b'V', 49; /*struct*/ v4l2_audioout);
+// ioctl!(readwrite vidioc_g_crop with b'V', 59; /*struct*/ v4l2_crop);
+// ioctl!(readwrite vidioc_g_ctrl with b'V', 27; /*struct*/ v4l2_control);
+// ioctl!(readwrite vidioc_g_dv_timings with b'V', 88; /*struct*/ v4l2_dv_timings);
+// ioctl!(readwrite vidioc_g_edid with b'V', 40; /*struct*/ v4l2_edid);
+// ioctl!(read vidioc_g_enc_index with b'V', 76; /*struct*/ v4l2_enc_idx);
+// ioctl!(readwrite vidioc_g_ext_ctrls with b'V', 71; /*struct*/ v4l2_ext_controls);
+// ioctl!(read vidioc_g_fbuf with b'V', 10; /*struct*/ v4l2_framebuffer);
+// ioctl!(readwrite vidioc_g_fmt with b'V', 4; /*struct*/ v4l2_format);
+// ioctl!(readwrite vidioc_g_frequency with b'V', 56; /*struct*/ v4l2_frequency);
+ioctl!(read vidioc_g_input with b'V', 38; ::libc::c_int);
+// ioctl!(read vidioc_g_jpegcomp with b'V', 61; /*struct*/ v4l2_jpegcompression);
+// ioctl!(readwrite vidioc_g_modulator with b'V', 54; /*struct*/ v4l2_modulator);
+ioctl!(read vidioc_g_output with b'V', 46; ::libc::c_int);
+// ioctl!(readwrite vidioc_g_parm with b'V', 21; /*struct*/ v4l2_streamparm);
+ioctl!(read vidioc_g_priority with b'V', 67; u32);
+// ioctl!(readwrite vidioc_g_selection with b'V', 94; /*struct*/ v4l2_selection);
+// ioctl!(readwrite vidioc_g_sliced_vbi_cap with b'V', 69; /*struct*/ v4l2_sliced_vbi_cap);
+// ioctl!(read vidioc_g_std with b'V', 23; FIXME1<['v4l2_std_id']>);
+// ioctl!(readwrite vidioc_g_tuner with b'V', 29; /*struct*/ v4l2_tuner);
+ioctl!(none vidioc_log_status with b'V', 70);
+// ioctl!(readwrite vidioc_omap3isp_aewb_cfg with b'V', BASE_VIDIOC_PRIVATE + 3; /*struct*/ omap3isp_h3a_aewb_config);
+// ioctl!(readwrite vidioc_omap3isp_af_cfg with b'V', BASE_VIDIOC_PRIVATE + 5; /*struct*/ omap3isp_h3a_af_config);
+// ioctl!(readwrite vidioc_omap3isp_ccdc_cfg with b'V', BASE_VIDIOC_PRIVATE + 1; /*struct*/ omap3isp_ccdc_update_config);
+// ioctl!(readwrite vidioc_omap3isp_hist_cfg with b'V', BASE_VIDIOC_PRIVATE + 4; /*struct*/ omap3isp_hist_config);
+// ioctl!(readwrite vidioc_omap3isp_prv_cfg with b'V', BASE_VIDIOC_PRIVATE + 2; /*struct*/ omap3isp_prev_update_config);
+ioctl!(readwrite vidioc_omap3isp_stat_en with b'V', BASE_VIDIOC_PRIVATE + 7; ::libc::c_ulong);
+// ioctl!(readwrite vidioc_omap3isp_stat_req with b'V', BASE_VIDIOC_PRIVATE + 6; /*struct*/ omap3isp_stat_data);
+ioctl!(write vidioc_overlay with b'V', 14; ::libc::c_int);
+// ioctl!(readwrite vidioc_prepare_buf with b'V', 93; /*struct*/ v4l2_buffer);
+// ioctl!(readwrite vidioc_qbuf with b'V', 15; /*struct*/ v4l2_buffer);
+// ioctl!(readwrite vidioc_querybuf with b'V', 9; /*struct*/ v4l2_buffer);
+// ioctl!(read vidioc_querycap with b'V', 0; /*struct*/ v4l2_capability);
+// ioctl!(readwrite vidioc_queryctrl with b'V', 36; /*struct*/ v4l2_queryctrl);
+// ioctl!(readwrite vidioc_querymenu with b'V', 37; /*struct*/ v4l2_querymenu);
+// ioctl!(read vidioc_querystd with b'V', 63; FIXME1<['v4l2_std_id']>);
+// ioctl!(read vidioc_query_dv_timings with b'V', 99; /*struct*/ v4l2_dv_timings);
+// ioctl!(readwrite vidioc_query_ext_ctrl with b'V', 103; /*struct*/ v4l2_query_ext_ctrl);
+// ioctl!(readwrite vidioc_reqbufs with b'V', 8; /*struct*/ v4l2_requestbuffers);
+ioctl!(none vidioc_reserved with b'V', 1);
+ioctl!(write vidioc_streamoff with b'V', 19; ::libc::c_int);
+ioctl!(write vidioc_streamon with b'V', 18; ::libc::c_int);
+// ioctl!(readwrite vidioc_subdev_dv_timings_cap with b'V', 100; /*struct*/ v4l2_dv_timings_cap);
+// ioctl!(readwrite vidioc_subdev_enum_dv_timings with b'V', 98; /*struct*/ v4l2_enum_dv_timings);
+// ioctl!(readwrite vidioc_subdev_enum_frame_interval with b'V', 75; /*struct*/ v4l2_subdev_frame_interval_enum);
+// ioctl!(readwrite vidioc_subdev_enum_frame_size with b'V', 74; /*struct*/ v4l2_subdev_frame_size_enum);
+// ioctl!(readwrite vidioc_subdev_enum_mbus_code with b'V', 2; /*struct*/ v4l2_subdev_mbus_code_enum);
+// ioctl!(readwrite vidioc_subdev_g_crop with b'V', 59; /*struct*/ v4l2_subdev_crop);
+// ioctl!(readwrite vidioc_subdev_g_dv_timings with b'V', 88; /*struct*/ v4l2_dv_timings);
+// ioctl!(readwrite vidioc_subdev_g_edid with b'V', 40; /*struct*/ v4l2_edid);
+// ioctl!(readwrite vidioc_subdev_g_fmt with b'V', 4; /*struct*/ v4l2_subdev_format);
+// ioctl!(readwrite vidioc_subdev_g_frame_interval with b'V', 21; /*struct*/ v4l2_subdev_frame_interval);
+// ioctl!(readwrite vidioc_subdev_g_selection with b'V', 61; /*struct*/ v4l2_subdev_selection);
+// ioctl!(read vidioc_subdev_query_dv_timings with b'V', 99; /*struct*/ v4l2_dv_timings);
+// ioctl!(readwrite vidioc_subdev_s_crop with b'V', 60; /*struct*/ v4l2_subdev_crop);
+// ioctl!(readwrite vidioc_subdev_s_dv_timings with b'V', 87; /*struct*/ v4l2_dv_timings);
+// ioctl!(readwrite vidioc_subdev_s_edid with b'V', 41; /*struct*/ v4l2_edid);
+// ioctl!(readwrite vidioc_subdev_s_fmt with b'V', 5; /*struct*/ v4l2_subdev_format);
+// ioctl!(readwrite vidioc_subdev_s_frame_interval with b'V', 22; /*struct*/ v4l2_subdev_frame_interval);
+// ioctl!(readwrite vidioc_subdev_s_selection with b'V', 62; /*struct*/ v4l2_subdev_selection);
+// ioctl!(write vidioc_subscribe_event with b'V', 90; /*struct*/ v4l2_event_subscription);
+// ioctl!(write vidioc_s_audio with b'V', 34; /*struct*/ v4l2_audio);
+// ioctl!(write vidioc_s_audout with b'V', 50; /*struct*/ v4l2_audioout);
+// ioctl!(write vidioc_s_crop with b'V', 60; /*struct*/ v4l2_crop);
+// ioctl!(readwrite vidioc_s_ctrl with b'V', 28; /*struct*/ v4l2_control);
+// ioctl!(readwrite vidioc_s_dv_timings with b'V', 87; /*struct*/ v4l2_dv_timings);
+// ioctl!(readwrite vidioc_s_edid with b'V', 41; /*struct*/ v4l2_edid);
+// ioctl!(readwrite vidioc_s_ext_ctrls with b'V', 72; /*struct*/ v4l2_ext_controls);
+// ioctl!(write vidioc_s_fbuf with b'V', 11; /*struct*/ v4l2_framebuffer);
+// ioctl!(readwrite vidioc_s_fmt with b'V', 5; /*struct*/ v4l2_format);
+// ioctl!(write vidioc_s_frequency with b'V', 57; /*struct*/ v4l2_frequency);
+// ioctl!(write vidioc_s_hw_freq_seek with b'V', 82; /*struct*/ v4l2_hw_freq_seek);
+ioctl!(readwrite vidioc_s_input with b'V', 39; ::libc::c_int);
+// ioctl!(write vidioc_s_jpegcomp with b'V', 62; /*struct*/ v4l2_jpegcompression);
+// ioctl!(write vidioc_s_modulator with b'V', 55; /*struct*/ v4l2_modulator);
+ioctl!(readwrite vidioc_s_output with b'V', 47; ::libc::c_int);
+// ioctl!(readwrite vidioc_s_parm with b'V', 22; /*struct*/ v4l2_streamparm);
+ioctl!(write vidioc_s_priority with b'V', 68; u32);
+// ioctl!(readwrite vidioc_s_selection with b'V', 95; /*struct*/ v4l2_selection);
+// ioctl!(write vidioc_s_std with b'V', 24; FIXME1<['v4l2_std_id']>);
+// ioctl!(write vidioc_s_tuner with b'V', 30; /*struct*/ v4l2_tuner);
+// ioctl!(readwrite vidioc_try_decoder_cmd with b'V', 97; /*struct*/ v4l2_decoder_cmd);
+// ioctl!(readwrite vidioc_try_encoder_cmd with b'V', 78; /*struct*/ v4l2_encoder_cmd);
+// ioctl!(readwrite vidioc_try_ext_ctrls with b'V', 73; /*struct*/ v4l2_ext_controls);
+// ioctl!(readwrite vidioc_try_fmt with b'V', 64; /*struct*/ v4l2_format);
+// ioctl!(write vidioc_unsubscribe_event with b'V', 91; /*struct*/ v4l2_event_subscription);
+ioctl!(read wdioc_getbootstatus with WATCHDOG_IOCTL_BASE, 2; ::libc::c_int);
+ioctl!(read wdioc_getpretimeout with WATCHDOG_IOCTL_BASE, 9; ::libc::c_int);
+ioctl!(read wdioc_getstatus with WATCHDOG_IOCTL_BASE, 1; ::libc::c_int);
+// ioctl!(read wdioc_getsupport with WATCHDOG_IOCTL_BASE, 0; /*struct*/ watchdog_info);
+ioctl!(read wdioc_gettemp with WATCHDOG_IOCTL_BASE, 3; ::libc::c_int);
+ioctl!(read wdioc_gettimeleft with WATCHDOG_IOCTL_BASE, 10; ::libc::c_int);
+ioctl!(read wdioc_gettimeout with WATCHDOG_IOCTL_BASE, 7; ::libc::c_int);
+ioctl!(read wdioc_keepalive with WATCHDOG_IOCTL_BASE, 5; ::libc::c_int);
+ioctl!(read wdioc_setoptions with WATCHDOG_IOCTL_BASE, 4; ::libc::c_int);
+ioctl!(readwrite wdioc_setpretimeout with WATCHDOG_IOCTL_BASE, 8; ::libc::c_int);
+ioctl!(readwrite wdioc_settimeout with WATCHDOG_IOCTL_BASE, 6; ::libc::c_int);
+ioctl!(readwrite x86_ioc_rdmsr_regs with b'c', 0xA0; [u32; 8]);
+ioctl!(readwrite x86_ioc_wrmsr_regs with b'c', 0xA1; [u32; 8]);
+// ioctl!(write xfs_ioc_allocsp with b'X', 10; /*struct*/ xfs_flock64);
+// ioctl!(write xfs_ioc_allocsp64 with b'X', 36; /*struct*/ xfs_flock64);
+// ioctl!(write xfs_ioc_attrlist_by_handle with b'X', 122; /*struct*/ xfs_fsop_attrlist_handlereq);
+// ioctl!(write xfs_ioc_attrmulti_by_handle with b'X', 123; /*struct*/ xfs_fsop_attrmulti_handlereq);
+// ioctl!(read xfs_ioc_dioinfo with b'X', 30; /*struct*/ dioattr);
+// ioctl!(write xfs_ioc_error_clearall with b'X', 117; /*struct*/ xfs_error_injection);
+// ioctl!(write xfs_ioc_error_injection with b'X', 116; /*struct*/ xfs_error_injection);
+// ioctl!(readwrite xfs_ioc_fd_to_handle with b'X', 106; /*struct*/ xfs_fsop_handlereq);
+// ioctl!(write xfs_ioc_freesp with b'X', 11; /*struct*/ xfs_flock64);
+// ioctl!(write xfs_ioc_freesp64 with b'X', 37; /*struct*/ xfs_flock64);
+ioctl!(readwrite xfs_ioc_freeze with b'X', 119; ::libc::c_int);
+// ioctl!(read xfs_ioc_free_eofblocks with b'X', 58; /*struct*/ xfs_fs_eofblocks);
+// ioctl!(readwrite xfs_ioc_fsbulkstat with b'X', 101; /*struct*/ xfs_fsop_bulkreq);
+// ioctl!(readwrite xfs_ioc_fsbulkstat_single with b'X', 102; /*struct*/ xfs_fsop_bulkreq);
+// ioctl!(read xfs_ioc_fscounts with b'X', 113; /*struct*/ xfs_fsop_counts);
+// ioctl!(read xfs_ioc_fsgeometry with b'X', 124; /*struct*/ xfs_fsop_geom);
+// ioctl!(read xfs_ioc_fsgeometry_v1 with b'X', 100; /*struct*/ xfs_fsop_geom_v1);
+// ioctl!(read xfs_ioc_fsgetxattr with b'X', 31; /*struct*/ fsxattr);
+// ioctl!(read xfs_ioc_fsgetxattra with b'X', 45; /*struct*/ fsxattr);
+// ioctl!(write xfs_ioc_fsgrowfsdata with b'X', 110; /*struct*/ xfs_growfs_data);
+// ioctl!(write xfs_ioc_fsgrowfslog with b'X', 111; /*struct*/ xfs_growfs_log);
+// ioctl!(write xfs_ioc_fsgrowfsrt with b'X', 112; /*struct*/ xfs_growfs_rt);
+// ioctl!(readwrite xfs_ioc_fsinumbers with b'X', 103; /*struct*/ xfs_fsop_bulkreq);
+// ioctl!(write xfs_ioc_fssetdm with b'X', 39; /*struct*/ fsdmidata);
+// ioctl!(write xfs_ioc_fssetdm_by_handle with b'X', 121; /*struct*/ xfs_fsop_setdm_handlereq);
+// ioctl!(write xfs_ioc_fssetxattr with b'X', 32; /*struct*/ fsxattr);
+// ioctl!(readwrite xfs_ioc_getbmap with b'X', 38; /*struct*/ getbmap);
+// ioctl!(readwrite xfs_ioc_getbmapa with b'X', 44; /*struct*/ getbmap);
+// ioctl!(readwrite xfs_ioc_getbmapx with b'X', 56; /*struct*/ getbmap);
+ioctl!(read xfs_ioc_getversion with b'v', 1; ::libc::c_long);
+ioctl!(read xfs_ioc_getxflags with b'f', 1; ::libc::c_long);
+// ioctl!(read xfs_ioc_get_resblks with b'X', 115; /*struct*/ xfs_fsop_resblks);
+ioctl!(read xfs_ioc_goingdown with b'X', 125; u32);
+// ioctl!(readwrite xfs_ioc_open_by_handle with b'X', 107; /*struct*/ xfs_fsop_handlereq);
+// ioctl!(readwrite xfs_ioc_path_to_fshandle with b'X', 104; /*struct*/ xfs_fsop_handlereq);
+// ioctl!(readwrite xfs_ioc_path_to_handle with b'X', 105; /*struct*/ xfs_fsop_handlereq);
+// ioctl!(readwrite xfs_ioc_readlink_by_handle with b'X', 108; /*struct*/ xfs_fsop_handlereq);
+// ioctl!(write xfs_ioc_resvsp with b'X', 40; /*struct*/ xfs_flock64);
+// ioctl!(write xfs_ioc_resvsp64 with b'X', 42; /*struct*/ xfs_flock64);
+ioctl!(write xfs_ioc_setxflags with b'f', 2; ::libc::c_long);
+// ioctl!(readwrite xfs_ioc_set_resblks with b'X', 114; /*struct*/ xfs_fsop_resblks);
+// ioctl!(readwrite xfs_ioc_swapext with b'X', 109; /*struct*/ xfs_swapext);
+ioctl!(readwrite xfs_ioc_thaw with b'X', 120; ::libc::c_int);
+// ioctl!(write xfs_ioc_unresvsp with b'X', 41; /*struct*/ xfs_flock64);
+// ioctl!(write xfs_ioc_unresvsp64 with b'X', 43; /*struct*/ xfs_flock64);
+// ioctl!(write xfs_ioc_zero_range with b'X', 57; /*struct*/ xfs_flock64);
+ioctl!(none fioclex with 84, 81);
+ioctl!(none cz_nboards with 77, 250);
+ioctl!(none cz_boot_start with 77, 251);
+ioctl!(none cz_boot_data with 77, 252);
+ioctl!(none cz_boot_end with 77, 253);
+ioctl!(none cz_test with 77, 254);
diff --git a/src/sys/ioctl/platform/linux.rs b/src/sys/ioctl/platform/linux.rs
new file mode 100644
index 00000000..55d1755a
--- /dev/null
+++ b/src/sys/ioctl/platform/linux.rs
@@ -0,0 +1,415 @@
+#[doc(hidden)]
+pub const NRBITS: u32 = 8;
+#[doc(hidden)]
+pub const TYPEBITS: u32 = 8;
+
+#[cfg(target_arch = "mips")]
+mod consts {
+ #[doc(hidden)]
+ pub const NONE: u8 = 1;
+ #[doc(hidden)]
+ pub const READ: u8 = 2;
+ #[doc(hidden)]
+ pub const WRITE: u8 = 4;
+ #[doc(hidden)]
+ pub const SIZEBITS: u8 = 13;
+ #[doc(hidden)]
+ pub const DIRBITS: u8 = 3;
+}
+#[cfg(target_arch = "powerpc")]
+mod consts {
+ #[doc(hidden)]
+ pub const NONE: u8 = 1;
+ #[doc(hidden)]
+ pub const READ: u8 = 2;
+ #[doc(hidden)]
+ pub const WRITE: u8 = 4;
+ #[doc(hidden)]
+ pub const SIZEBITS: u8 = 13;
+ #[doc(hidden)]
+ pub const DIRBITS: u8 = 3;
+}
+
+#[cfg(not(any(target_arch = "powerpc", target_arch = "mips", target_arch = "x86", target_arch = "arm", target_arch = "x86_64", target_arch = "aarch64")))]
+use this_arch_not_supported;
+
+// "Generic" ioctl protocol
+#[cfg(any(target_arch = "x86", target_arch = "arm", target_arch = "x86_64", target_arch = "aarch64"))]
+mod consts {
+ #[doc(hidden)]
+ pub const NONE: u8 = 0;
+ #[doc(hidden)]
+ pub const READ: u8 = 2;
+ #[doc(hidden)]
+ pub const WRITE: u8 = 1;
+ #[doc(hidden)]
+ pub const SIZEBITS: u8 = 14;
+ #[doc(hidden)]
+ pub const DIRBITS: u8 = 2;
+}
+
+#[doc(hidden)]
+pub use self::consts::*;
+
+#[doc(hidden)]
+pub const NRSHIFT: u32 = 0;
+#[doc(hidden)]
+pub const TYPESHIFT: u32 = NRSHIFT + NRBITS as u32;
+#[doc(hidden)]
+pub const SIZESHIFT: u32 = TYPESHIFT + TYPEBITS as u32;
+#[doc(hidden)]
+pub const DIRSHIFT: u32 = SIZESHIFT + SIZEBITS as u32;
+
+#[doc(hidden)]
+pub const NRMASK: u32 = (1 << NRBITS) - 1;
+#[doc(hidden)]
+pub const TYPEMASK: u32 = (1 << TYPEBITS) - 1;
+#[doc(hidden)]
+pub const SIZEMASK: u32 = (1 << SIZEBITS) - 1;
+#[doc(hidden)]
+pub const DIRMASK: u32 = (1 << DIRBITS) - 1;
+
+/// Encode an ioctl command.
+#[macro_export]
+macro_rules! ioc {
+ ($dir:expr, $ty:expr, $nr:expr, $sz:expr) => (
+ (($dir as u32) << $crate::sys::ioctl::DIRSHIFT) |
+ (($ty as u32) << $crate::sys::ioctl::TYPESHIFT) |
+ (($nr as u32) << $crate::sys::ioctl::NRSHIFT) |
+ (($sz as u32) << $crate::sys::ioctl::SIZESHIFT))
+}
+
+/// Encode an ioctl command that has no associated data.
+#[macro_export]
+macro_rules! io {
+ ($ty:expr, $nr:expr) => (ioc!($crate::sys::ioctl::NONE, $ty, $nr, 0))
+}
+
+/// Encode an ioctl command that reads.
+#[macro_export]
+macro_rules! ior {
+ ($ty:expr, $nr:expr, $sz:expr) => (ioc!($crate::sys::ioctl::READ, $ty, $nr, $sz))
+}
+
+/// Encode an ioctl command that writes.
+#[macro_export]
+macro_rules! iow {
+ ($ty:expr, $nr:expr, $sz:expr) => (ioc!($crate::sys::ioctl::WRITE, $ty, $nr, $sz))
+}
+
+/// Encode an ioctl command that both reads and writes.
+#[macro_export]
+macro_rules! iorw {
+ ($ty:expr, $nr:expr, $sz:expr) => (ioc!($crate::sys::ioctl::READ | $crate::sys::ioctl::WRITE, $ty, $nr, $sz))
+}
+
+/// Declare a wrapper function around an ioctl.
+#[macro_export]
+macro_rules! ioctl {
+ (bad $name:ident with $nr:expr) => (
+ pub unsafe fn $name(fd: $crate::sys::ioctl::libc::c_int, data: *mut u8) -> $crate::sys::ioctl::libc::c_int {
+ $crate::sys::ioctl::ioctl(fd, $nr as $crate::sys::ioctl::libc::c_ulong, data)
+ }
+ );
+ (none $name:ident with $ioty:expr, $nr:expr) => (
+ pub unsafe fn $name(fd: $crate::sys::ioctl::libc::c_int) -> $crate::sys::ioctl::libc::c_int {
+ $crate::sys::ioctl::ioctl(fd, io!($ioty, $nr) as $crate::sys::ioctl::libc::c_ulong)
+ }
+ );
+ (read $name:ident with $ioty:expr, $nr:expr; $ty:ty) => (
+ pub unsafe fn $name(fd: $crate::sys::ioctl::libc::c_int, val: *mut $ty) -> $crate::sys::ioctl::libc::c_int {
+ $crate::sys::ioctl::ioctl(fd, ior!($ioty, $nr, ::std::mem::size_of::<$ty>()) as $crate::sys::ioctl::libc::c_ulong, val)
+ }
+ );
+ (write $name:ident with $ioty:expr, $nr:expr; $ty:ty) => (
+ pub unsafe fn $name(fd: $crate::sys::ioctl::libc::c_int, val: *const $ty) -> $crate::sys::ioctl::libc::c_int {
+ $crate::sys::ioctl::ioctl(fd, ior!($ioty, $nr, ::std::mem::size_of::<$ty>()) as $crate::sys::ioctl::libc::c_ulong, val)
+ }
+ );
+ (readwrite $name:ident with $ioty:expr, $nr:expr; $ty:ty) => (
+ pub unsafe fn $name(fd: $crate::sys::ioctl::libc::c_int, val: *mut $ty) -> $crate::sys::ioctl::libc::c_int {
+ $crate::sys::ioctl::ioctl(fd, iorw!($ioty, $nr, ::std::mem::size_of::<$ty>()) as $crate::sys::ioctl::libc::c_ulong, val)
+ }
+ );
+ (read buf $name:ident with $ioty:expr, $nr:expr; $ty:ty) => (
+ pub unsafe fn $name(fd: $crate::sys::ioctl::libc::c_int, val: *mut $ty, len: usize) -> $crate::sys::ioctl::libc::c_int {
+ $crate::sys::ioctl::ioctl(fd, ior!($ioty, $nr, len) as $crate::sys::ioctl::libc::c_ulong, val)
+ }
+ );
+ (write buf $name:ident with $ioty:expr, $nr:expr; $ty:ty) => (
+ pub unsafe fn $name(fd: $crate::sys::ioctl::libc::c_int, val: *const $ty, len: usize) -> $crate::sys::ioctl::libc::c_int {
+ $crate::sys::ioctl::ioctl(fd, ior!($ioty, $nr, len) as $crate::sys::ioctl::libc::c_ulong, val)
+ }
+ );
+ (readwrite buf $name:ident with $ioty:expr, $nr:expr; $ty:ty) => (
+ pub unsafe fn $name(fd: $crate::sys::ioctl::libc::c_int, val: *const $ty, len: usize) -> $crate::sys::ioctl::libc::c_int {
+ $crate::sys::ioctl::ioctl(fd, iorw!($ioty, $nr, len) as $crate::sys::ioctl::libc::c_ulong, val)
+ }
+ );
+}
+
+/// Extracts the "direction" (read/write/none) from an encoded ioctl command.
+#[inline(always)]
+pub fn ioc_dir(nr: u32) -> u8 {
+ ((nr >> DIRSHIFT) & DIRMASK) as u8
+}
+
+/// Extracts the type from an encoded ioctl command.
+#[inline(always)]
+pub fn ioc_type(nr: u32) -> u32 {
+ (nr >> TYPESHIFT) & TYPEMASK
+}
+
+/// Extracts the ioctl number from an encoded ioctl command.
+#[inline(always)]
+pub fn ioc_nr(nr: u32) -> u32 {
+ (nr >> NRSHIFT) & NRMASK
+}
+
+/// Extracts the size from an encoded ioctl command.
+#[inline(always)]
+pub fn ioc_size(nr: u32) -> u32 {
+ ((nr >> SIZESHIFT) as u32) & SIZEMASK
+}
+
+#[doc(hidden)]
+pub const IN: u32 = (WRITE as u32) << DIRSHIFT;
+#[doc(hidden)]
+pub const OUT: u32 = (READ as u32) << DIRSHIFT;
+#[doc(hidden)]
+pub const INOUT: u32 = ((READ|WRITE) as u32) << DIRSHIFT;
+#[doc(hidden)]
+pub const SIZE_MASK: u32 = SIZEMASK << SIZESHIFT;
+
+const WATCHDOG_IOCTL_BASE: u32 = b'W' as u32;
+const BASE_VIDIOC_PRIVATE: u32 = 192;
+const USBTMC_IOC_NR: u32 = 91;
+const UBI_VOL_IOC_MAGIC: u32 = b'O' as u32;
+const UBI_IOC_MAGIC: u32 = b'o' as u32;
+const UBI_CTRL_IOC_MAGIC: u32 = b'o' as u32;
+const SPI_IOC_MAGIC: u32 = b'k' as u32;
+const MGSL_MAGIC_IOC: u32 = b'm' as u32;
+const DRM_IOCTL_BASE: u32 = b'd' as u32;
+const DRM_COMMAND_BASE: u32 = 0x40;
+const BTRFS_IOCTL_MAGIC: u32 = 0x94;
+const BTRFS_LABEL_SIZE: usize = 256;
+//const SIOCPARM_MASK: u32 = 0x1fff;
+
+const ATMIOC_ITF: u32 = 0x80;
+const ATMIOC_CLIP: u32 = 0xe0;
+const RFKILL_IOC_NOINPUT: u32 = 1;
+const RFKILL_IOC_MAGIC: u32 = b'R' as u32;
+const IFNAMSIZ: usize = 16;
+const DECNET_IOCTL_BASE: u32 = 0x89;
+const ABS_MAX: usize = 0x3f;
+const ABS_CNT: usize = ABS_MAX+1;
+const CXL_MAGIC: u32 = 0xCA;
+const CM_IOC_MAGIC: u32 = b'c' as u32;
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct input_event {
+ pub time: ::libc::timeval,
+ pub _type: u16,
+ pub code: u16,
+ pub value: i32,
+}
+impl ::std::default::Default for input_event {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+impl ::std::fmt::Debug for input_event {
+ fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
+ write!(f, "input_event {{ time: {{ tv_sec: {}, tv_usec: {} }}, _type: {}, code: {}, value: {}",
+ self.time.tv_sec, self.time.tv_usec, self._type, self.code, self.value)
+ }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub struct input_id {
+ pub bustype: u16,
+ pub vendor: u16,
+ pub product: u16,
+ pub version: u16,
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct ff_effect {
+ pub _type: u16,
+ pub id: i16,
+ pub direction: u16,
+ pub trigger: ff_trigger,
+ pub replay: ff_replay,
+ pub u: Union_Unnamed16,
+}
+
+#[repr(C)]
+#[derive(Copy, Clone)]
+pub struct Union_Unnamed16 {
+ pub _bindgen_data_: [u64; 4usize],
+}
+impl Union_Unnamed16 {
+ pub unsafe fn constant(&mut self) -> *mut ff_constant_effect {
+ let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
+ ::std::mem::transmute(raw.offset(0))
+ }
+ pub unsafe fn ramp(&mut self) -> *mut ff_ramp_effect {
+ let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
+ ::std::mem::transmute(raw.offset(0))
+ }
+ pub unsafe fn periodic(&mut self) -> *mut ff_periodic_effect {
+ let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
+ ::std::mem::transmute(raw.offset(0))
+ }
+ pub unsafe fn condition(&mut self)
+ -> *mut [ff_condition_effect; 2usize] {
+ let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
+ ::std::mem::transmute(raw.offset(0))
+ }
+ pub unsafe fn rumble(&mut self) -> *mut ff_rumble_effect {
+ let raw: *mut u8 = ::std::mem::transmute(&self._bindgen_data_);
+ ::std::mem::transmute(raw.offset(0))
+ }
+}
+impl ::std::default::Default for Union_Unnamed16 {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub struct input_absinfo {
+ pub value: i32,
+ pub minimum: i32,
+ pub maximum: i32,
+ pub fuzz: i32,
+ pub flat: i32,
+ pub resolution: i32,
+}
+impl ::std::default::Default for input_absinfo {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub struct input_keymap_entry {
+ pub flags: u8,
+ pub len: u8,
+ pub index: u16,
+ pub keycode: u32,
+ pub scancode: [u8; 32usize],
+}
+impl ::std::default::Default for input_keymap_entry {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub struct ff_replay {
+ pub length: u16,
+ pub delay: u16,
+}
+impl ::std::default::Default for ff_replay {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub struct ff_trigger {
+ pub button: u16,
+ pub interval: u16,
+}
+impl ::std::default::Default for ff_trigger {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub struct ff_envelope {
+ pub attack_length: u16,
+ pub attack_level: u16,
+ pub fade_length: u16,
+ pub fade_level: u16,
+}
+impl ::std::default::Default for ff_envelope {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub struct ff_constant_effect {
+ pub level: i16,
+ pub envelope: ff_envelope,
+}
+impl ::std::default::Default for ff_constant_effect {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub struct ff_ramp_effect {
+ pub start_level: i16,
+ pub end_level: i16,
+ pub envelope: ff_envelope,
+}
+impl ::std::default::Default for ff_ramp_effect {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub struct ff_condition_effect {
+ pub right_saturation: u16,
+ pub left_saturation: u16,
+ pub right_coeff: i16,
+ pub left_coeff: i16,
+ pub deadband: u16,
+ pub center: i16,
+}
+impl ::std::default::Default for ff_condition_effect {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+#[allow(raw_pointer_derive)]
+pub struct ff_periodic_effect {
+ pub waveform: u16,
+ pub period: u16,
+ pub magnitude: i16,
+ pub offset: i16,
+ pub phase: u16,
+ pub envelope: ff_envelope,
+ pub custom_len: u32,
+ pub custom_data: *mut i16,
+}
+impl ::std::default::Default for ff_periodic_effect {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+#[repr(C)]
+#[derive(Copy, Clone, Debug)]
+pub struct ff_rumble_effect {
+ pub strong_magnitude: u16,
+ pub weak_magnitude: u16,
+}
+impl ::std::default::Default for ff_rumble_effect {
+ fn default() -> Self { unsafe { ::std::mem::zeroed() } }
+}
+
+ioctl!(read buf eviocgname with b'E', 0x06; u8);
+ioctl!(read buf eviocgphys with b'E', 0x07; u8);
+ioctl!(read buf eviocguniq with b'E', 0x08; u8);
+ioctl!(read buf eviocgprop with b'E', 0x09; u8);
+ioctl!(read buf eviocgmtslots with b'E', 0x0a; u8);
+ioctl!(read buf eviocgkey with b'E', 0x18; u8);
+ioctl!(read buf eviocgled with b'E', 0x19; u8);
+ioctl!(read buf eviocgsnd with b'E', 0x1a; u8);
+ioctl!(read buf eviocgsw with b'E', 0x1b; u8);
+
+ioctl!(write eviocsff with b'E', 0x80; ff_effect);
+ioctl!(write eviocgrab with b'E', 0x90; ::libc::c_int);
+ioctl!(write eviocrevoke with b'E', 0x91; ::libc::c_int);
+ioctl!(write eviocsclockid with b'E', 0xa0; ::libc::c_int);
+
+pub unsafe fn eviocgbit(fd: ::libc::c_int, ev: u32, len: ::libc::c_int, buf: *mut u8) -> ::libc::c_int {
+ super::ioctl(fd, ior!(b'E', 0x20 + ev, len) as ::libc::c_ulong, buf)
+}
+
+pub unsafe fn eviocgabs(fd: ::libc::c_int, abs: u32, buf: *mut input_absinfo) -> ::libc::c_int {
+ super::ioctl(fd, ior!(b'E', 0x40 + abs, ::std::mem::size_of::<input_absinfo>()) as ::libc::c_ulong, buf)
+}
+
+#[cfg(target_arch = "x86_64")]
+include!("linux-generated-x86_64.rs");
diff --git a/src/sys/ioctl/platform/macos.rs b/src/sys/ioctl/platform/macos.rs
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/sys/ioctl/platform/macos.rs
diff --git a/src/sys/ioctl/platform/openbsd.rs b/src/sys/ioctl/platform/openbsd.rs
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/src/sys/ioctl/platform/openbsd.rs