07.06.2013 Views

Scsi - Index of

Scsi - Index of

Scsi - Index of

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

比如说,复旦大学,有一个主校区,也可以说是教学区,(当然也包括一些实验室),上课什么的都得去教学区,把<br />

教学区看作主机,那么与其相对的是,另外有很多学生宿舍楼,宿舍楼多了,就给每个楼编上号,比如1 号楼,2<br />

号楼,...,36 号楼,..,每幢楼算一个设备,比如说你在淘宝网上买了一套阿玛尼外套(当然,肯定是假的,也就<br />

一两百的那种),你让人家给你快递过来,人家问你你住哪?你说你住复旦大学,但如果你只说你在复旦大学,<br />

那么送快递那哥们可能先得赶到复旦大学正门,或者学生宿舍区的正门,然后人家肯定就得问,你是哪幢楼哪<br />

间房?比如你说你是36 号楼201,好,那么像201 这么一个数字呢,就对应端点号,最终那套外套要到达的就<br />

是端点201,而不仅仅是36 号楼,对吧,假如人家要是送到36 号楼下就把外套给扔地上了你肯定得跟他急.<br />

那么在这个例子里,复旦主校区是主机,每幢宿舍楼算一个设备,你住的那间宿舍就算端点.那么pipe<br />

呢?pipe 很难与现实中的某一实物对应,不能说她是复旦正门通往宿舍的某条路,而应该按别的方式理解.<br />

她<br />

包含很多东西,你可以把她比作快递的货物上面贴得那张标签,比如她上面写了收货人的地址,包括多少号楼<br />

多少号房,在usb 里面,就是设备号和端点号,知道了这两个号,货物就能确定它的目的地,而usb 主机就能<br />

知<br />

道和她通信的是哪个端点.而pipe 除了包含着两个号以外,还包含其它一些信息,比如她包含了通信的方向,<br />

也就是说,你能从那张标签上得知36 号楼201 这个是收件人呢还是寄件人,虽然现实中不需要写明,因为<br />

快<br />

递员肯定知道你是收件人,他没事才不会和寄件人联系呢.再比如,pipe 里还包含了pipe的类型,比如你快<br />

递<br />

是从深圳递过来,那么怎么递就得看了,快递公司肯定提供不同类型的服务,有的快有的慢,有的可能还有保<br />

险什么的,看你出多少钱,让你选择不同的服务类型,同样pipe 也如此,因为usb 设备的端点有不同的类型,<br />

所以pipe 里就包含了一个字段来记录这一点,这个字段称为pipe type.好,让我们来看看实际的pipe 吧.<br />

来看这些宏,头一个闪亮登场的是usb_sndctrlpipe,定义于include/linux/usb.h 中,咱们先把这一堆冬<br />

冬相关的代码给列出来.<br />

1104 static inline unsigned int __create_pipe(struct usb_device *dev, unsigned int<br />

endpoint)<br />

1105 {<br />

1106 return (dev->devnum

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

Saved successfully!

Ooh no, something went wrong!