0001 ==============================
0002 Decoding an IOCTL Magic Number
0003 ==============================
0004
0005 To decode a hex IOCTL code:
0006
0007 Most architectures use this generic format, but check
0008 include/ARCH/ioctl.h for specifics, e.g. powerpc
0009 uses 3 bits to encode read/write and 13 bits for size.
0010
0011 ====== ==================================
0012 bits meaning
0013 ====== ==================================
0014 31-30 00 - no parameters: uses _IO macro
0015 10 - read: _IOR
0016 01 - write: _IOW
0017 11 - read/write: _IOWR
0018
0019 29-16 size of arguments
0020
0021 15-8 ascii character supposedly
0022 unique to each driver
0023
0024 7-0 function #
0025 ====== ==================================
0026
0027
0028 So for example 0x82187201 is a read with arg length of 0x218,
0029 character 'r' function 1. Grepping the source reveals this is::
0030
0031 #define VFAT_IOCTL_READDIR_BOTH _IOR('r', 1, struct dirent [2])