static struct i2c_dev *i2c_dev_get_by_minor(unsigned index)
2011-03-11 10:19:59| 分类:
默认分类
|字号
static struct i2c_dev *i2c_dev_get_by_minor(unsigned index)
{
struct i2c_dev *i2c_dev; //声明一个i2c_dev结构指针用于最终返回
spin_lock(&i2c_dev_list_lock);//锁定i2c设备列表自旋锁(自旋锁锁定后其它进程无法访问,详情请google自旋锁或并发与竞态。
list_for_each_entry(i2c_dev, &i2c_dev_list, list) {//对i2c设备列表进行轮询,每次都把i2c_dev指针指向表上项
if (i2c_dev->adap->nr == index) // 如果设备列表上某一项的adap成员的nr(即次设备号)成员与转 入此函数的次设备号一致,则找到了。
goto found;//转到found
}
i2c_dev = NULL;//如果遍历列表都找不到,将i2c_dev 置为空指针。
found:
spin_unlock(&i2c_dev_list_lock);//释放自旋锁
return i2c_dev;//返回这个i2c_dev指针,如果找到,则指向找到的i2c设备,否则为0。
}
另附:
struct i2c_dev {
struct list_head list;
struct i2c_adapter *adap;
struct device *dev;
};
阅读(2285) | 评论(0) | 转发(0) |