1============================== 2Decoding an IOCTL Magic Number 3============================== 4 5To decode a hex IOCTL code: 6 7Most architectures use this generic format, but check 8include/ARCH/ioctl.h for specifics, e.g. powerpc 9uses 3 bits to encode read/write and 13 bits for size. 10 11 ====== ================================== 12 bits meaning 13 ====== ================================== 14 31-30 00 - no parameters: uses _IO macro 15 10 - read: _IOR 16 01 - write: _IOW 17 11 - read/write: _IOWR 18 19 29-16 size of arguments 20 21 15-8 ascii character supposedly 22 unique to each driver 23 24 7-0 function # 25 ====== ================================== 26 27 28So for example 0x82187201 is a read with arg length of 0x218, 29character 'r' function 1. Grepping the source reveals this is:: 30 31 #define VFAT_IOCTL_READDIR_BOTH _IOR('r', 1, struct dirent [2]) 32