BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #12345同步于 2012/6/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖

关于ioctl函数在驱动层和应用层的疑问

qbs376yy
2012/6/1镜像同步1 回复
unix实现了每个设备可以有自己的ioctl命令,通过读取ioctl's 可以从进程中向内核发送信息,或写ioctl's向进程返回信息。现在不明白的地方是,假设我在一个字符驱动中定义一个头文件,里面声明了具体的cmd命令,那么根据ioctl的函数定义,用户层也要使用这里面声明的命令并传给驱动(也就是说两者要一致),疑问在于:用户的应用层程序是不是需要引用该头文件,才能把相应的cmd传给内核,然后驱动根据具体的命令字实现具体的操作?不解的是,用户程序怎么可以引用驱动程序头文件。。小白问题,还盼各位解答。 #ifndef CHARDEV_H #define CHARDEV_H #include <linux/ioctl.h> #define MAJOR_NUM 100 #define IOCTL_SET_MSG _IOR(MAJOR_NUM, 0, char *) #define IOCTL_GET_MSG _IOR(MAJOR_NUM, 1, char *) #define IOCTL_GET_NTH_BYTE _IOWR(MAJOR_NUM, 2, int) /* * The name of the device file */ #define DEVICE_FILE_NAME "char_dev" #endif[/color]
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
ArmStrong机器人#1 · 2012/6/2
引用linux的头文件再正常不过了,编译器的include文件中都会有linux的头文件的 【 在 qbs376yy (q376) 的大作中提到: 】 : unix实现了每个设备可以有自己的ioctl命令,通过读取ioctl's 可以从进程中向内核发送信息,或写ioctl's向进程返回信息。现在不明白的地方是,假设我在一个字符驱动中定义一个头文件,里面声明了具体的cmd命令,那么根据ioctl的函数定义,用户层也要使用这里面声明的命令 : #ifndef CHARDEV_H : #define CHARDEV_H : ...................