162306a36Sopenharmony_ci==============================
262306a36Sopenharmony_ciDecoding an IOCTL Magic Number
362306a36Sopenharmony_ci==============================
462306a36Sopenharmony_ci
562306a36Sopenharmony_ciTo decode a hex IOCTL code:
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciMost architectures use this generic format, but check
862306a36Sopenharmony_ciinclude/ARCH/ioctl.h for specifics, e.g. powerpc
962306a36Sopenharmony_ciuses 3 bits to encode read/write and 13 bits for size.
1062306a36Sopenharmony_ci
1162306a36Sopenharmony_ci ====== ==================================
1262306a36Sopenharmony_ci bits   meaning
1362306a36Sopenharmony_ci ====== ==================================
1462306a36Sopenharmony_ci 31-30	00 - no parameters: uses _IO macro
1562306a36Sopenharmony_ci	10 - read: _IOR
1662306a36Sopenharmony_ci	01 - write: _IOW
1762306a36Sopenharmony_ci	11 - read/write: _IOWR
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci 29-16	size of arguments
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci 15-8	ascii character supposedly
2262306a36Sopenharmony_ci	unique to each driver
2362306a36Sopenharmony_ci
2462306a36Sopenharmony_ci 7-0	function #
2562306a36Sopenharmony_ci ====== ==================================
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ciSo for example 0x82187201 is a read with arg length of 0x218,
2962306a36Sopenharmony_cicharacter 'r' function 1. Grepping the source reveals this is::
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ci	#define VFAT_IOCTL_READDIR_BOTH         _IOR('r', 1, struct dirent [2])
32