排序:
默认
按更新时间
按访问量

《Linux Pocket Guide 2e》中文版

前段时间和朋友翻译了Linux Pocket Guide的第二版,这本书并不涉及任何kernel的内容,不过对于linux新手来说,放在手边当参考书还是蛮好的。:) 下面是译者序: 昨天参加一个careertalk的活动,有邀请几位嘉宾做一些有关职业规划的讲座,其中一位前辈着重强调了Min...

2013-04-24 20:27:05

阅读数:17228

评论数:18

===博客导读===

 我是U盘 说的是2.6.10的内核我是Sysfs 说的是2.6.10的内核戏说USB 说的是2.6.22的内核我是Hub/UHCI/EHCI 说的是2.6.22.1的内核===============================================================...

2007-10-02 22:51:00

阅读数:20037

评论数:57

Linux那些事儿 之 ext4文件系统(0) 引子

曾经以为人生就这样了,浮躁的心拒绝再看代码。然而来到美国两年之后,我于本月初去了一趟拉斯维加斯,发现在那儿找个美国小姐要八百美金,而且还不是包夜。当那个金发美女都已经走进我的房间,我却因为价钱太贵承受不起而决定取消的时候,我觉得我的人生真是太失败了。那晚,看她出去之后,我内心一阵郁闷,于是打开电脑...

2012-08-25 13:47:53

阅读数:32463

评论数:36

找工作中……

又是一个离开的季节,挥一挥衣袖不带走一片云彩,呵呵,谁有合适的机会可以推荐下,先谢过了 地址:上海 msn:ilttv@hotmail.com Email:ilttv.cn@gmail.com 1. 对Linux内核与驱动开发有比较深的理解,并有多年的实践经验,著有《Lin...

2012-05-07 21:50:55

阅读数:1653

评论数:3

《Linux那些事儿之我是USB》我是U盘(37)迷雾重重的批量传输(六)

usb_stor_bulk_transfer_sglist()函数有一定的“蛊惑性”,我们前面说过,之所以采用sglist,就是为了提高传输效率。我们更知道,sg的目的就是让一堆不连续的buffers在一次DMA操作都传输出去。其实在USB的故事中,事情并非如此。不过如果你对USB Core里边的...

2012-05-07 13:09:04

阅读数:13659

评论数:1

《Linux那些事儿之我是USB》第二版 前言

从开始写Linux那些事儿系列文字开始,到如今已有四年多了,而从整理出版第一版到现在也已经一载有余了。期间不断有认识或不认识的朋友问我,怎么会想起写这么多如此可爱的文字,我的回答都是:娱乐自己,娱乐大家而已! 或许,大家早已经默认技术本是一个沉重或者说枯燥的话题,我们无法用一种娱乐的心态去看待它...

2012-04-15 19:23:14

阅读数:14978

评论数:7

《Linux那些事儿之我是USB》我是U盘(36)迷雾重重的批量传输(五)

在讲数据传输阶段之前,先解决刚才的历史遗留问题。usb_stor_bulk_transfer_buf()中,406行,有一个很有趣的函数interpret_urb_result()被调用。这个函数同样来自drivers/usb/storage/transport.c中: 265 static...

2012-03-08 22:09:34

阅读数:13900

评论数:1

《Linux那些事儿之我是USB》我是U盘(35)迷雾重重的批量传输(四)

有时候我也被这个问题所困扰,我不知道是我不明白,还是这世界变化太快。连Linux中都引入了过期这么一个概念。设置一个时间,如果时间到了该做的事情还没有做完,那么某些事情就会发生。 比如需要烤蛋糕,现在是8点30,而我们要烤45分钟,所以希望闹钟9点一刻响,当时间到了,闹钟就如期待的一样,响个不停...

2012-01-05 23:16:21

阅读数:14484

评论数:6

《Linux那些事儿之我是USB》我是U盘(34)迷雾重重的批量传输(三)

在usb_stor_Bulk_transport()中,这个函数中调用的第一个最重要的函数,那就是usb_stor_bulk_transfer_buf()。仍然是来自drivers/usb/stroage/transport.c: 391 int usb_stor_bulk_transfer...

2011-12-26 19:58:11

阅读数:12878

评论数:3

《Linux那些事儿之我是USB》我是U盘(33)迷雾重重的批量传输(二)

其实故事已经讲了很久,但如果你觉得到这里你已经把故事都看明白了,那么你错了。不仅仅是错了。不信,我们就继续看,先看512行,us->transport(),这个函数指针同样是在storage_probe时被赋值,对于U盘,它遵守的是Bulk-Only协议,因此us->transport...

2011-12-15 22:15:35

阅读数:11350

评论数:3

《Linux那些事儿之我是USB》我是U盘(32)迷雾重重的批量传输(一)

374行,us->proto_handler()其实是一个函数指针,知道它指向什么吗?我们早在storage_probe()中,确切地说,在get_protocol()就赋了值,当时只知道是get protocol,却不知道究竟干什么用,现在该用上了,一个指针要是没什么用人家才不会为它赋值呢...

2011-12-06 21:56:32

阅读数:13577

评论数:3

《Linux那些事儿之我是USB》我是U盘(31)SCSI命令之我型我秀

usb_stor_control_thread()基本讲完了,但是其中下面这几行,正是高潮中的高潮。所谓的批量传输,所谓的Bulk-Only协议。正是在这里体现出来的。 371           /* we've got a command, let's do it! */ 372     ...

2011-12-01 22:49:50

阅读数:13764

评论数:2

《Linux那些事儿之我是USB》我是U盘(30)彼岸花的传说(The End)

解决了这个INQUIRY的问题,我们就可以继续往下走了,372行,这就是真正的批量传输的地方,proto_handler()就是正儿八经的处理SCSI命令的函数指针。而usb_stor_control_thread之前的所有代码就是为了判断是不是有必要调用函数proto_handler(),比如超...

2011-11-29 20:00:36

阅读数:10420

评论数:0

《Linux那些事儿之我是USB》我是U盘(29)彼岸花的传说(八)

对于use_sg为0的情况,我们接下来再看168行,offset是函数调用传递进来的参数,注释里说得很清楚,就是用来标志偏移量的,每次复制几个字节它就增加几个字节,最大它也不能超过request_bufflen,这是显然的。usb_stor_access_xfer_buf()这个函数所做的事情就是...

2011-11-24 23:24:11

阅读数:10599

评论数:1

《Linux那些事儿之我是USB》我是U盘(28)彼岸花的传说(七)

很显然,我们是把为INQUIRY命令准备的数据保存到了我们自己定义的一个结构体中,即structdata_ptr[36],但是我们是为了回应一个SCSI命令,最终需要知道答案的是SCSI核心层。正是它们传递了一个scsi_cmnd结构体下来,即srb。struct scsi_cmnd中有两个成员,...

2011-11-21 18:50:33

阅读数:10528

评论数:0

《Linux那些事儿之我是USB》我是U盘(27)彼岸花的传说(六)

我们继续接着上一节往下看。fill_inquiry_response(),这个函数来自drivers/usb/storage/usb.c中。 266 void fill_inquiry_response(struct us_data *us,unsigned char *data, 267...

2011-11-13 22:15:17

阅读数:12963

评论数:5

《Linux那些事儿之我是USB》我是U盘(26)彼岸花的传说(五)

下面讲一下usb_stor_control_thread()函数。唤醒它的是来自queuecommand的up(&(us->sema)),us->srb被赋值为srb,而srb是来自SCSI核心层在调用queuecommand时候传递进来的参数。聚焦usb_stor_contr...

2011-11-10 21:09:52

阅读数:10508

评论数:0

《Linux那些事儿之我是USB》我是U盘(25)彼岸花的传说(四)

我们刚刚跟着storage_probe()几乎完整地走了一遍,貌似一切都该结束了,可是你不觉得你到目前为止还根本没有看明白设备究竟怎么工作的吗?U盘,不仅仅是USB设备,还是“盘”,它还需遵守USB Mass Storage协议,以及Transparent SCSI规范。从驱动程序的角度来看,它和...

2011-10-30 18:51:09

阅读数:15066

评论数:8

《Linux那些事儿之我是USB》我是U盘(24)彼岸花的传说(三)

前面已经说了,回到usb_stor_acquire_resources()函数中,返回了0。于是咱们终于回到了storage_probe()函数中来。 1008行,scsi_add_host()函数被执行,之前申请的us->host被作为参数传递给它,同时,intf->dev也被传递...

2011-10-26 20:38:21

阅读数:10361

评论数:0

《Linux那些事儿之我是USB》我是U盘(23)彼岸花的传说(二)

如果让大家投票的话,usb_stor_control_thread()这个函数中的代码无疑是整个模块中最为精华的代码。我们只需要它中间306行的for(;;)就知道,这是一个死循环,即使别的代码都执行完了,即使别的函数都退出了,这个函数也仍然像永不消逝的电波一般,经典常驻。显然,只有死循环才能代表...

2011-10-25 18:12:33

阅读数:10266

评论数:1

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