返回信息流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]
这是一条镜像帖。来源:北邮人论坛 / embedded-system / #12345同步于 2012/6/1
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Embedded_System机器人发帖
关于ioctl函数在驱动层和应用层的疑问
qbs376yy
2012/6/1镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
引用linux的头文件再正常不过了,编译器的include文件中都会有linux的头文件的
【 在 qbs376yy (q376) 的大作中提到: 】
: unix实现了每个设备可以有自己的ioctl命令,通过读取ioctl's 可以从进程中向内核发送信息,或写ioctl's向进程返回信息。现在不明白的地方是,假设我在一个字符驱动中定义一个头文件,里面声明了具体的cmd命令,那么根据ioctl的函数定义,用户层也要使用这里面声明的命令
: #ifndef CHARDEV_H
: #define CHARDEV_H
: ...................