美文网首页
避免命令宏冲突无法使用

避免命令宏冲突无法使用

作者: personneye | 来源:发表于2018-12-25 15:38 被阅读0次

    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)

           

    相关文章

      网友评论

          本文标题:避免命令宏冲突无法使用

          本文链接:https://www.haomeiwen.com/subject/onpflqtx.html