Back to home page

OSCL-LXR

 
 

    


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])