史上最经典的Linux内核学习方法论
e img{border:0px;}
drivers/usb/core目录共包括24个文件,16880行代码.core不愧是core,为大家默默的做这么多事.不过这么多文件里不一定都是我们所需要关注的,先拿咱们的地图来看看接下来该怎么走.
先看看Kconfig文件,可以看到下面的选项. 选项USB_DEVICEFS与usbfs文件系统有关.usbfs文件系统挂载在/proc/bus/usb目录,显示了当前连接的所有USB 设 备及总线的各种信息,每个连接的USB设备在其中都会有一个对应的文件进行描述.比如文件/proc/bus/usb/xxx/yyy,xxx表示总__________线的 序号,yyy表示设备所在总线的地址.不过不能够依赖它们来稳定地访问设备,同一设备两次连接对应的描述文件可能会不同,比如,第一次连接一个设备 时,它可能是002/027,一段时间后再次连接,它可能就已经改变为002/048. 就好比好不容易你暗恋的mm今天见你的时候对你抛了个媚眼,你心花怒放,赶快去买了100块彩票庆祝,到第二天再见到她的时候,她对你说你是谁啊,你悲痛欲绝的刮开那100块彩票,上面清一色的谢谢你. usbfs文件系统并不属于USB子系统实现的核心部分,与之相关的代码我们可以不必关注. 这一项是有关USB设备的挂起和恢复.开发USB的人都是节电节能的好孩子,协议里就规定了,所有的设备都支持挂起状态,就是说为了达到节 电的目的,当设备在指定的时间内,如果没有发生总线传输,就要进入挂起状态.当它收到一个non-idle的信号时,就会被唤醒.节约用电从USB做起. 不过这个与主题也没太大关系,相关代码也可以不用关注了. 剩下的还有几项,不过似乎与咱们关系也不大,还是去看看Makefile. Makefile可比Kconfig简略多了,看起来也更亲切点,咱们总是拿的money越多越好,看的代码越少越好.这里之会出现 CONFIG_PCI,是通常USB的Root Hub包含在一个PCI设备中.hcd-pci和hcd顾名而思义就知道是说主机控制器的,它们实现了主机控制器公共部分,按 协议里的说法它们就是 HCDI(HCD的公共接口),host目录下则实现了各种不同的主机控制器.CONFIG_USB_DEVICEFS前面的Kconfig文件里也见到了,关于usbfs的,与咱们的主题无关,inode.c和devices.c两个文件也可以不用管了. 那么我们可以得出结论,为了理解内核对USB子系统的实现,我们需要研究 buffer.c、config.c、driver.c、 endpoint.c、file.c、generic.c、hcd.c hcd.h、hub.c、message.c、notify.c、otg_whitelist.h、quirks.c、sysfs.c、urb.c 和usb.c文件. 这么看来,好像大都需要关注的样子,没有减轻多少压力,不过这里本身就是USB Core部分,是要做很多的事为咱们分忧的,多点也是可以理解的. 下面的分析,米卢教练说了,内容不重要,重要的是态度.就像韩局长对待日记的态度那样,严谨而细致. 只要你使用这样的态度开始分析内核,那么无论你选择内核的哪个部分作为切入点,比如USB,比如进程管理,在花费相对不算很多的时间之后,你就会发 现你对内核的理解会上升到另外一个高度,一个抱着情景分析,抱着0.1内核完全注释,抱着各种各样的内核书籍翻来覆去的看很多遍又忘很多遍都无法达到的高 度.请相信我!让我们在Linux社区里发出号召:学习内核源码,从学习韩局长开始! 态度决定一切:从初始化函数开始 任小强们说房价高涨从现在开始,股评家们说牛市从5000点开始.他们的开始需要我们的钱袋,我们的开始只需要一台电脑,最好再有一杯茶,伴着几支小曲儿,不盯着钱总是会比较惬意的.生容易,活容易,生活不容易,总要盯着钱. 有了地图Kconfig和Makefile,我们可以在庞大复杂的内核代码中定位以及缩小了目标代码的范围.那么现在,为了研究内核对USB子 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |