i2c驱动中之用sys文件的操作。

来源:互联网 发布:excel数据导入matlab 编辑:程序博客网 时间:2024/06/06 01:54

1、在probe函数中添加创建函数。

        int ret = 0;

        .......

         ret = driver_create_file(&client->driver->driver, &driver_attr_mode);
         if(ret)
                goto err1;

         err1:

                driver_remove_file(&client->driver->driver, &driver_attr_mode);

2、实现sys文件的主文件操作函数包括读和写文件的操作。
static int s_value=0;

static ssize_t show_mode(struct device_driver *dev, char *buf)
{
       u32 reg;
       reg = s_value;
       return snprintf(buf, PAGE_SIZE, "%u \n", reg);
}


static ssize_t store_mode(struct device_driver *dev, const char *buf, size_t count)
{

       char *endp;
       int err = 0;
       int mode = simple_strtoul(buf, &endp, base);  //buf指向字符串的开始,endp为指向要分析的字符串末尾处的位置,base为要用的基数。(base为要用的基数(进制数),base为0表示通过cp来自动判断基数,函数自动可识别的基数:‘0x’表示16进制,‘0’表示8进制,其它都认定为10进制。通常设为0)

       size_t num = endp - buf;

       if (*endp && isspace(*endp))   //检查参数c是否为空格字符,也就是判断是否为空格(' ')、水平定位字符

//('\t')、归位键('\r')、换行('\n')、垂直定位字符('\v')或翻页('\f')的情况。

//返回值,若参数c为空格字符,则返回TRUE,否则返回NULL(0)。

         num++;
       if (num != count)
               return -EINVAL;
       switch(mode)    //mode对应是echo传进来的参数
       {
               case option1:
               {
                       s_value=0;
                        //对用户层输入的信息进行操作。
                       break;
               }
               case option2:
               {
                       s_value=1;
                        //对用户层输入的信息进行操作。

                       break;
               }
               default:
                       err = -EOPNOTSUPP;
                       printk("without the option \n");
                       break;
       }
       return count;
}

3、属性文件的创建说明

        DRIVER_ATTR(mode, 0644, show_mode, store_mode);

4、用户层的使用说明

        echo ‘0’ > /sys/bus/i2c/driver/xxx/mode (0对应option1)

        echo '1' > /sys/bus/i2c/driver/xxx/mode (1对应option2)
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 斗战神师徒一个人删除角色怎么办 起业kx5防盗器不响怎么办 灌浆记录仪存盘满了怎么办 自首后发现无罪证据怎么办 中国劲酒过期了怎么办 玻尿酸流到眼皮怎么办 手指被胶带缠紫了怎么办 打玻尿酸不平整怎么办 孩子被老师体罚我该怎么办 孩子妈妈入狱了我该怎么办 机顶盒电视收不到台怎么办 跳芭蕾舞下面硬起来了怎么办 深情密码结局赵深深怎么办 宝宝头着地摔了怎么办 小孩头着地摔了怎么办 头朝下墩了脖子怎么办 两岁摔倒头着地怎么办 马桶大便冲不下去怎么办 脚丫吧里起泡痒怎么办 脚受伤后肿了怎么办 摔到了腿受伤了怎么办 骑车摔倒了肿了怎么办 生活大冒险老婆失踪了怎么办 手机qq图裂了怎么办 qq发的图裂了怎么办 抖音账号搬运多怎么办 别人搜不到我QQ怎么办 qq号被限制解封怎么办 买的桌子会晃怎么办 车子座椅皮坏了怎么办 裤子被椅子刮了怎么办 脚麻了被别人动怎么办 毛孔又粗又黑怎么办 手臂睡觉压麻了怎么办 睡觉压的胳膊麻怎么办 摔跤摔到腰肿了怎么办 牛奶喝多了拉稀怎么办 doc文档下载是乱码怎么办 家人被教练技术骗了怎么办 十个月宝宝不爱喝水怎么办 离婚后孩子找爸爸怎么办