先贴出调用拓扑图:

driver_initplatform_driver_registerif (drv->probe)drv->driver.probe = platform_drv_probe;driver_registerbus_add_driverdriver_attachbus_for_each_dev(drv->bus, NULL, drv, __driver_attach);        // 扫面bus上每个设备,调用__driver_attachdriver_probe_deviceif (drv->bus->match && !drv->bus->match(dev, drv))     // 调用bus->match  , bus_type
            really_proberet = dev->bus->probe(dev);                                // 实际上就是驱动程序实现的probe

再看match

platform_driver_register

  drv->driver.bus = &platform_bus_type;        // platform_bus_type 定义如下

struct bus_type platform_bus_type = {
.name    = "platform",
.dev_attrs    = platform_dev_attrs,
.match    = platform_match,
.uevent    = platform_uevent,
.suspend    = platform_suspend,
.suspend_late    = platform_suspend_late,
.resume_early    = platform_resume_early,
.resume    = platform_resume,
};

可以看到bus->match 最终就是platform_match

platform_matchreturn (strncmp(pdev->name, drv->name, BUS_ID_SIZE) == 0);

这里就明白了, 实际上, match是根据device 和 driver 的name字段。

转载于:https://www.cnblogs.com/hulig7/p/9927857.html

linux内核源码分析plat-form 分析相关推荐

  1. Linux内核移植之一:内核源码结构与Makefile分析

    内容来自 韦东山<嵌入式Linux应用开发完全手册> 一.内核介绍 1.版本及其特点 Linux内核的版本号可以从源代码的顶层目录下的Makefile中看到,比如下面几行它们构成了Linu ...

  2. Linux内核源码分析方法

    说明:这是一个刚接触内核三个月的同学,通过对一个内核特性的分析,总结出一套分析内核的方法. 一.内核源码之我见 Linux内核代码的庞大令不少人"望而生畏",也正因为如此,使得人们 ...

  3. Linux内核源码分析--内核启动之(4)Image内核启动(setup_arch函数)(Linux-3.0 ARMv7)【转】...

    原文地址:Linux内核源码分析--内核启动之(4)Image内核启动(setup_arch函数)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://blog.c ...

  4. Linux内核源码分析—从用户空间复制数据到内核空间

    Linux内核源码分析-从用户空间复制数据到内核空间 本文主要参考<深入理解Linux内核>,结合2.6.11.1版的内核代码,分析从用户空间复制数据到内核空间函数. 1.不描述内核同步. ...

  5. Linux内核源码分析《进程管理》

    Linux内核源码分析<进程管理> 前言 1. Linux 内核源码分析架构 2. 进程原理分析 2.1 进程基础知识 2.2 Linux进程四要素 2.3 进程描述符 task_stru ...

  6. Linux内核源码分析之内存管理

    本文站的角度更底层,基本都是从Linux内核出发,会更深入.所以当你都读完,然后再次审视这些功能的实现和设计时,我相信你会有种豁然开朗的感觉. 1.页 内核把物理页作为内存管理的基本单元. 尽管处理器 ...

  7. Linux内核源码分析方法—程序员进阶必备

    一.内核源码之我见 Linux内核代码的庞大令不少人"望而生畏",也正因为如此,使得人们对Linux的了解仅处于泛泛的层次.如果想透析Linux,深入操作系统的本质,阅读内核源码是 ...

  8. 【技术分享篇】Linux内核——手把手带你实现一个Linux内核文件系统丨Linux内核源码分析

    手把手带你实现一个Linux内核文件系统 1. 内核文件系统架构分析 2. 行行珠玑,代码实现 [技术分享篇]Linux内核--手把手带你实现一个Linux内核文件系统丨Linux内核源码分析 更多L ...

  9. iostat IO统计原理linux内核源码分析----基于单通道SATA盘

    iostat IO统计原理linux内核源码分析----基于单通道SATA盘 先上一个IO发送submit_bio流程图,本文基本就是围绕该流程讲解. 内核版本 3.10.96 详细的源码注释:htt ...

  10. Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3.0 ARMv7) 【转】...

    原文地址:Linux内核源码分析--内核启动之(3)Image内核启动(C语言部分)(Linux-3.0 ARMv7) 作者:tekkamanninja 转自:http://blog.chinauni ...

最新文章

  1. c语言adc采集取平均值,读取ADC值的浮动平均值
  2. 【LeetCode从零单排】No 191.Number of 1 Bits(考察位运算)
  3. ViewPager用法
  4. CSS 实例之翻转图片
  5. 用Python+Django在Eclipse环境下开发web网站【转】
  6. .NET 开源项目 Anet 介绍
  7. 修改environment导致重启不能登录的问题解决
  8. Java基础学习总结(168)——为什么推荐在RPC的接口中入参和出参都不要使用枚举
  9. “嫌贫爱富”之人,从一顿饭局当中便可看出
  10. java 自定义形状按钮_制作自定义背景Button按钮、自定义形状Button的全攻略
  11. addEventListener和attachEvent二者绑定的执行函数中的this不相同【转载】
  12. bartender 10.1破解版|bartender条码打印10.1
  13. MATLAB中能对三角函数降幂嘛,三角函数降幂公式是什么
  14. 北京2020积分落户名单
  15. Hog源码注释(hog.cpp的注解)
  16. 听java技术讲座心得体会_听讲座心得体会范文3篇
  17. dp在约会上是什么意思_饭圈用语dp是什么意思什么梗? 饭圈为什么喜欢用缩写?...
  18. CODE[VS] 3837 台风 题解
  19. 【F28003x】 Enhanced Pulse Width Modulator (ePWM)
  20. Java环境变量设置-Java

热门文章

  1. Visual Studio 2008 可扩展性开发(八):关于用户界面的种种(上)
  2. 看了这么多代码,谈一谈代码风格!
  3. 如何使用 iCloud 钥匙串从 macOS Monterey 导入和导出密码?
  4. iOS开发之常见的URLScheme
  5. 一线互联网公司Java高级面试题总结
  6. Java多线程进阶(三六)—— J.U.C之collections框架:DelayQueue
  7. Ubuntu 下 matplotlib 中文乱码
  8. FTP上传无文件以及0字节问题
  9. 电商App如何让用户直接打开商品详情页
  10. 《Java遗传算法编程》—— 1.8 参数