Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7513459
  • 博文数量: 961
  • 博客积分: 15795
  • 博客等级: 上将
  • 技术积分: 16612
  • 用 户 组: 普通用户
  • 注册时间: 2010-08-07 14:23
文章分类

全部博文(961)

文章存档

2016年(1)

2015年(61)

2014年(41)

2013年(51)

2012年(235)

2011年(391)

2010年(181)

分类: 嵌入式

2012-07-30 14:25:41

配对函数(match)、探测函数(probe)

第一个是配对函数(match),它是总线结构体bus_type的其中一个成员:

57 int (*match)(struct device *dev, struct device_driver *drv); 

当总线上添加了新设备或者新驱动函数的时候,内核会调用一次或者多次这个函数。

举例,如果我现在添加了一个新的驱动函数,内核就会调用所属总线的match函数,配对总线上所有的设备,如果驱动能够处理其中一个设备,函数返回0,告诉内核配对成功。

一般的,match函数是判断设备的结构体成员device->bus_id和驱动函数的结构体成员device_driver->name是否一致,如果一致,那就表明配对成功

第二个是探测函数(probe),它是驱动函数结构体中的一个成员:

129 int (*probe) (struct device *dev); 

当配对(match)成功后,内核就会调用指定驱动中的probe函数来查询设备能否被该驱动操作,如果可以,驱动就会对该设备进行相应的操作,如初始化。所以说,真正的驱动函数入口是在probe函数中

另外:一个驱动可以对应多个设备一个设备只能对应一个驱动

阅读(2520) | 评论(0) | 转发(3) |
给主人留下些什么吧!~~