博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MDIO总线相关_3
阅读量:4286 次
发布时间:2019-05-27

本文共 1245 字,大约阅读时间需要 4 分钟。

##这里主要是匹配

总线匹配

struct bus_type mdio_bus_type = {
.name = "mdio_bus", .match = mdio_bus_match, .pm = MDIO_BUS_PM_OPS, .dev_attrs = mdio_dev_attrs,};

从上面的结构体可以看出,linux中有多种总线类型.估计是从来匹配的.

例如platform的

struct bus_type platform_bus_type = {
.name = “platform”, .dev_attrs = platform_dev_attrs, .match = platform_match, .uevent = platform_uevent, .pm = PLATFORM_PM_OPS_PTR, };

可以看出和猜想一致

接下来看一下我们关心的匹配的总线

/** * mdio_bus_match - determine if given PHY driver supports the given PHY device * @dev: target PHY device * @drv: given PHY driver * * Description: Given a PHY device, and a PHY driver, return 1 if *   the driver supports the device.  Otherwise, return 0. */static int mdio_bus_match(struct device *dev, struct device_driver *drv){
struct phy_device *phydev = to_phy_device(dev); struct phy_driver *phydrv = to_phy_driver(drv); if (of_driver_match_device(dev, drv)) return 1; if (phydrv->match_phy_device) return phydrv->match_phy_device(phydev); return ((phydrv->phy_id & phydrv->phy_id_mask) == (phydev->phy_id & phydrv->phy_id_mask));}

可以看出来是根据是根据phy_id & phy_id_mask 是否想等来确定的.

那这个函数是谁调用的呢?应该是内核里面的核心吧.找不到

可以看到,最后一句里面的东西

关于driver端
是struct phy_driver 中的 struct device_driver driver;(后来被填充了)
关于device段

转载地址:http://svigi.baihongyu.com/

你可能感兴趣的文章
Git学习笔记总结和注意事项
查看>>
谈“穷”-----穷只是一种结果,真正穷的是思维和行动
查看>>
六位创业者分享内心最恐惧的事情
查看>>
JavaScript数值转换总结
查看>>
JavaScript中的重载解读
查看>>
浅谈JavaScript中的原型模式
查看>>
HTML的奇葩嵌套规则
查看>>
我是如何自学编程的——“3遍读书法”
查看>>
当老实人遇到世态炎凉
查看>>
程序猿,你们这么拼是找不到妹纸的!
查看>>
问题与对策:CSS的margin塌陷(collapse)
查看>>
识别“百度权重”作弊的方法
查看>>
干货|程序员常去的14个顶级开发社区
查看>>
如何添加网站for Linux(绑定域名)
查看>>
一些常被你忽略的CSS小知识
查看>>
简易博客编辑器:玩转document.execCommand命令
查看>>
你知道C/S和B/S两种架构有什么区别吗?
查看>>
【学习干货】给coder的10个读书建议
查看>>
浏览器的CSS Hacks
查看>>
PHP基本语法的小结
查看>>