Chinaunix首页 | 论坛 | 博客
  • 博客访问: 153329
  • 博文数量: 36
  • 博客积分: 372
  • 博客等级: 一等列兵
  • 技术积分: 282
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-28 17:04
文章分类

全部博文(36)

文章存档

2012年(36)

分类: LINUX

2012-11-01 16:48:11

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;
};
阅读(2243) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~