《Linux内核修炼之道》——分析内核源码如何入手?(上)

发表于:2011-11-09 09:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:fudan_abc    来源:51Testing软件测试网采编

  这一项是有关USB设备的挂起和恢复。开发USB的人都是节电节能的好孩子,所以协议里就规定了,所有的设备都必须支持挂起状态,就是说为了达到节电的目的,当设备在指定的时间内,如果没有发生总线传输,就要进入挂起状态。当它收到一个non-idle的信号时,就会被唤醒。节约用电从USB做起。不过这个与主题也没太大关系,相关代码也可以不用关注了。

  剩下的还有几项,不过似乎与咱们关系也不大,还是去看看Makefile。

  5 usbcore-objs    := usb.o hub.o hcd.o urb.o message.o driver.o /
  6                         config.o file.o buffer.o sysfs.o endpoint.o /
  7                         devio.o notify.o generic.o quirks.o
  8
  9 ifeq ($(CONFIG_PCI),y)
  10         usbcore-objs    += hcd-pci.o
  11 endif
  12
  13 ifeq ($(CONFIG_USB_DEVICEFS),y)
  14         usbcore-objs    += inode.o devices.o
  15 endif
  16
  17 obj-$(CONFIG_USB)       += usbcore.o
  18
  19 ifeq ($(CONFIG_USB_DEBUG),y)
  20 EXTRA_CFLAGS += -DDEBUG
  21 endif

  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部分,是要做很多的事为咱们分忧的,所以多点也是可以理解的。

44/4<1234
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号