避免命令宏冲突无法使用

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)

       

你可能感兴趣的:(避免命令宏冲突无法使用)