亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? uhci.txt

?? 講述linux的初始化過程
?? TXT
字號:
Specification and Internals for the New UHCI Driver (Whitepaper...)	brought to you by	Georg Acher, acher@in.tum.de (executive slave) (base guitar)	Deti Fliegl, deti@fliegl.de (executive slave) (lead voice)	Thomas Sailer, sailer@ife.ee.ethz.ch (chief consultant) (cheer leader) 	$Id: README.uhci,v 1.1 1999/12/14 14:03:02 fliegl Exp $This document and the new uhci sources can be found on		http://hotswap.in.tum.de/usb1. General issues1.1 Why a new UHCI driver, we already have one?!?Correct, but its internal structure got more and more mixed up by the (stillongoing) efforts to get isochronous transfers (ISO) to work.Since there is an increasing need for reliable ISO-transfers (especially for USB-audio needed by TS and for a DAB-USB-Receiver build by GA and DF), this state was a bit unsatisfying in our opinion, so we've decided (basedon knowledge and experiences with the old UHCI driver) to start from scratch with a new approach, much simpler but at the same time more powerful.It is inspired by the way Win98/Win2000 handles USB requests via URBs,but it's definitely 100% free of MS-code and doesn't crash while unplugging an used ISO-device like Win98 ;-)Some code for HW setup and root hub management was taken from the original UHCI driver, but heavily modified to fit into the new code.The invention of the basic concept, and major coding were completed in two days (and nights) on the 16th and 17th of October 1999, now known as thegreat USB-October-Revolution started by GA, DF, and TS ;-)Since the concept is in no way UHCI dependent, we hope that it will also be transfered to the OHCI-driver, so both drivers share a common API.1.2. Advantages and disadvantages+ All USB transfer types work now!+ Asynchronous operation+ Simple, but powerful interface (only two calls for start and cancel)+ Easy migration to the new API, simplified by a compatibility API+ Simple usage of ISO transfers+ Automatic linking of requests+ ISO transfers allow variable length for each frame and striping+ No CPU dependent and non-portable atomic memory access, no asm()-inlines+ Tested on x86 and Alpha- Rewriting for ISO transfers needed1.3. Is there some compatibility to the old API?Yes, but only for control, bulk and interrupt transfers. We've implemented some wrapper calls for these transfer types. The usbcore works fine with these wrappers. For ISO there's no compatibility, because the old ISO-API and its semantics were unnecessary complicated in our opinion.1.4. What's really working?As said above, CTRL and BULK already work fine even with the wrappers,so legacy code wouldn't notice the change.Regarding to Thomas, ISO transfers now run stable with USB audio.INT transfers (e.g. mouse driver) work fine, too.1.5. Are there any bugs?No ;-)Hm...Well, of course this implementation needs extensive testing on all availablehardware, but we believe that any fixes shouldn't harm the overall concept.1.6. What should be done next?A large part of the request handling seems to be identical for UHCI and OHCI, so it would be a good idea to extract the common parts and have only the HW specific stuff in uhci.c. Furthermore, all other USB device driversshould need URBification, if they use isochronous or interrupt transfers.One thing missing in the current implementation (and the old UHCI driver) is fair queueing for BULK transfers. Since this would need (in principle) the alteration of already constructed TD chains (to switch from depth to breadth execution), another way has to be found. Maybe some simple heuristics work with the same effect.---------------------------------------------------------------------------2. Internal structure and mechanismsTo get quickly familiar with the internal structures, here's a shortdescription how the new UHCI driver works. However, the ultimate source oftruth is only uhci.c!2.1. Descriptor structure (QHs and TDs)During initialization, the following skeleton is allocated in init_skel:	 framespecific           |           common chain     framelist[][  0 ]-----> TD --> TD -------\[  1 ]-----> TD --> TD --------> TD ----> QH -------> QH -------> QH ---> NULL  ...        TD --> TD -------/[1023]-----> TD --> TD ------/	     	     ^^     ^^           ^^       ^^          ^^          ^^   1024 TDs for   7 TDs for    1 TD for   Start of    Start of    End Chain	    ISO  INT (2-128ms) 1ms-INT    CTRL Chain  BULK ChainFor each CTRL or BULK transfer a new QH is allocated and the containing datatransfers are appended as (vertical) TDs. After building the whole QH with itsdangling TDs, the QH is inserted before the BULK Chain QH (for CTRL) orbefore the End Chain QH (for BULK). Since only the QH->next pointers areaffected, no atomic memory operation is required. The three QHs in thecommon chain are never equipped with TDs!For ISO or INT, the TD for each frame is simply inserted into the appropriateISO/INT-TD-chain for the desired frame. The 7 skeleton INT-TDs are scatteredamong the 1024 frames similar to the old UHCI driver.For CTRL/BULK/ISO, the last TD in the transfer has the IOC-bit set. For INT,every TD (there is only one...) has the IOC-bit set.Besides the data for the UHCI controller (2 or 4 32bit words), the descriptorsare double-linked through the .vertical and .horizontal elements in the SW data of the descriptor (using the double-linked list structures and operations), but SW-linking occurs only in closed domains, i.e. for each ofthe 1024 ISO-chains and the 8 INT-chains there is a closed cycle. This simplifies all insertions and unlinking operations and avoids costly bus_to_virt()-calls.2.2. URB structure and linking to QH/TDsDuring assembly of the QH and TDs of the requested action, these descriptorsare stored in urb->urb_list, so the allocated QH/TD descriptors are bound tothis URB.If the assembly was successful and the descriptors were added to the HW chain,the corresponding URB is inserted into a global URB list for this controller.This list stores all pending URBs.2.3. Interrupt processingSince UHCI provides no means to directly detect completed transactions, thefollowing is done in each UHCI interrupt (uhci_interrupt()):For each URB in the pending queue (process_urb()), the ACTIVE-flag of the associated TDs are processed (depending on the transfer type process_{transfer|interrupt|iso}()). If the TDs are not active anymore, they indicate the completion of the transaction and the status is calculated. Inactive QH/TDs are removed from the HW chain (since the host controlleralready removed the TDs from the QH, no atomic access is needed) and eventually the URB is marked as completed (OK or errors) and removed from the pending queue. Then the next linked URB is submitted. After (or immediately before) that, the completion handler is called.2.4. Unlinking URBsFirst, all QH/TDs stored in the URB are unlinked from the HW chain. To ensure that the host controller really left a vertical TD chain, we wait for one frame. After that, the TDs are physically destroyed.2.5. URB linking and the consequencesSince URBs can be linked and the corresponding submit_urb is called inthe UHCI-interrupt, all work associated with URB/QH/TD assembly has to beinterrupt save. This forces kmalloc to use GFP_ATOMIC in the interrupt.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人黄色网址在线观看| 欧美日韩三级一区二区| 中文在线免费一区三区高中清不卡| 另类小说一区二区三区| 欧美二区三区91| 天堂成人免费av电影一区| 欧美日韩国产综合一区二区三区 | 极品尤物av久久免费看| 欧美一级一区二区| 青青青爽久久午夜综合久久午夜| 欧美日本一区二区三区| 日韩制服丝袜av| 欧美一区二区在线视频| 蜜桃免费网站一区二区三区| 日韩精品在线看片z| 久久国产生活片100| 精品福利一区二区三区免费视频| 精品一区二区三区在线播放| 精品国产人成亚洲区| 人人精品人人爱| 亚洲成人免费在线| 精品国精品国产尤物美女| 色域天天综合网| 日本黄色一区二区| 亚洲乱码国产乱码精品精可以看| 91丨国产丨九色丨pron| 亚洲欧美电影院| 欧洲激情一区二区| 日本欧美一区二区在线观看| 欧美成人艳星乳罩| 国产精品资源在线| 国产精品久久久久久久浪潮网站| 97久久精品人人爽人人爽蜜臀| 亚洲男人天堂av| 欧美三级三级三级| 久久国产人妖系列| 久久久久久久综合| 99在线热播精品免费| 一区二区在线观看av| 欧美精品亚洲一区二区在线播放| 久久成人精品无人区| 国产亚洲成年网址在线观看| av不卡在线观看| 亚洲成人综合在线| 精品福利av导航| 99国产精品久久久久久久久久久| 亚洲综合一区二区| 日韩免费一区二区| 成人毛片视频在线观看| 亚洲一区二区在线视频| 日韩欧美国产成人一区二区| 国产成人精品影视| 亚洲国产视频一区二区| 欧美一区二区三区婷婷月色| 国产精品自拍一区| 亚洲美女偷拍久久| 精品剧情在线观看| 亚洲免费看黄网站| 精品一区二区三区不卡| 国产伦理精品不卡| 亚洲女与黑人做爰| 欧美一区二区在线免费观看| 国产福利精品一区二区| 亚洲二区在线观看| 久久综合九色综合欧美亚洲| 色综合色综合色综合色综合色综合 | 7777精品久久久大香线蕉| 国产麻豆视频一区| 洋洋成人永久网站入口| 精品国产伦理网| 色8久久精品久久久久久蜜| 久久国产精品露脸对白| 亚洲精品福利视频网站| 精品成a人在线观看| 欧美自拍丝袜亚洲| 国产福利91精品| 爽好久久久欧美精品| 亚洲欧洲性图库| 精品少妇一区二区| 欧洲国产伦久久久久久久| 国产精品一区久久久久| 水野朝阳av一区二区三区| 国产精品国产三级国产aⅴ原创 | 国产精品污网站| 日韩三级在线免费观看| 在线观看亚洲a| 成人亚洲精品久久久久软件| 美女mm1313爽爽久久久蜜臀| 有码一区二区三区| 国产欧美视频一区二区| 欧美一区二区三区小说| 91黄色免费看| 成人污视频在线观看| 久久精品国产澳门| 婷婷综合久久一区二区三区| 亚洲视频综合在线| 久久精品夜色噜噜亚洲aⅴ| 91麻豆精品国产91久久久久| 日本高清成人免费播放| 大桥未久av一区二区三区中文| 久久精品国产99国产| 偷窥国产亚洲免费视频| 一区二区三区四区国产精品| 国产精品热久久久久夜色精品三区| 欧美tk—视频vk| 91精品在线免费观看| 欧美日韩精品一二三区| 91美女福利视频| k8久久久一区二区三区| 国产精品影视在线观看| 久久国产精品免费| 热久久久久久久| 图片区日韩欧美亚洲| 亚洲国产成人精品视频| 一区二区三区中文免费| 亚洲天堂精品在线观看| 中文字幕日韩一区二区| 国产欧美精品区一区二区三区| 欧美精品一区男女天堂| 日韩欧美一区在线| 日韩欧美一级精品久久| 日韩一区和二区| 日韩欧美国产综合| 日韩西西人体444www| 制服丝袜国产精品| 欧美高清性hdvideosex| 欧美日韩国产精品成人| 在线看不卡av| 欧美日韩精品欧美日韩精品| 欧美日韩午夜影院| 欧美日本韩国一区| 欧美日高清视频| 欧美久久久久久蜜桃| 欧美一区二区在线免费播放| 宅男在线国产精品| 日韩三级伦理片妻子的秘密按摩| 欧美一区二区播放| 日韩欧美你懂的| 久久综合九色综合97婷婷| 久久嫩草精品久久久精品一| 久久久久久久久免费| 国产农村妇女精品| 国产精品二区一区二区aⅴ污介绍| 中文字幕五月欧美| 亚洲影视在线观看| 五月婷婷激情综合| 麻豆成人久久精品二区三区红| 精品一区中文字幕| 国产99一区视频免费| 99视频超级精品| 色八戒一区二区三区| 欧美网站一区二区| 欧美精品久久久久久久多人混战 | 美女视频一区二区三区| 韩国av一区二区三区四区| 国产成人亚洲综合a∨猫咪 | 国产一区美女在线| 风流少妇一区二区| 91香蕉视频污| 欧美片网站yy| 亚洲精品一区二区三区精华液| 国产精品久久久久婷婷二区次| 欧美激情中文字幕一区二区| 国产视频911| 欧美一区二区日韩一区二区| 精品在线一区二区三区| 一区二区三区电影在线播| 性久久久久久久久久久久| 老色鬼精品视频在线观看播放| 国产一区二区在线观看免费| www.日本不卡| 欧美日本不卡视频| 久久久亚洲午夜电影| 亚洲激情av在线| 蜜臀国产一区二区三区在线播放 | 亚洲v中文字幕| 精品在线免费视频| 99久久久国产精品免费蜜臀| 欧美日韩精品福利| 久久九九影视网| 一区二区三区加勒比av| 久久成人久久爱| 色综合网色综合| 欧美大片一区二区三区| 国产精品不卡一区二区三区| 天使萌一区二区三区免费观看| 国产精品 日产精品 欧美精品| 在线观看一区二区精品视频| xfplay精品久久| 一区二区成人在线视频| 国产麻豆精品95视频| 欧美日韩一区二区三区在线| 国产午夜精品一区二区三区四区 | 亚洲午夜在线观看视频在线| 国产乱一区二区| 精品视频免费在线| 国产欧美精品在线观看| 亚洲一区二区三区在线播放| 国产成人综合在线观看| 欧美精品丝袜中出|