07.06.2013 Views

Scsi - Index of

Scsi - Index of

Scsi - Index of

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ep 为3,那么就是得到了1000,然后取反,得到0111,(当然高位还有更多个1),然后(dev)->toggle[out]<br />

和0111 相与,这就是使得toggle[out]的第3 位清零而其她位都不变.然后咱们这里bit 传递进来的是0,<br />

所以就不起什么作用,还是reset 成0.总之,269 行做的事情就是把指定的Endpoint 的和指定的pipe 对<br />

应的那位toggle 位给清零.)<br />

当然细心的人会看一下spec,spec 里面说了,对于使用data toggle 的endpoint,不管其halt feature<br />

是否被设置了,总之只要你调用Clear Feature,那么其data toggle 总是会被初始化为Data0).所以有人<br />

就奇怪了,既然调用Clear Feature 就已经把data toggle 位初始化为0 了,那这里为什么还要再次作一次<br />

set toggle 呢?<br />

事实上是这样的,其实这个世界上有两个toggle bits,不是两个toggle bit,是两个toggle bit_s_,单复<br />

数别看错了,其实设备里边是有一个toggle bits,而我们这里软件层次上,也定义了toggle bits,这个<br />

toggle bits 是给host 用的,设备里边的那个toggle bits 在clear feature 之后,没错,是被初始化成<br />

Data0<br />

了,但是host这边他也想记录下这么一个序列,所以写代码的哥们儿就定义了这个一个数组,而这里调用set<br />

toggle 的目的无非就是想让这个数组和设备中物理上的那个toggle bits 保持同步.<br />

到这里这个函数也就结束了,返回的是这次控制传输的结果,不过我们注意到调用这个函数的上下文,并没<br />

有人会care 这个返回值,也许这里再判断返回值的意义不大了吧,本来就是在处理出错的代码中.<br />

至此, usb_stor_Bulk_max_lun 这个函数也终于要返回了.于是我们终于,终于再一次回到了<br />

usb_stor_acquire_resources 函数中,我容易吗?别说我了,歌神张学友在看到Linux 内核代码如此复杂<br />

也不得不感慨说,这代码是一张无边无际的网,轻易就将我困在网中央,我越陷越深越迷惘,路越走越远越漫<br />

长,如何我才能锁住这个函数...<br />

776 行,令us->max_lun 等于刚才usb_stor_Bulk_max_lun()的返回值.接下来,我们将看到一行具<br />

有划时代意义的代码.从此我们唱着东方红,走进新时代,这就是伟大的S-C-S-I.<br />

横空出世的 scsi<br />

世界上最遥远的距离,<br />

不是生与死,<br />

而是我就站在你面前,<br />

你却不知道我爱你.<br />

世界上最遥远的距离,<br />

不是我就站在你面前,<br />

你却不知道我爱你,<br />

而是明明知道彼此相爱,<br />

却不能在一起.<br />

世界上最遥远的距离,<br />

不是明明知道彼此相爱,<br />

却不能在一起,<br />

89<br />

而是明明无法抵挡这股想念,<br />

却还得故意装作丝毫没有把你放在心里.<br />

世界上最遥远的距离,<br />

不是明明无法抵挡这股想念,<br />

却还得故意装作丝毫没有把你放在心里,<br />

而是用自己冷默的心,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!