driver_find( )分析

 分析:
            传入的参数 : 驱动的名字、驱动所属的总线。
            就是要遍历这条总线上挂载的所有驱动,查看一下有没有和name相同的驱动,其实他是和match函数功能一样了
            如果存在同名的驱动,那么就减少驱动的引用计数且返回。


分析:
                bus的私有数据中有一个成员是 struct kset * driver_kset.表示的是挂接在该总线上的所有驱动。
                00291行:     kset_find_obj ( bus->p->drivers_kset, name );




 传入的参数 : bus->p 是总线的私有数据,bus->p->drivers_kset是挂载到该总线上的所有驱动的集合
                                                                        调用list_for_each_entry()遍历kset下面的所有kobject,
                                                                        查看这些kobject的名字有没有和传入的name是一样的,有就说明找到了且返回
                                                                        即说明了 在总线上有该同名的驱动存在了,
      再回到     B中,00294行:        如果在这个kset下面存在同名的kobject,
                               00295行:     根据这个kobject获取到驱动的私有数据指针,根据驱动的私有数据获取到这个驱动,
       再回到    A中,00236行,    说明驱动已经存在了,注册失败

根据以上的分析:可以知道,
                              还是依靠总线下的kobject的name(目录名)与传入进来的驱动的名字是否一样来实现比较的。                     




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值