一个cmd被分为了4个段,每一段都有各自的意义,cmd的定义在
1)幻数:说得再好听的名字也只不过是个0~0xff的数,占8bit(_IOC_TYPEBITS)。这个数是用来区分不同的驱动的,像设备号申请的时候一样,内核有一个文档给出一些推荐的或者已经被使用的幻数。2)序数:用这个数来给自己的命令编号,占8bit(_IOC_NRBITS),我的程序从1开始排序。3)数据传输方向:占2bit(_IOC_DIRBITS)。如果涉及到要传参,内核要求描述一下传输的方向,传输的方向是以应用层的角度来描述的。1)_IOC_NONE:值为0,无数据传输。2)_IOC_READ:值为1,从设备驱动读取数据。3)_IOC_WRITE:值为2,往设备驱动写入数据。4)_IOC_READ|_IOC_WRITE:双向数据传输。4)数据大小:与体系结构相关,ARM下占14bit(_IOC_SIZEBITS),如果数据是int,内核给这个赋的值就是sizeof(int)。