linux的i2c驱动中的函数和数据结构的分析
来源:互联网 发布:淘宝怎么开通海外渠道 编辑:程序博客网 时间:2024/05/18 03:47
在i2c驱动中有很多函数和数据结构,很多一时难以理解,所以写下本文共同学习。
一、i2c_set_clientdata函数
在probe方式的I2C驱动中的probe函数中经常出现i2c_set_clientdata函数,一直很不解这个函数什么意思,后来查看内核源码,发现了一点大家都知道的秘密。
这是某个I2C设备驱动中的probe函数,选取了部分代码:
struct i2c_mydev //struct i2c_mydev是自定义的设备结构
{
struct i2c_client *client;
...
};
static int xxx_probe(struct i2c_client *client,const struct i2c_device_id *id)
{
struct i2c_mydev *dev;
...
dev->client=client;
i2c_set_clientdata(client, dev);
...
}
/*
client是在板级信息初始化的时候自动创建的设备,将client赋值给dev中的client
然后又将设备文件结构dev赋值给client的私有驱动数据指针。i2c_set_clientdata函数到底是什么作用呢?
在该函数中调用了dev_set_drvdata函数,在dev-set_drvdata函数实现代码中有一行代码:dev->p->driver_data=data
driver_data是什么呢,内核中一句注释:driver_data - private pointer for driver specific info。driver_data是驱动特殊信息的私有指针,i2c_set_clientdata(client, dev)就是将自定义的设备结构dev赋给设备驱动client的私有指针,目的是什么呢,我猜测是用来区别其他驱动client,不知道这样理解对不对。敬请指正,这也是本文面世的一个原因。
*/
static inline void i2c_set_clientdata(struct i2c_client *dev, void *data)
{
dev_set_drvdata(&dev->dev, data);
}
void dev_set_drvdata(struct device *dev, void *data)
{
...
dev->p->driver_data = data;
...
}
- linux的i2c驱动中的函数和数据结构的分析
- Linux的i2c驱动分析
- linux-i2c驱动 之 i2c设备层的注册过程probe函数如何被调用分析
- linux的I2C驱动架构分析记录
- I2C 驱动核心的数据结构
- linux驱动的i2c驱动
- Linux I2C驱动分析(一)----I2C架构和总线驱动
- Linux I2C驱动分析(一)----I2C架构和总线驱动
- Linux I2C驱动分析(一)----I2C架构和总线驱动
- Linux I2C驱动分析(一)----I2C架构和总线驱动
- Linux I2C驱动分析(一)----I2C架构和总线驱动
- tcc893x基于Linux内核的I2C总结(I2C基础、I2C适配器驱动分析)
- linux I2C驱动分析
- linux I2C驱动分析
- Linux I2C 驱动分析
- Linux驱动I2C分析
- linux i2c 驱动分析
- Linux--I2C驱动分析
- maven初步使用
- mysql数据库权限表详细解释
- 数据分析软件公司Tableau计划IPO融资2亿美元
- Java程序员从笨鸟到菜鸟之(五十五)细谈Hibernate(六)Hibernate继承关系映射
- jQuery插件的应用(注册时的验证)
- linux的i2c驱动中的函数和数据结构的分析
- subversion Apache viewvc 代码语法高亮配置
- java.lang.UnsupportedClassVersionError: Bad version number in .class file
- Ubuntu关闭按钮移到右上角
- ACM菜鸟大牛和教主的区别
- JDeveloper经常黑屏的问题(Windows 7)
- 在泛型中得到T.class
- 去掉标题栏和设置窗口透明用法
- 程序员 7K面试题<一>---交通灯管理系统