- 博客(23)
- 资源 (5)
- 收藏
- 关注
原创 Linux那些事儿之我是SCSI硬盘(1)简简单单初始化
在那茫茫人海中,我找到了这两行, 1886 module_init(init_sd); 1887 module_exit(exit_sd);不要问我它们来自哪里,咱们整个故事就是围绕着drivers/sd.c这么一个文件展开,所以除非特别声明的之外,都是来自这个文件. 1831 /** 1832 * init_sd - entry point f
2007-11-30 17:53:00 9569 2
原创 Linux那些事儿之我是SCSI硬盘-引子
有一天身子问心:"我要是痛了,医生会给我治,你痛了谁给你治啊?"于是心说:"我只能自己给自己治."也许因为这样,每个人都有一个治疗自己心中伤痛的方法.喝酒,唱歌,发火,或哭或笑,跟朋友诉苦,共旅行,跑马拉松,最差的一种方法是逃避这种心痛.我的方法是写这种伪技术的文章.但是写些什么呢?既然有人写了USB,既然有人写了PCI,那么如果不写SCSI,恐怕是天理地理都难容了.就说我们公司吧,机
2007-11-29 21:28:00 11541 6
原创 Linux那些事儿 之 我是PCI(3)PCI的那些内核参数
经过上节的头脑风暴,咱们明白了,PCI这边儿入口虽然多,但还是有规律可循有法可依的,内核启动时,得一个一个严格的按照顺序调用它们来完成PCI子系统的初始化,不能乱了章法。这点儿并不是所有人都会明白的,比如前段儿时间厦门那出儿卖房事件里宣称“我海关有人,谁敢动我”的那位海关老婆,她就觉得有法是不如有人的。(背景知识:厦门网11月14日电,06年11月5日,曾先生夫妻向被告购买了香秀里的这套房子,
2007-11-25 22:59:00 8902 3
原创 Linux那些事儿之我是UHCI(大结局)"脱"就一个字
李小璐脱了,周迅脱了,汤唯脱了.下一个脱的是谁?答案不是林志玲,不是徐静蕾,而是QH.我们知道整个故事里我们一直围绕着QH的队列在说来说去,我们不停的进行着队列操作,我们有时候把QH link起来成一个个的队列,而有时候又把QH从队列里给unlink,我所用的盗版的金山词霸2005告诉我,unlink翻译成中文就是解开,拆开,松开.Okay,简洁一点说,一个字,脱!脱就脱,东风吹,战鼓擂,这个
2007-11-24 23:30:00 3124
原创 Linux那些事儿之我是UHCI(29)FSBR
现在让我们来关注一下fsbr.尽管之前就FSBR本身已经说过了,但是代码中出现了很多关于fsbr的变量以及函数.如果不来梳理一下,恐怕你和我一样,仍然感到无限困惑,无限茫然.那么让我们点亮心灵的阿拉丁神灯,共同穿越这代码的迷朦.struct uhci_hcd中有这么几个成员,unsigned int fsbr_is_on,unsigned int fsbr_is_wanted,unsigned
2007-11-24 23:27:00 6801
原创 Linux那些事儿之我是UHCI(27)实战电源管理(三)
接下来剩下两个重要的函数,uhci_suspend和uhci_resume,不过孤立的看这两个函数没有意义,得结合上下文来看,调用它们的分别是usb_hcd_pci_suspend和usb_hcd_pci_resume,所以我们从这两个函数看起.当然单纯的看这些函数也是没有意义的,这个世界上像灰尘一样多的,除了美女,还有Linux内核中的函数;这个世界上像细菌一样多的,除了帅哥,还有Linux内核
2007-11-22 17:29:00 5610 1
原创 Linux那些事儿之我是UHCI(26)实战电源管理(二)
看了suspend自然就要看resume,在电源管理的世界里,挂起和唤醒是永远被相提并论的一对,它们就像天上的雪花,本来互不相识,一旦落在地上,化成水,结成冰,便再也分不开了!沿着上面的线索我们继续玩.现在我们设置断点wakeup_rh.然后我们插入U盘.不出所料,我们又一次进入了kdb.用bt命令看一下调用堆栈,发现调用wakeup_rh的uhci_rh_resume,调用uhci_rh_r
2007-11-22 17:26:00 3002
原创 Linux那些事儿 之 我是PCI(1)PCI,我们来了
现在这段时间最火的工程是什么?当然不会是PCI这个系统工程了,你即使不是党员也总归是个中国人,是中国人都要毫不犹豫的回答“探月工程”。不过,如果你在两年前就这么问我的话,俺会面带羞涩的回答你,是“中国芯工程”,谁让汉芯偏偏就是俺们交大的那,谁让汉芯又偏偏是假的那,俺无法回答你,俺陈进手下的哥们儿也无法回答你。到现在俺还依稀记得,在2002年的那个秋天,俺刚到交大就遇到陈进时的情景,旁边儿一见多识广
2007-11-16 16:51:00 16980 10
原创 Linux那些事儿之我是UHCI(25)实战电源管理(一)
车上的乘客大家请注意,下一站车上将上来几个小偷,大家一定要看管好自己的钱包和随身携带的物品.——东北某报记者在葫芦岛听到公共汽车售票员这样提示.此刻,我也需要预先提示你,关于uhci,我们如果想结束,现在就可以结束,如果不想,那么继续往前走一点也未尝不可.继续走的话我们会关注电源管理的部分,就如同我们在hub驱动中关注的一样.由于这部分代码颇为抽象,我们于是利用kdb,并且以做实验的方
2007-11-15 21:55:00 3724
原创 Linux那些事儿之我是UHCI(24)等时传输
然后我们可以来看等时传输了.由于等时传输的特殊性,很多地方它都被特别的对待了.从usb_submit_urb开始就显示出了它的白里透红与众不同了.该函数中268行, 判断temp是不是PIPE_ISOCHRONOUS,即是不是等时传输,如果是,就执行下面那段代码.278行,int number_of_packets是struct urb的一个成员,它用来指定该urb所处理的等时传输缓冲区的数量
2007-11-15 17:50:00 4689
原创 Linux那些事儿之我是UHCI(23)非Root Hub的中断传输
再来看非Root hub的中断传输,usb_submit_urb还是那个usb_submit_urb,usb_hcd_submit_urb还是那个usb_hcd_submit_urb,但是很显然rh_urb_enqueue不会再被调用.取而代之的是1014行,driver->urb_enqueue的被调用.即uhci_urb_enqueue.这个函数咱们在讲控制传输的时候已经贴出来也已经讲过了,后
2007-11-15 15:06:00 3537
原创 Linux那些事儿之我是UHCI(22)Root Hub的中断传输
来看中断传输,中断传输和下面要讲的等时传输无疑要比之前的那两种传输复杂些,至少它们讲究一个周期性.当年歌坛大姐大那英在看到usb子系统中对这两种传输的实现的复杂性之后,颇为感慨的对写代码的哥们儿唱出了那句”就这样被你征服”,而其多年来的老对手田震看了之后心情抑郁,一气之下,嗓子永久性的嘶哑了,但仍然呼吁后人看这些代码的时候要”执著”.所以我们看代码的时候看不懂也不用灰心,歌手林志炫的成名曲单身情歌
2007-11-14 21:05:00 3631 2
原创 Linux那些事儿之我是UHCI(21)传说中的中断服务程序(ISR)
想当年咱们在usb_add_hcd中使用request_irq注册了中断函数,写代码的人做每件事情都是费尽心机的,为了达到目的不择手段,他们绝不是雷锋,他们每做一件事情都是有着极强的功利心态的,每注册一个函数都是为了日后能够利用该函数,当初注册了usb_hcd_irq,这会儿就该调用这个函数了.这个函数来自drivers/usb/core/hcd.c: 1422 /** 1423
2007-11-12 16:52:00 4569
原创 Linux那些事儿之我是UHCI(20)非Root Hub的Bulk传输
看完了控制传输,咱们来看Bulk传输,Root hub没有Bulk传输,所以咱们只需要关注非Root Hub.当然还是从usb_submit_urb()开始.和控制传输一样,可以直接跳到usb_hcd_submit_urb().由于我们在start_rh()中设置了hcd->state为HC_STATE_RUNNING,所以这里list_add_tail会被执行,本urb会被加入到ep的urb
2007-11-12 16:09:00 3461 1
原创 Linux那些事儿之我是UHCI(19)非Root Hub的控制传输
下面来看非Root Hub的控制传输.还是从usb_submit_urb()开始,转而进入usb_hcd_submit_urb(),然后就进入到了uhci_urb_enqueue.我们来看uhci_urb_enqueue,它来自drivers/usb/host/uhci-q.c,再强调一下,我们现在看的是控制传输: 1377 static int uhci_urb_enqueue(st
2007-11-05 22:32:00 4010 1
原创 Linux那些事儿 之 戏说USB 提供PDF下载
http://download.csdn.net/source/277869因为写的就是usb core里的东东,所以名字就改为《我是USB Core》了,内容也做了部分的调整。
2007-11-05 17:54:00 22349 24
原创 Linux那些事儿之我是UHCI(18)Root Hub的控制传输(二)
医生,请把孩子取出来之后,顺便给我吸吸脂.——广州一妇女在剖腹产手术前对医生说.对于控制传输,rh_call_control会被调用.我也特别希望能有人给这个函数吸吸脂,我们的上下文是为了获取设备描述符,即当初那个usb_get_device_descriptor领着我们来到了这个函数,为了完成这件事情,实际上只需要很少的代码,但是rh_call_control这个函数涉及了所有的Root
2007-11-05 15:54:00 7174
原创 Linux那些事儿之我是UHCI(17)Root Hub的控制传输(一)
虽然最伟大的probe函数就这样结束了.但是,我们的道路还很长,困难还很多,最终的结局是未知数,我们的故事和社会主义的航班一样,还不知要驶向何处.在剩下的篇幅中,除了最后的电源管理部分以外,我们将围绕一个函数进行展开,这个函数就是usb_submit_urb().子曾经曰过:不吃饭的女人这世上也许还有好几个,不吃醋的女人却连一个也没有.我也曾经曰过:不遵循usb spec的USB设备这世上也许
2007-11-05 15:46:00 4287
原创 Linux那些事儿之我是UHCI(16)寂寞在唱歌
接下来就该是usb_hcd_poll_rh_status了.这个函数在咱们整个故事将出现多次,甚至可以说在任何一个HCD的故事中都将出现多次.为了继续走下去,我们必须做一个伟大的假设.假设现在Root Hub上还没有连接任何设备,也就是说此时此刻,usb设备树上只有Root Hub形单影只.没有人来陪伴他,他只能静静的看青春难依难舍,只能听寂寞在唱歌,轻轻的,狠狠的,歌声是这么残忍让人忍不住泪
2007-11-04 20:59:00 3879 3
原创 Linux那些事儿之我是UHCI(15)Root Hub的注册
回到usb_add_hcd之后,1638行,得出rhdev的bus_mA,这个咱们在Hub驱动中已经讲过.有些主机控制器是需要设置power_budget,咱们没有设置过,就是默认值0,所以这里得到的是bus_mA就是0,0表示没有限制,hub驱动中我们看到了对于没有限制的情况我们是给每个端口设置为最多500mA,因为通常来讲计算机的usb端口能提供的最多就是500mA.1639行,regis
2007-11-04 16:08:00 4706 1
原创 Linux那些事儿 之 戏说USB(大结局)还是那个match
从上次在几米的向左走向右走遇到usb总线的那个match函数usb_device_match()开始到现在,遇到了设备,遇到了设备驱动,遇到了接口,也遇到了接口驱动,期间还多次遇到usb_device_match(),又多次与它擦肩而过,“我们以前都失散过,十三年以后,还不是再遇见?”其实每个人都有一条共同之路,与正义和良知初恋,失身于上学,嫁给了钱,被世俗包养。每个设备也都有一条共同之路,与
2007-11-02 12:08:00 6087 8
原创 Linux那些事儿之我是UHCI(14)一个函数引发的故事(五)
接着走,661行,configure_hc,来自drivers/usb/host/uhci-hcd.c, 175 /* 176 * Store the basic register settings needed by the controller. 177 */ 178 static void configure_hc(struct uhci_hcd
2007-11-01 21:42:00 2919
原创 Linux那些事儿 之 戏说USB(38)接口的驱动
从上节的上节我们已经知道,usb_generic_driver在自己的生命线里,以一己之力将设备的各个接口送给了linux的设备模型,让usb总线的match函数,也就是usb_device_match,在自己的那条驱动链表里为它们寻找一个合适的接口驱动程序。现在让咱们轻声的问一句,这些接口驱动都从哪里来?()这就要说到每个玩儿linux的人都会知道的那几个著名的命令insmod,modpro
2007-11-01 00:10:00 6723 3
Linux那些事儿之我是USB Core(v1.0)
2007-11-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人