From c6a4a87285f0af434bc136fa21efb3e16ce08f79 Mon Sep 17 00:00:00 2001 From: Corey Richardson Date: Sun, 5 Jul 2015 07:04:25 -0400 Subject: 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. --- src/sys/ioctl/README.md | 5 + src/sys/ioctl/etc/find_ioctls.py | 33 + src/sys/ioctl/etc/process_ioctls.py | 236 +++++ src/sys/ioctl/etc/x86_64/ignore_list | 113 +++ src/sys/ioctl/etc/x86_64/ioctl_list | 1014 ++++++++++++++++++++++ src/sys/ioctl/etc/x86_64/manually_found | 5 + src/sys/ioctl/mod.rs | 116 +++ src/sys/ioctl/platform/dragonfly.rs | 0 src/sys/ioctl/platform/freebsd.rs | 0 src/sys/ioctl/platform/ios.rs | 0 src/sys/ioctl/platform/linux-generated-x86_64.rs | 1005 +++++++++++++++++++++ src/sys/ioctl/platform/linux.rs | 415 +++++++++ src/sys/ioctl/platform/macos.rs | 0 src/sys/ioctl/platform/openbsd.rs | 0 14 files changed, 2942 insertions(+) create mode 100644 src/sys/ioctl/README.md create mode 100644 src/sys/ioctl/etc/find_ioctls.py create mode 100644 src/sys/ioctl/etc/process_ioctls.py create mode 100644 src/sys/ioctl/etc/x86_64/ignore_list create mode 100644 src/sys/ioctl/etc/x86_64/ioctl_list create mode 100644 src/sys/ioctl/etc/x86_64/manually_found create mode 100644 src/sys/ioctl/mod.rs create mode 100644 src/sys/ioctl/platform/dragonfly.rs create mode 100644 src/sys/ioctl/platform/freebsd.rs create mode 100644 src/sys/ioctl/platform/ios.rs create mode 100644 src/sys/ioctl/platform/linux-generated-x86_64.rs create mode 100644 src/sys/ioctl/platform/linux.rs create mode 100644 src/sys/ioctl/platform/macos.rs create mode 100644 src/sys/ioctl/platform/openbsd.rs 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 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 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', ']', ')', "/* 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 diff --git a/src/sys/ioctl/platform/freebsd.rs b/src/sys/ioctl/platform/freebsd.rs new file mode 100644 index 00000000..e69de29b diff --git a/src/sys/ioctl/platform/ios.rs b/src/sys/ioctl/platform/ios.rs new file mode 100644 index 00000000..e69de29b 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::()) 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 diff --git a/src/sys/ioctl/platform/openbsd.rs b/src/sys/ioctl/platform/openbsd.rs new file mode 100644 index 00000000..e69de29b -- cgit v1.2.3