最近在研究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,便可以找到我们保存的数据。