FROM:http://www.groad.net/bbs/read.php?tid-1213.html
_IOC_NR(), _IOC_TYPE(), _IOC_SIZE(), _IOC_DIR() 这几个宏用来取得 cmd 命令中的域,其作用如下:
_IOC_NR() : 读取基数域值 (bit0~ bit7)
_IOC_TYPE : 读取魔数域值 (bit8 ~ bit15)
_IOC_SIZE : 读取数据大小域值 (bit16 ~ bit29)
_IOC_DIR : 获取读写属性域值 (bit30 ~ bit31)
_IOC_NR() 的定义为:
#define _IOC_NR(nr) (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
_IOC_NRSHIFT 的值为 0 ;
_IOC_NRMASK 的定义为:
#define _IOC_NRMASK ((1 << _IOC_NRBITS)-1)
_IOC_NRBITS 的值被定义为 8 ,所以 _IOC_NRMASK 的值为 0xFF 。
其余的宏分析类似。