linux驱动—注册驱动分析
这篇博客linux驱动—自己注册一个总线,如果要分析驱动就要从driver_register上面开始分析,因为总线就是调用这个函数,把自己的驱动注册进去
第一步:先判断要注册的这个总线在不在 。 为什么判断这个dev->bus->p这个成员在不在,就可以判断总线在不在初始化了?,因为在注册驱动的时候就已经绑定了。如果没有绑定就是没有初始化
接下来会判断这三个函数释放存在,有些时候都回去执行,就会有一些问题,所以都存在会打印广告
接下来就是核心代码了
进入到bus_add_driver函数里面
在bus_add_driver函数里面,第一不,会将驱动的私有数据和驱动关联起来,和总线注册的时候关联总线和私有数据一样的
kobj设置成了kest 会在/sys/bus/mybus/drivers目录下创建驱动对应的目录,因为把kobj设置成了kset
最后调用在这个函数把驱动加载到链表里面去。剩下的那些不是注册驱动有关的
下面是bus_add_driver源码
解决了一个问题:为什么在注册总线的时候drivers_autoprobe = 1,就会自动匹配
原因在这里,如果drivers_autoprobe是1,1满足条件,调用这个,自动匹配驱动和函数