自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(25)
  • 资源 (5)
  • 收藏
  • 关注

原创 ==关于三个作者==

因历史原因,本blog专栏名字叫做fudan_abc,但时过境迁, 如今blog维护者已不仅仅是复旦人,一名交大才子加入了这支革命队伍.====================================================================================昨天:两个曾经的复旦人,复旦人甲和复旦人乙.==================

2007-08-31 23:12:00 8402 7

原创 Linux那些事儿之我是Hub(15)一个都不能少

烟波江声里,何处是江南.一晃神,一转眼,我们就这样垂垂老去.可是我们直到现在还根本就没有看明白hub驱动究竟是怎么工作的.但我相信,红莲即将绽放,双星终会汇聚,命运的轮转已经开始,我们只需耐心的等待.2686行,苦苦追寻之后,终于发现从这里开始针对端口进行分析了,有几个端口就对几个端口进行分析,分析每一个端口的状态变化,一个都不能少,很显然,这就是我们期待看到的代码,马上我们就可以知道,当我们

2007-08-30 23:56:00 9754 1

原创 Linux那些事儿之我是Hub(14)没完没了的判断

看着这代码,空虚的代码,麻木的走在崩溃边缘.最讨厌这种没完没了的判断了.记得有一次在中信泰富广场去摩托罗拉中国研发中心面试,也是问了一道挺简单的题目,我就把基本的算法说了一下,然后面试官就说为什么没有错误判断.你说像我这种根本不怎么懂编程的人好不容易能回答出一道题,已经很不错了,为何那些企业要求都这么高呢?一个人因为没有工作经验而不能得到一个工作,但是他又因为没有一个工作而得不到工作经验.算了,现

2007-08-30 23:26:00 7001 2

原创 Linux那些事儿之我是Hub(13)树,是什么样的树?

同学们,今天我们来讲一棵树.记得小时候我们看白眉大侠>>,记得那段精彩的对白:刀,是什么样的刀?金丝大环刀!剑,是什么样的剑?闭月羞光剑!招,是什么样的招?天地阴阳招!人,是什么样的人?飞檐走壁的人!情,是什么样的情?美女爱英雄!而今天我们要问的是:树,是什么样的树?答:USB设备树.这是怎样一棵树?让我慢慢的道来.苏格拉底曾经说过:为人不识谭浩强,精通内核也枉然.还记得谭浩强大哥

2007-08-27 12:59:00 4721 2

原创 Linux那些事儿之我是Hub(12)再向虎山行

徐志摩说:轻轻的我穿衣,正如我轻轻的脱;后来徐志摩又说:轻轻的我走了,正如我轻轻的来.hub_events(),没错,胡汉三又回来了.再一次进入while这个(该)死(的)循环.第一次来这里的时候,hub_event_list是空的,可是这一次不是了,我们刚刚在kick_khubd()里面才执行了往这个队列里插入的操作,所以我们不会再像第一次一样,从2621行的break跳出循环.

2007-08-25 22:14:00 5653

原创 Linux那些事儿之我是Hub(11)While You Were Sleeping(四)

我们说过,hub里面的中断端点是IN的,不是OUT的.但这并不说明凡是中断传输数据一定是从设备到主机,没这种说法,别起哄.不过hub需要的确实只是IN的传输.首先,每一个男人都应该知道,中断是由设备产生的.在usb的世界里两个重要角色,主机,设备.主机就像一个人民公仆,设备就像人民群众,公仆常常日理万机,或者日理万鸡,他也许不会去理会每一个子民的水深火热,群众如果要想引起公仆的注意,只能做一些有创

2007-08-23 22:34:00 5360 1

原创 Linux那些事儿之我是Hub(10)While You Were Sleeping(三)

get_hub_descriptor()结束了,然后就返回hub_configure()中来.635到642行,判断刚才的返回值,小于零当然是出错了,大于零也还要多判断一次, USB_MAXCHILDREN是咱们自己定义的一个宏,值为31.看include/linux/usb.h:324 #define USB_MAXCHILDREN         (31)其实hub可以接一共255个端

2007-08-23 22:31:00 6857

原创 Linux那些事儿之我是Hub(9)While You Were Sleeping(二)

老实说,从函数一个开始的598行直到627行都没有什么可说的.其中需要一提的是,606行,调用usb_buffer_alloc()申请内存,赋给hub->buffer.614行,调用kmalloc()申请内存,赋给hub->status.622行,调用kmalloc()申请内存,赋给hub->descriptor.当然也别忘了这中间的某行,初始化一把互斥锁,hub->status_mutex.以后

2007-08-23 22:28:00 5026 1

原创 Linux那些事儿之我是Hub(8)While You Were Sleeping(一)

最近看了热播的电视剧奋斗>>,赵宝刚导演的转型之作.里面李小璐和文章演的那对小夫妻甚是搞笑.这部片子其实号称励志篇但实际上一点也不励志,就是搞笑,像我这种严肃的人向来不喜欢这些搞笑,不过里面李小璐扮演的杨晓芸对文章演的那个向南的一番对话倒是让我觉得颇为感慨.杨晓芸一心希望向南能够有理想有目标,而向南却非常满足于现状,而这种矛盾间接导致了杨晓芸对丈夫的失望并且最终两个人走向了离婚.其实我就是一个没有

2007-08-23 22:26:00 5616

原创 Linux那些事儿之我是Hub(7)蝴蝶效应

朋友,你相信,一只蝴蝶在北京拍拍翅膀,将使得纽约几个月后出现比狂风还厉害的龙卷风吗?看过那部经典的影片蝴蝶效应的朋友们一定会说,这不就是蝴蝶效应吗.没错.蝴蝶效应其实是混沌学理论中的一个概念.它是指对初始条件敏感性的一种依赖现象.蝴蝶效应的原因在于蝴蝶翅膀的运动,导致其身边的空气系统发生变化,并引起微弱气流的产生,而微弱气流的产生又会引起它四周空气或其它系统产生相应的变化,由此引起连锁反应,最终导

2007-08-20 15:17:00 14863 9

原创 Linux那些事儿之我是Hub(6)probe,又见probe!

话说因为hub驱动无所事事,所以hub_thread()进入了睡眠,直到某一天,hub_probe被调用.所以我们来看hub_probe().这个函数来自drivers/usb/hub.c,其作用就如同当初我们在usb-storage中的那个storage_probe()一样.    887 static int hub_probe(struct usb_interface *intf, co

2007-08-18 22:53:00 10306 1

原创 Linux那些事儿之我是Hub(5)等待,只因曾经承诺

hub_thread()中还有一个函数没有讲.它就是try_to_freeze().这是电源管理相关的.对大多数人来说,关于这个函数,了解就可以了.以下的内容就当科普性质吧,也算哥们儿为奥运做点贡献,提高国民科学文化知识水平.随着Linux开始支持suspended之后,西方的资本家们提倡,每一个内核进程都应该在适当的时候,调用try_to_freeze().什么意思呢?有这样一个flag,PF_

2007-08-11 12:34:00 9047 4

原创 Linux那些事儿之我是Hub(4)那些队列,那些队列操作函数

这一节我们讲队列.从前在乡下的时候是不用排队的,村里的人们都很谦让,而且人本来又不多.后来到了县城里,县城里不大,大家去走亲戚去串门去逛街不用坐车不用排队,除了街上的游戏厅人多一点以外,别的地方人都不是很多,陪妈妈去菜市场买菜也不用排队.后来到了上海,发现去食堂吃饭要排队,开学报道要排队,在人民广场等回复旦的123路公共汽车要排队,考试成绩不好去教务处交重修费要排队,甚至连追求一个女孩子也要排

2007-08-10 10:04:00 8337 3

原创 Linux那些事儿之我是Hub(3)一样的精灵不一样的API

usb_register()和usb_deregister()这两个函数我们当初分析usb storage的时候就已经见到过了.当时我们就说过了,这个函数是用来向usb核心层,即usb core,注册一个usb设备驱动的.那年我们注册了一个struct usb_driver usb_storage_driver.而这里我们注册的是hub的驱动程序所对应的struct usb_driver结构体

2007-08-09 20:38:00 8053 1

原创 Linux那些事儿之我是Hub(2)特别的爱给特别的Root Hub

莎士比亚曾经说过,不懂hub是怎么工作的就等于不知道usb设备驱动是怎么工作的.这句话一点没错,因为usb设备的初始化都是hub这边发起的,通常我们写usb设备驱动程序都是在已经得到了一个struct usb_interface指针的情况下开始probe工作,可是我要问你,你的struct usb_interface从哪来的?你以为你的设备天生丽质?长得比较帅?一插入usb口就有了?如果有人说是的

2007-08-07 22:34:00 7566 7

原创 Linux那些事儿之我是Hub(1)跟我走吧,现在就出发

最早知道hub是在大学里,复旦的4人间宿舍,条件真好,每个人一张书桌,书桌下面一个网口,但是有时候网口坏了,那可急死人了,要知道当初我们买电脑初衷虽说是为了学习C语言,可是买了之后,C倒是没学,先学了CS.printf还没学会呢,倒是先学会了怎么在CS里喊go go go, fire in the hole!网口坏了就意味着CS不能玩了,当时对人生真的很绝望,后来有人介绍,说6楼几个哥们也有这

2007-08-07 21:28:00 6831 1

原创 Linux那些事儿之我是U盘 提供pdf下载

http://www.newsmth.net/att.php?p.299.44271.374.pdf还会继续修改,主要是加入一些图片.比如传输协议的,数据格式的,函数调用关系的图片.预计会在9月初提供更新版本的下载.欢迎指出错误. 

2007-08-07 17:21:00 13546 28

原创 Linux那些事儿之我是Hub(引子)

  来北京也有半年了,这半年里,想疯的时候就去工体西路的Babyface,不想疯的时候就去权金城.喜欢权金城其实是没有理由的,但仔细想想又还是有理由的.  洗浴费39元,像我同学办了张银卡,于是每次只要29元.洗完了要按摩就按摩,不按摩就开个房间,睡一晚上,有那种89块钱的三人间,费用比那些宾馆要便宜许多,很适合我们这种夜生活丰富,不想回家睡的家伙.不过权金城很奇怪的,不提供特殊服务,我们问过

2007-08-05 15:45:00 6530 4

原创 Linux那些事儿之我是U盘(大结局)其实世上本有路,走的人多了,也便没了路

  其实信号量这东西,就像北京户口,你占了一个名额,我就可能没有了名额.但是有些事情,没有北京户口你又办不成.比如我满怀壮志的走到医院向医生表达说我希望死了以后可以捐献遗体,可得到的只是医生冷冷的回复,对不起,你没有资格,因为你没有户口.  我们前面说过,Linux中,有信号量,有自旋锁,有互斥锁,自旋锁或者互斥锁从某种意义上来说就只是一种特殊的信号量,即信号量意味着资源数量有限,但这个有限也

2007-08-04 16:47:00 5025 12

原创 Linux那些事儿之我是U盘(54)当梦醒了天晴了

  多情自古伤离别,更那堪,冷落清秋节!  今宵酒醒何处?  杨柳岸,晓风残月.  此去经年,应是良辰好景虚设.  便纵有,千种风情,更与何人说?   伴随着婉约派才子,词坛浪子柳永的这首令人肝肠寸断的雨霖铃>>,我们来到了最后一个重要的函数,storage_disconnect.  usb设备的热插拔特性注定了我们应该在设备插入的时候做一些事情,在设备拔出的时候做一些

2007-08-04 15:26:00 4543 1

原创 Linux那些事儿之我是U盘(53)有多少爱可以胡来?(二)

device_reset()完了之后我们来看bus_reset().同样来自drivers/usb/storage/scsiglue.c中.265 /* This resets the devices USB port. */    266 /* It refuses to work if theres more than one interface in    267  * the de

2007-08-04 13:44:00 3533 1

原创 Linux那些事儿之我是U盘(52)有多少爱可以胡来?(一)

上帝给了每个人一支书写人生的铅笔,却未曾给我们橡皮擦.但计算机的世界却并非如此,电脑用着用着觉得不正常了,按一下reset键就一切ok了. (当然你要是中了熊猫烧香啊中了冲击波啥的病毒那就另当别论了,喂,别打岔行不行,我们讲正事呢.)如果人生也可以这样,那么星爷的那段经典的妇孺皆知的”人世间最悲哀的……假如……”的对白恐怕就没有意义了.在驱动程序中,一个非常非常重要的概念就是错误处理.生活不是

2007-08-03 22:51:00 4494 3

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

这一节我们来分析一个在很多企业的产品中都存在的bug.写设备驱动是一件很实在的事情,你得根据实实在在的硬件来编写你的代码,如果你的硬件存在某种bug,那么你就要去fix它.如果你希望成为通用的驱动程序,那么你就要兼顾各家企业,兼顾各种可能存在的bug.也许一百家企业的产品都可以很好的被你的程序所支持,但是如果地一百零一家的产品有问题,你就得尽量解决.usb-storage正是这样一个模块.所以它的

2007-08-02 23:09:00 5101

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

回到usb_stor_invoke_transport()中来,540行,还是老套路,又问是不是命令被放弃了,放弃了当然下面的就别执行了.goto Handle_Abort去.546行,如果有错误,注意正如前面所说,USB_STOR_TRANSPORT_ERROR表示传输本身就是有问题的,比如管道堵塞.而USB_STOR_TRANSPORT_FAILED则只是说明命令传输是没有问题的,就比如你

2007-08-01 23:26:00 4988

原创 Linux那些事儿之我是U盘(49)跟着感觉走(一)

接下来的时间里我们会接触两个变量,fake_sense和need_auto_sense,sense顾名思义,感觉.所以就让我们跟着感觉走.我们前面提到过,如果设备想发送比期望值更多的数据,那么我们前面就设了fake_sense为1.这里就来看看设为1之后怎么办.这里咱们看到了这个一个冬冬,usb_stor_sense_invalidCDB,她是谁?   让我们把镜头对准drivers/usb/

2007-08-01 21:17:00 7123

《Linux内核修炼之道》精华版之方法论

新书《Linux内核修炼之道》精华版中的方法论部分,博客blog.csdn.net/fudan_abc上部分精华篇的合集。

2010-03-31

Linux那些事儿之我是USB Core(v1.0)

2.6.22内核的usb core源码分析。原文为blog.csdn.net/fudan_abc上的《linux那些事儿之戏说USB》。

2007-11-05

Linux那些事儿之我是Hub

2.6.22.1内核的usb hub driver分析.Beta版.

2007-09-29

Linux那些事儿之我是U盘

Linux 2.6 kernel usb mass storage driver<br>设备驱动源代码分析

2007-08-07

Linux那些事儿之我是U盘

Linux 2.6 内核 usb 设备驱动&lt;br&gt;电子书&lt;br&gt;pdf格式

2007-08-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除