永发信息网

C语言ioctl中的参数cmd每部分组成是什么意思,

答案:1  悬赏:80  手机版
解决时间 2021-03-22 14:20
  • 提问者网友:鼻尖触碰
  • 2021-03-21 16:56
C语言ioctl中的参数cmd每部分组成是什么意思,
最佳答案
  • 五星知识达人网友:你哪知我潦倒为你
  • 2021-03-21 18:29
一个cmd被分为了4个段,每一段都有各自的意义,cmd的定义在<linux/ioctl.h>。
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)。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯