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.

两个函数中需要判断它,一个是usb_stor_msg_common(),一个是usb_stor_bulk_transfer_sglist().<br />

其实,仔细回顾一下这两个函数,你就不难发现,在usb_stor_msg_common()中,其实我们就是在提交一<br />

个urb之前先检查这个flag有没有设置,提交了之后再次检查一下,实际上就相当于是给你两次机会,因为提<br />

交了之后就相当于表白了之后,但是双方可能还没有发生什么实质性的故事,在这一刻如果你意识到这是一<br />

段没有结果的恋情,你还可以选择放弃.但是过了这第二次判断,那么结果就将是生米煮成熟饭了.而在<br />

usb_stor_bulk_transfer_sglist()中,其实道理是一样的,就是把urb 的概念换成sg,仅此而已.<br />

Ok,到现在我们可以来看最后一个重量级的flag 了.那就是US_FLIDX_DISCONNECTING.而将带我们<br />

走入我们整个故事的最后一个重量级函数, storage_disconnect().而这个函数也将宣告我们整个故事的<br />

结束,毕竟天下无不散的宴席,从我开始写这个故事的时候,我就知道一切都已注定,注定了开始,注定了结<br />

束.<br />

当梦醒了天晴了<br />

多情自古伤离别,更那堪,冷落清秋节!<br />

今宵酒醒何处?<br />

杨柳岸,晓风残月.<br />

此去经年,应是良辰好景虚设.<br />

便纵有,千种风情,更与何人说?<br />

伴随着婉约派才子,词坛浪子柳永的这首令人肝肠寸断的,我们来到了最后一个重要的函<br />

数,storage_disconnect.<br />

usb 设备的热插拔特性注定了我们应该在设备插入的时候做一些事情,在设备拔出的时候做一些事情.主<br />

机和usb 设备的暧昧关系体现在,需要她的时候,要多缠绵有多缠绵,如胶似漆,如鱼得水.但是,有爱就有痛,<br />

有一天usb 设备必定要离开主机.对于主机来说,人生没有usb 设备并不会不同.而且,事实上,usb 的即插<br />

即<br />

用特性也让主机知道,usb 设备并不曾真的离去,他们还会再相逢.前面见面的时候调用了storage_probe<br />

来让彼此接受对方,现在就该调用storage_disconnect 函数来分手.分手也许需要分财产,而usb设备离开<br />

主机也需要处理一些后事.<br />

相比probe,disconnect 函数就简单多了,造人需要辛苦30 分钟,人流只要3 分钟,看过杨千嬅的那部>之后就知道人流并不是一件麻烦事,难怪北京的街边电线杆上墙壁上到处写着无痛人流轻松搞定的<br />

广告词. storage_disconnect()函数定义在drivers/usb/storage/usb.c 中,这个函数不长,<br />

1027 /* Handle a disconnect event from the USB core */<br />

1028 static void storage_disconnect(struct usb_interface *intf)<br />

1029 {<br />

1030 struct us_data *us = usb_get_intfdata(intf);<br />

1031<br />

1032 US_DEBUGP("storage_disconnect() called\n");<br />

1033<br />

1034 /* Prevent new USB transfers, stop the current command, and<br />

1035 * interrupt a device-reset delay */<br />

194<br />

1036 set_bit(US_FLIDX_DISCONNECTING, &us->flags);<br />

1037 usb_stor_stop_transport(us);<br />

1038 wake_up(&us->dev_reset_wait);<br />

1039

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

Saved successfully!

Ooh no, something went wrong!