您的位置:首页 > 运维架构 > Linux

linux I2C驱动 i2c_set_clientdata函数和i2c_get_clientdata函数

2018-01-19 11:24 3015 查看
最近在研究I2C驱动,碰到了一对函数不知道什么意思,也看了网上的好多帖子,结合自己的分析来说一说它们的作用吧。

这两个函数的作用起始就是方便我们通过client来找到设备。比如我们自定义了一个结构体用来保存数据

struct my_I2C_data {

    struct i2c_client *client;

    struct input_dev    *input_dev;

    struct work_struct     pen_event_work;

    struct workqueue_struct *ts_workqueue;

};

当我们行进到probe函数时,可以这样做

struct my_I2C_data* save_data;

............................

i2c_set_clientdata(client, save_data);

这样就可以将此结构体保存在client中,当我们需要使用到结构体内数据时,可以这样

struct  my_I2C_data* resave_data;

resave_data = (struct  my_I2C_data)*i2c_get_clientdata(client);

所以我们只需要知道client,便可以找到我们保存的数据。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息