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)