避免命令宏冲突无法使用

12-25

linux内核加入控制四个led状态的驱动程序是要注意两点:

1.关闭原有的led驱动程序

2.通过#define 定义好的指令不推荐使用 0x1、0x2、0x3 之类的表达,这样容易混淆。Linux 对 ioctl 的参数有特殊的定义,可以使用构造命令编号的宏,如:

_IO(type,nr) /*用于构造无参数的命令编号*/

_IOR(type,nr,datatype) /*用于构造从驱动程序中读取数据的命令编号*/

_IOW(type,nr,datatype) /*用于构造写入带参数的数据指令到驱动程序中*/

_IOWR(type,nr,datatype) /*用于双向传输*/

其中 type 是 8 位的,与 char 类型的 8 位一致,所以在实际中用一个字符 char 代替 type。nr 表示编号,可以用 1、2、3、4……赋值。datatype 表示传输数据的类型。

使用方法:

#define LED_ON 1 /*不推荐*/

#define LED_MAGIC ‘k’ /*推荐*/

#define LED_ON _IO(LED_MAGIC,1)

       

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容