以下内容为个人学习笔记,不保证正确
(1)IOCTL
ioctl是一个操作函数,实现对硬件的控制,在内核驱动程序中。
(2)cmd
为了保证驱动程序操作的硬件是正确的,有一个cmd值来保证,cmd是一个32位的数,被分为4段以表示不同的含义,比如 bit31~bit30 这两位是用来区分ioctl操作是读还是写,剩下3段的含义还包括数据大小、幻数、区别序号。
区别序号:是用于区别ioctl操作执行哪一个项;
(3)IO、IOR、IOW、IOWR
前面说了cmd是一个32位数,而且被分成4段来表示不同含义,如果自己手动写会很麻烦,所以IO、IOR、IOW和IOWR就是内核里已经封装好的帮助我们快速生成cmd的方法。
从名字也能看出来4个方法的区别,它们对于cmd值的 bit29~bit0 操作是相同的,仅对第一个区有区分,IO就是无操作,IOR就是从驱动程序读取数据,IOW是写,IOWR是读写。
(4)幻数
大概就是用来表示文件的规范/类型