亚洲欧美第一页_禁久久精品乱码_粉嫩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 transferred 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一区二区三区免费野_久草精品视频
亚洲18女电影在线观看| 久久精品网站免费观看| 欧美r级在线观看| 久久久99久久| 亚洲一区二区在线免费观看视频 | 成人美女在线观看| 94色蜜桃网一区二区三区| 色女孩综合影院| 精品国产一区二区亚洲人成毛片 | 色综合久久88色综合天天6| 欧美日韩亚洲综合一区| 久久人人97超碰com| 一区二区三区小说| 国产在线乱码一区二区三区| 色综合久久久久综合99| 日韩精品专区在线影院观看| 亚洲视频小说图片| 九九精品视频在线看| 色综合久久综合| 精品国产伦一区二区三区免费 | 9191国产精品| 国产精品久久久久久一区二区三区| 亚洲福利一区二区| 国产suv精品一区二区三区| 7777精品伊人久久久大香线蕉的| 欧美经典一区二区三区| 青青草国产精品97视觉盛宴| 91年精品国产| 久久综合色播五月| 婷婷中文字幕一区三区| 99久精品国产| 国产日韩欧美一区二区三区乱码| 亚洲va韩国va欧美va| 不卡的av电影| 久久精品夜夜夜夜久久| 日本欧美肥老太交大片| 欧美四级电影在线观看| 国产精品嫩草久久久久| 九九热在线视频观看这里只有精品| 日本高清无吗v一区| 国产精品无遮挡| 精品一区二区三区在线视频| 欧美在线综合视频| 国产精品视频线看| 国产一区二区伦理片| 欧美一区午夜视频在线观看| 亚洲精品成人精品456| 高清shemale亚洲人妖| 精品人在线二区三区| 日韩电影在线一区二区| 欧美日韩国产天堂| 一级特黄大欧美久久久| 91麻豆精东视频| 国产精品私人影院| 国产成人综合自拍| 精品久久久影院| 喷水一区二区三区| 欧美疯狂做受xxxx富婆| 一区二区三区日韩精品| 91原创在线视频| 亚洲欧洲成人自拍| 国产成人免费网站| 欧美激情一区二区三区蜜桃视频 | 中文字幕av一区二区三区高| 狠狠色丁香久久婷婷综| 日韩免费看的电影| 亚洲mv大片欧洲mv大片精品| 色哟哟国产精品免费观看| 《视频一区视频二区| 成人av在线一区二区| 中文字幕日韩精品一区 | 一区二区三区高清不卡| 99久久国产综合精品色伊| 国产精品麻豆网站| 一本大道久久a久久综合婷婷| 中文字幕一区二区三区av| 成人高清视频在线| 亚洲三级理论片| 色哦色哦哦色天天综合| 亚洲一二三区不卡| 91精品国产综合久久久蜜臀图片 | 日韩一区二区三区电影| 日本少妇一区二区| 欧美精品一区二区三区在线| 国产精品综合二区| 国产精品久久久久久一区二区三区 | 欧美日韩高清在线| 美女看a上一区| 久久婷婷一区二区三区| 成人一级黄色片| 亚洲精品乱码久久久久久| 91成人免费电影| 图片区小说区国产精品视频| 日韩欧美国产综合| 国产一区二区视频在线播放| 国产精品视频免费| 在线精品国精品国产尤物884a| 亚洲 欧美综合在线网络| 日韩一区国产二区欧美三区| 韩国成人在线视频| 国产精品不卡一区| 欧美日韩一区二区三区四区 | 国产亚洲欧美日韩日本| 99精品在线观看视频| 视频在线观看91| 欧美不卡一区二区三区| 成人性生交大片免费看在线播放| 亚洲最快最全在线视频| 欧美大片一区二区| 99久久精品免费| 奇米精品一区二区三区四区| 国产欧美日本一区视频| 色婷婷久久99综合精品jk白丝| 性久久久久久久久久久久 | 不卡一区二区在线| 亚洲国产精品麻豆| 国产日韩视频一区二区三区| 色婷婷国产精品久久包臀 | 国产精品天美传媒沈樵| 欧美日韩国产一区| 成人午夜私人影院| 琪琪一区二区三区| 国产精品天干天干在线综合| 91精品久久久久久久久99蜜臂| 国产传媒欧美日韩成人| 五月婷婷综合激情| 国产精品亲子伦对白| 欧美日韩成人一区| 国产91在线看| 日韩—二三区免费观看av| 亚洲国产精品高清| 欧美一区二区三区思思人| 97久久久精品综合88久久| 久久国产婷婷国产香蕉| 亚洲精品视频在线观看免费| 久久一区二区三区国产精品| 欧美三级日韩三级国产三级| 国产激情视频一区二区三区欧美| 亚洲小说欧美激情另类| 中国色在线观看另类| 欧美一区在线视频| 在线亚洲精品福利网址导航| 国产九色sp调教91| 男女男精品视频网| 一区二区日韩av| 国产精品毛片高清在线完整版 | 成人综合在线观看| 视频一区二区欧美| 亚洲欧美日韩系列| 国产日韩欧美精品综合| 日韩午夜三级在线| 91久久精品一区二区三区| 国产精品一区二区不卡| 青青草97国产精品免费观看 | 日韩精品一区在线观看| 欧美午夜精品久久久| 91小视频免费观看| 国产丶欧美丶日本不卡视频| 黑人巨大精品欧美一区| 五月激情综合婷婷| 亚洲一二三四在线观看| 中文字幕中文字幕中文字幕亚洲无线| 日韩一区二区在线观看视频 | 毛片av一区二区| 五月天精品一区二区三区| 一区二区三区在线视频观看| 综合色中文字幕| 国产精品免费丝袜| 国产午夜亚洲精品理论片色戒 | 国产精品一二三四区| 蜜臂av日日欢夜夜爽一区| 视频一区免费在线观看| 五月天久久比比资源色| 亚洲成av人综合在线观看| 亚洲综合无码一区二区| 怡红院av一区二区三区| 一区二区三区不卡视频| 亚洲乱码日产精品bd| 亚洲品质自拍视频| 中文字幕亚洲精品在线观看| 国产精品国产馆在线真实露脸| 国产欧美一区二区精品性色| 国产亚洲短视频| 国产三级三级三级精品8ⅰ区| 久久亚洲私人国产精品va媚药| 日韩欧美一区电影| 日韩欧美国产电影| 欧美电视剧免费全集观看| 日韩一区二区在线看| 欧美成人video| 久久久青草青青国产亚洲免观| 26uuu精品一区二区在线观看| 欧美精品一区二区三区高清aⅴ| 精品裸体舞一区二区三区| 精品成人一区二区三区| 久久久不卡网国产精品二区| 国产精品你懂的在线| 一区二区不卡在线播放| 视频在线观看一区二区三区| 韩国精品免费视频|