这个故事中使用的是2.6.10的内核代码.Linux内核代码目录中, 所有去设备驱动程序有关的代码都在drivers/目录下面,在这个目录中我们用ls命令可以看到很多子目录.

localhost:/usr/src/linux-2.6.10/drivers # ls
Kconfig   atm        cdrom    eisa      ide       macintosh  message  net       parport  s390    tc         w1
Makefile  base       char     fc4       ieee1394  mca        misc     nubus     pci      sbus    telephony  zorro
acorn     block      cpufreq  firmware  input     md         mmc      oprofile  pcmcia   scsi    usb
acpi      bluetooth  dio      i2c       isdn      media      mtd      parisc    pnp      serial  video

其中usb目录包含了所有usb设备的驱动,而usb目录下面又有它自己的子目录,进去看一下,

localhost:/usr/src/linux-2.6.10/drivers # cd usb/
locahost:/usr/src/linux-2.6.10/drivers/usb # ls
Kconfig  Makefile  README  atm  class  core  gadget  host  image  input  media  misc  net  serial  storage  usb-skeleton.c

注意到每一个目录下面都有一个Kconfig文件和一个Makefile,这很重要.稍后会有介绍.

而我们的故事其实是围绕着drivers/usb/storage这个目录来展开的.实际上这里边的代码清清楚楚地展示了我们日常频繁接触的U盘是如何工作的,是如何被驱动起来的.但是这个目录里边的冬冬并不是生活在世外桃源,他们总是和外面的世界有着千丝万缕的瓜葛.可以继续进来看一下,

localhost:/usr/src/linux-2.6.10/drivers/usb # cd storage/
localhost:/usr/src/linux-2.6.10/drivers/usb/storage # ls
Kconfig    debug.c  freecom.c       isd200.c    protocol.c  sddr09.c  shuttle_usbat.c  unusual_devs.h
Makefile   debug.h  freecom.h       isd200.h    protocol.h  sddr09.h  shuttle_usbat.h  usb.c
datafab.c  dpcm.c   initializers.c  jumpshot.c  scsiglue.c  sddr55.c  transport.c      usb.h
datafab.h  dpcm.h   initializers.h  jumpshot.h  scsiglue.h  sddr55.h  transport.h

咋一看,着实吓了一跳,用`wc -l *`这个命令统计一下,12076行,晕死...

但是,也许,生活中总是充满了跌宕起伏.

认真看了一下Makefile和Kconfig之后,心情明显好了许多.

Linux那些事儿之我是U盘(1)小城故事相关推荐

  1. linux 那些事儿之我是 u 盘,《Linux那些事儿之我是USB》.PDF

    <Linux 那些事儿之我是 USB> 作者:华清远见 第 1 章 Linux 那些事儿之我是 USB Core 专业始于专注 卓识源于远见 1 .引子 老夫子们痛心疾首地总结说,现代青年 ...

  2. Linux那些事儿之我是U盘(5)外面的世界很精彩

    看代码之前,我曾经认真的思考过这么一个问题,我需要关注的仅仅是drivers/usb/storage/目录下面那相关的3000多行代码吗?就是这样几个文件就能让一个个不同的U盘在Linux下面工作起来 ...

  3. Linux那些事儿之我是U盘(4)想到达明天,现在就要启程

    既然知道了怎么编写一个模块,那么编写设备驱动程序自然也就不难了.我相信,每一个会写模块的人都不会觉得写设备驱动有困难.对自己行不行不确定的话,可以去问一下葛优,他准说:"(神州行),我看行. ...

  4. 转载本论坛 (fudan_abc ) :linux那些事儿之我是u盘(16)冰冻三尺非一日之寒

    不是一天建成的 . 在让 U 盘工作之前 , 其实我们的驱动作了很多准备工作 . 我们继续跟着感觉走,storage_probe(),943行至948行,一系列的以init_*命名的函数在此刻被调用, ...

  5. 【转】Linux那些事儿之我是U盘(4)想到达明天,现在就要启程

    既然知道了怎么编写一个模块,那么编写设备驱动程序自然也就不难了.我相信,每一个会写模块的人都不会觉得写设备驱动有困难.对自己行不行不确定的话,可以去问一下葛优,他准说:"(神州行),我看行. ...

  6. Linux那些事儿之我是U盘--引子

    也许是在复旦养成了昼伏夜出的坏习惯,工作之后也总是很晚也不愿意睡.来到北京之后,开始听广播听都市之声的北京不眠夜.这个节目是从23点直到第二天凌晨一点,我常常是听完了才会睡觉.无论是北京还是上海,对我 ...

  7. Linux那些事儿之我是U盘(50)跟着感觉走(二)

    回到usb_stor_invoke_transport()中来,540行,还是老套路,又问是不是命令被放弃了,放弃了当然下面的就别执行了.goto Handle_Abort去. 546行,如果有错误, ...

  8. Linux那些事儿之我是U盘(51)光荣属于苹果,属于诺基亚,属于摩托罗拉,属于索尼爱立信

    这一节我们来分析一个在很多企业的产品中都存在的bug.写设备驱动是一件很实在的事情,你得根据实实在在的硬件来编写你的代码,如果你的硬件存在某种bug,那么你就要去fix它.如果你希望成为通用的驱动程序 ...

  9. Linux那些事儿之我是U盘(29)将控制传输进行到底

    其实usb_stor_clear_halt这个函数的作用很简单,就是spec里边规定了,usb设备中,有两类端点,必须具有一个叫做Halt的特征,啥是Halt?查金山词霸去,中断,停止,暂停,怎么解释 ...

最新文章

  1. 瞧瞧,这样的『函数』才叫 Pythonic
  2. star-cd linux安装,linux 使用PXE方式,kickstar网络安装系统
  3. python反编译加密文件_python打包的二进制文件反编译
  4. linux7系统怎么启动ftp,CentOS 7上启动 vsftp报错解决一例
  5. php mysql显示不出图片_图片显示不出来,但是数据库里有显示
  6. 安装nuxt_一天上手Nuxt基于vue服务端渲染
  7. 管理新语:一项工作如果一定要上,不要等准备好,立即上
  8. 光储并网直流微电网控制策略及仿真模型
  9. 论文篇-----基于机器学习的交通流预测技术的研究与应用
  10. 如何解锁PDF的打印限制
  11. jQuery02(达)
  12. windows组策略_Windows中的“组策略”是什么?
  13. Marlin固件的欢迎界面
  14. 神经网络特征层可视化pytorch
  15. Flutter列表ListView学习
  16. linux常用命令(包含系统命令)
  17. php 运行c语言,echo c语言运行
  18. 计算机课程设计参考文献,计算机课程设计专著参考文献 计算机课程设计论文参考文献哪里找...
  19. Cisco Packet Tracer(对cisco模拟器的初识+路由基本配置)
  20. 哈夫曼编码树的经典题目

热门文章

  1. 计算机中的数(二):定点数的移位运算和加减运算
  2. (AI)人工智能导论实验【A* 算法】
  3. 【物联网树莓派毕设04】Arduino实现电梯及人脸识别门禁
  4. 什么是自动化运维?自动化运维必备技能有哪些?
  5. 运算符-if语句-switch语句-循环语句-continue/break语句
  6. 学习HTML5开发RPG游戏第五步游戏界面设计一
  7. nyist oj nyoj 865
  8. 传奇源码分析-客户端(传奇2和3 文件格式分析比较)
  9. 同事说聊天没有表情,我在内网搭了一个表情包网站
  10. Java 求解买卖股票时机含冷冻期