32 lines · plain
1==============================2Decoding an IOCTL Magic Number3==============================4 5To decode a hex IOCTL code:6 7Most architectures use this generic format, but check8include/ARCH/ioctl.h for specifics, e.g. powerpc9uses 3 bits to encode read/write and 13 bits for size.10 11 ====== ==================================12 bits meaning13 ====== ==================================14 31-30 00 - no parameters: uses _IO macro15 10 - read: _IOR16 01 - write: _IOW17 11 - read/write: _IOWR18 19 29-16 size of arguments20 21 15-8 ascii character supposedly22 unique to each driver23 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