Linux那些事儿 之 戏说USB(11)繁华落尽
Linux设备模型中的总线落实在USB子系统里就是usb_bus_type,它在usb_init函数注册,在drivers/usb/core/driver.c文件里定义
struct bus_type usb_bus_type = {.name = "usb",.match = usb_device_match,.uevent = usb_uevent,
};
name自然就是usb总线的绰号了。match这个函数充当了一个红娘的角色,在总线的设备和驱动之间牵线搭桥。match指向了函数usb_device_match
static int usb_device_match(struct device *dev, struct device_driver *drv)
{/* devices and interfaces are handled separately */if (is_usb_device(dev)) {/* interface drivers never match devices */if (!is_usb_device_driver(drv))return 0;/* TODO: Add real matching code */return 1;} else if (is_usb_interface(dev)) {struct usb_interface *intf;struct usb_driver *usb_drv;const struct usb_device_id *id;/* device drivers never match interfaces */if (is_usb_device_driver(drv))return 0;intf = to_usb_interface(dev);usb_drv = to_usb_driver(drv);id = usb_match_id(intf, usb_drv->id_table);if (id)return 1;id = usb_match_dynamic_id(intf, usb_drv);if (id)return 1;}return 0;
}
第1行,经历了linux设备模型的繁华,参数我们都已经很熟悉了,对应的就是总线两条链表里的设备和驱动,也可以说是鹊桥版上的挂牌的和摘牌的。总线上有新设备或新的驱动添加时,这个函数总是会被调用,如果指定的驱动能够处理指定的设备,也就是匹配成功,函数返回0。梦想是美好的,现实是残酷的,匹配是未必成功的,红娘再努力,双方对不上眼也是实在没办法的事。
第4行,一遇到if和else,我们就知道又处在两难境地了,代码里我们可选择的太多。这里的岔路口只有两条路,一条给USB设备走,一条给USB接口走,各走各的路,分开了,就不再相见。
Linux那些事儿 之 戏说USB(11)繁华落尽相关推荐
- Linux那些事儿 之 戏说USB(11)不一样的core
转载地址:http://blog.csdn.net/fudan_abc/article/details/1792367 "生活中肯定还有比睡觉更好玩的事情!"大小卡梅拉们一直都抱有 ...
- Linux那些事儿 之 戏说USB(19)设备
转载地址:http://blog.csdn.net/fudan_abc/article/details/1807800 第一眼看到struct usb_device这个结构,我仿佛置身于衡山路的酒吧里 ...
- 【转】Linux那些事儿 之 戏说USB(19)设备
第一眼看到struct usb_device这个结构,我仿佛置身于衡山路的酒吧里,盯着舞池里扭动的符号,眼神迷离. 交大里苟了几年,毕业了又是住在学校附近的徐虹北路上,沿着虹桥路走过去,到徐家汇不过1 ...
- Linux那些事儿 之 戏说USB(33)字符串描述符
关于字符串描述符,前面的前面已经简单描述过了,地位仅次于设备/配置/接口/端点四大描述符,那四大设备必须得支持,而字符串描述符对设备来说则是可选的. 这并不是就说字符串描述符不重要,对咱们来说,字符串 ...
- Linux那些事儿 之 戏说USB(28)设备的生命线(十一)
现在已经使用GET_DESCRIPTOR请求取到了包含一个配置里所有相关描述符内容的一堆数据,这些数据是raw的,即原始的,所有数据不管是配置描述符.接口描述符还是端点描述符都彼此的挤在一起,所以得想 ...
- Linux那些事儿 之 戏说USB(15)设备
struct usb_device结构冗长而又杂乱 include/linux/usb.h struct usb_device {int devnum;char devpath[16];u32 rou ...
- Linux那些事儿 之 戏说USB(25)设备的生命线(四)
转载地址:http://blog.csdn.net/fudan_abc/article/details/1819919 洗澡是屁股享福,脑袋吃苦:看电影是脑袋享福,屁股吃苦:看内核代码是脑袋.屁股都吃 ...
- Linux那些事儿 之 戏说USB(大结局)还是那个match
从上次在几米的向左走向右走遇到usb总线的那个match函数usb_device_match()开始到现在,遇到了设备,遇到了设备驱动,遇到了接口,也遇到了接口驱动,期间还多次遇到usb_device ...
- Linux那些事儿 之 戏说USB(27)设备的生命线(十)
跟着设备的生命线走到现在,我算是明白了,什么东西的发展都是越往后越高级越复杂.再给张小表,看看现在和上次那张表出现的时候有什么变化. state USB_STATE_ADDRESS sp ...
最新文章
- java c 序列化_Java 序列化
- scipy.spatial.distance 与 sklearn cosine_similarity
- Expected image (JPEG, PNG, or GIF), got empty file
- Sencha-概念-Events(事件)(官网文档翻译10)
- CF896E Welcome home,Chtholly/[Ynoi2018]五彩斑斓的世界(并查集+第二分块)
- Django框架——类视图
- mysql nhibernate_C#连接Mysql数据库NHibernate
- sublime配置go环境_sublime Text3配置go编译环境
- 假如Python有C/C++ 的性能,会不会称霸IT界?
- linux内核分支,新闻|Linux 内核分支 2.4 版结束生命周期
- 【编译器】G++相关编译命令
- 去除标题_1688如何通过黄金标题引爆流量?
- 对FT证券系统故障的分析与思考
- 《概率论基础教程》总结 -- 样本空间、概率、条件概率 等
- Android Textview控件基础属性
- h5中的结构元素header、nav、article、aside、section、footer介绍
- java lua脚本_在Java中使用Lua脚本语言
- 2794: [Poi2012]Cloakroom
- 检察院批准逮捕洪磊,铁杆分子不买帐
- 三脚架代表人生_如何选择和使用三脚架