(1)
Linux 设备模型中三个很重要的概念就是总线、设备和驱动,即 bus 、 device 和 driver 。
struct bus_type , struct device , struct device_driver ,这三个重要的数据结构都来自同一个地方,称 include/linux/device.h 。
(2)
总线有很多种,如 PCI 总线、 SCSI 总线、 USB 总线,所以我们会看到 Linux 内核代码中出现 pci_bus_type , scsi_bus_type , usb_bus_type,它们都是 struct bus_type 类型的变量。

(3)
struct bus_type 结构中两个非常重要的成员就是 struct kset drivers 和 struct kset devices
struct bus_type 与两个链表联系了起来,一个是 devices 的链表,一个是 drivers 的链表。也就是说,知道一条总线所对应的数据结构,就可以找到这条总线所关联的设备,及支持这类设备的驱动程序。
(4)
每次出现一个设备就要向总线汇报,或者说注册。每次出现一个驱动,也要向总线汇报,或者注册。比如系统初始化时,会扫描连接了哪些设备,并为每一个设备建立起一个 struct device 的变量,每一次有一个驱动程序,就要准备一个struct device_driver 结构的变量。把这些变量统统加入相应的链表,设备插入 devices 链表, 驱动插入 drivers 链表。 这样通过总线就能找到每一个设备,每一个驱动。

《Linux那些事儿之我是USB》我是U盘(7)狂欢是一群人的孤单--总结相关推荐

  1. Linux那些事儿之我是U盘(7)狂欢是一群人的孤单

    Linux设备模型中三个很重要的概念就是总线,设备,驱动.即bus,device,driver,而实际上内核中也定义了这么一些数据结构,他们是struct bus_type,struct device ...

  2. 《Linux那些事儿之我是USB》我是U盘(7)狂欢是一群人的孤单

    Linux 设备模型中三个很重要的概念就是总线.设备和驱动,即 bus . device 和 driver .而实际上内核中也定义了这么一些数据结构,他们是 struct bus_type , str ...

  3. Linux那些事儿 之 戏说USB(19)设备

    转载地址:http://blog.csdn.net/fudan_abc/article/details/1807800 第一眼看到struct usb_device这个结构,我仿佛置身于衡山路的酒吧里 ...

  4. 【转】Linux那些事儿 之 戏说USB(19)设备

    第一眼看到struct usb_device这个结构,我仿佛置身于衡山路的酒吧里,盯着舞池里扭动的符号,眼神迷离. 交大里苟了几年,毕业了又是住在学校附近的徐虹北路上,沿着虹桥路走过去,到徐家汇不过1 ...

  5. Linux那些事儿 之 戏说USB(5)我是谁

    我是谁?USB一遍一遍问着自己,当然它不会真的是一颗树.USB只是Linux庞大家族里的一个小部落,host controller是它们的族长,族里的每个USB设备都需要被系统识别,被我们识别.虽然清 ...

  6. Linux那些事儿 之 戏说USB(3)我是一棵树

    从拓扑上来看,USB子系统并不以总线的方式来部署,它是一颗由几个点对点的连接构成的树. 它主要包括了USB连接.USB host controller和USB device三个部分.而USB devi ...

  7. Linux那些事儿 之 戏说USB(33)字符串描述符

    关于字符串描述符,前面的前面已经简单描述过了,地位仅次于设备/配置/接口/端点四大描述符,那四大设备必须得支持,而字符串描述符对设备来说则是可选的. 这并不是就说字符串描述符不重要,对咱们来说,字符串 ...

  8. Linux那些事儿 之 戏说USB(25)设备的生命线(八)

    回到struct usb_hcd,继续努力的往下看. 7行,又见kref,usb主机控制器的引用计数.struct usb_hcd也有自己专用的引用计数函数,看drivers/usb/core/hcd ...

  9. Linux那些事儿 之 戏说USB(22)设备的生命线(五)

    下面接着看那三个基本点. 第一个基本点,usb_alloc_urb函数,创建urb的专用函数,为一个urb申请内存并做初始化,在drviers/usb/core/urb.c里定义. struct ur ...

最新文章

  1. win7(64)与samba不兼容
  2. Python并行实例
  3. 在Unity中添加图标
  4. 爱客影院源码V3.5.3完整版 无需授权 源码全开源
  5. Android桌面隐藏图标
  6. 大三实习生,字节跳动面经分享,已拿Offer
  7. 《财经》杂志:盛大新浪梦纪实(完全版)
  8. 心情日记:【原创诗歌】怆情吟
  9. 化合物相似性搜索_SCIFINDER相似结构搜索教程
  10. 微软亚洲研究院多模态模型NÜWA:以自然语言创造视觉内容
  11. python中patch的使用
  12. DETR3D模型源码导读 MMDetection3D构建流程
  13. SparkStreaming面试题
  14. 微果I7随身便携投影仪好不好用?和哈趣H1相比哪个更值得入手?
  15. 数据挖掘综合应用:房屋售价预测案例
  16. 如何使用CNN进行物体识别和分类_基于CNN目标检测方法(RCNN系列,YOLO,SSD)
  17. java实现1-99数字的英文转换
  18. 获取Android手机总内存和可用内存
  19. 使用base64编码加密解密
  20. pdf加密如何解除?pdf转换器有什么用?

热门文章

  1. MinGW-w64安装教程
  2. 极客算法训练笔记(六),十大经典排序之希尔排序,快速排序
  3. 基于STC51:四轴飞控开源项目原理图与源码(入门级DIY)
  4. 腾讯(大连)研发一面-20190620
  5. 脉脉发布AI人才数据图鉴;『李沐·深度学习论文精读』视频合辑;CVPR 2022自动驾驶资源合集;线性代数图绘笔记;前沿论文 | ShowMeAI资讯日报
  6. 文件查找工具Everything的上下文菜单配置
  7. 梯度下降【无约束最优化问题】
  8. OpenLayers 6 如何优雅的使用天地图WMTS服务“经纬度投影(CGCS2000)”和“球面墨卡托投影(EPSG:3857)”
  9. [论文素材]Previous Work----自动仇恨言论检测和冒犯性语言问题
  10. 线性SVM与非线性SVM