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