Driver的prob的调用顺序

Driver的注册

 

Driverprob的调用顺序

可以从bus_attach_device()看起,

1 bus_attach_device()调用device_attach(dev)

2 device_attach(): 调用bus_for_each_drv()遍历bus上的每个driver,当找到一个driver则用__device_attach()来判断是否匹配

3 __device_attach(): 直接调用driver_probe_device(drv, dev)

4 driver_probe_device(): 首先如果driver所在总线有match函数则先调用这个match来匹配,如不匹配则直接返回错误,否则接着调用really_probe(dev,drv)

5 really_probe(): 先判断dev所在总线是否有probe函数,有则调用它来匹配,失败则返回,正确则成功,如果总线没有probe则判断drv是否有probe函数,有则调用并匹配它.

6 drv->prob():  一般它是一类设备的probe,在它里面它会调用具体某个drvprobe函数,这个函数是在我们的驱动程序里面注册的.  

   下面以usb acm驱动为例:

1    注册: usb_register()注册我们的usb_driver对象;里面含有一个probe函数.并含有一个device_driver对象(其实这个对象才是真正注册到系统理的驱动对象)

2    Usb_register(): 调用usb_register_driver()

3    usb_register_driver(): 填充device_driver对象(包括一个usb_probe_interface函数,USB设备类通用的probe函数), 最后通过driver_register注册这个device_driver.

Probe过程.

新的usb设备连上机器后, hub_port_connect_change会被调用

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值