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)
- i2c驱动中之用sys文件的操作。
- Linux Kernel 设备驱动之I2C之i2c设备文件
- linux I2C 驱动之----i2c驱动的注册过程
- linux设备驱动之 i2c设备驱动 at24c08驱动程序分析【全部地址的操作】
- I2C驱动 核心文件
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_driver的注册 .
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_driver的注册
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_driver的注册
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_driver的注册
- 驱动中id_table的分析(Input/I2C)
- 驱动中id_table的分析(Input/I2C)
- 在驱动中创建文件(/sys 中查询)
- 高通平台开机LOGO修改LK(bootloader)下实现
- 1797: [Ahoi2009]Mincut 最小割 最小割+tarjan
- java 并发插入数据到oracle
- /dev/null 的含义和用途
- 高级编程之进程(二)
- i2c驱动中之用sys文件的操作。
- 开发者必须知道的HTML5十五大新特性
- Android查看jar包源码问题
- C语言实现strcmp
- Codevs 1074 [NOI 2002]食物链
- 设计模式之享元模式
- iOS 友盟分享
- XMPP协议实现原理介绍
- JAVA设计模式:组合模式