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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? caching_strategy.txt

?? A MP3 Player Source Code, Enjoy it!
?? TXT
字號:
Date: Fri, 11 May 2001 00:35:14 -0700From: paul@pjrc.comTo: *************Subject: Re: Yeah yeah... more questions... :-)I'll probably copy portions of this explaination into some of the docs...>I am really getting frustrated with this code. I hate to be a wussy but are>you planning on porting the whole drivers file to C? I have been >staring at it for at least 3-4 hours today and I am really having a tough >time figuring it out. I looked at the file_cache routine to check how you Those routines will remain in assembly language, and there's reallyno need to do much with them, since they're already working.>were doing that.  I would really like to help out with the file caching >problem but other than advice I am not going to be much good to you. I >can't reverse engineer Assembler code. Rather than wasting your time >explaining stuff to me, I would rather be useful some other way. I would What I meant by a "caching strategy" has nothing to do with thecode that's inside file_cache and file_cache_work.  The cachingstrategy involves how and when the main program decides to callthese functions and what parameters are passed to file_cache.The driver API has been carefully designed to allow the mainprogram to have a lot of control over what gets cached and when.Please take a look at this web page:http://www.pjrc.com/tech/mp3/library.htmlBegin reading the section "File/Directory Reading".  The file_cache,file_cache_work, file_seek, and other functions are intended to givethe application complete control over what data gets cached... so thecaching strategy is completely under the control of the main program.Those functions provide you with a relatively high level of abstraction,so you can think of files as streams of bytes, more or less like usingthe functions in a standard C library.  My goal was to make the APIsimilar to using standard C library functions, but to give much morecontrol over the disk activity, which is what file_cache andfile_cache_work do for you.  Remember, the "read" functions don'tever cause disk activity... they either find the data in the cacheor return an error.  The drivers manage the cached sectors and clustersfor you, more or less like an operating system would do.Very briefly, after you've opened a file, you call file_cache toset up a transfer of bytes.  file_cache only sets up some parametersinside a structure associated with that file (yes, each of the 64possible open files by have a caching operation in progress).  Toactually cause something to be done towards to ultimate goal ofgetting the data read into the cache, you call file_cache_work.  Itwill return one of three things: still working, complete, or ranout of memory.  file_cache_work doesn't even really do the I/Ooperation... it writes into a request queue for the IDE driver andreturns back to the main program as quickly as possible.  As youknow, there's a lot of really complicated things these functionsdo... the idea is that you really don't need to worry about howthey accomplish their job, just like how most C programmers reallydon't dig inside fprintf, fgets, fopen, etc.Today there is a function called do_ide_loop(), which willeventually go away.  Calling this is what actually causes thedisk operations to take place.  Later all disk operations willbe interrupt driven and do_ide_loop will vanish.>really like to help out but unless there is a lot more commenting as to >what's going on or it's in C I am going to be pretty useless to you. Is >there something that I can work on that hasn't been implemented yet that I >can do on the side and you can include later? Or even write C code with The truth is you're a bit early in the game, as there's still a fewproblems in the SDCC-AS31 glue code, but I'm rapidly working thoseout.  Most of the functions work as documented.  There's also a coupleimportant functions that are still missing, the most important onebeing file_uncache, which will allow you to tell the drivers to freea portion of the file.Still, now is a good time to start coming up with a strategy.  Themain program will almost certainly get re-arranged quite a bit.Today it's very simple (and not very smart).  You can see there'sfive states, and the flow is always:S_READ_DIR -> S_CACHING -> S_PLAYING_AND_CACHING ->	S_PLAYING -> S_FINISH_PLAYINGThe S_FINISH_PLAYING state is when the program has sent all of thefile to the drivers for playback.  There is considerable bufferingin the playback driver, so the program has to wait until the driverhas actually played all the buffered data before closing the file.Now, as an example of improving the caching strategy, it wouldmake a lot of sense to call file_uncache on the part of file that'snot being buffered (hmm... is it possible to figure out what partisn't in the playback driver's buffer?)  After the call to file_uncache(damn, I really need to get that written), then there will be lotsof free memory again, so the drive could be started (ide_wakeup) andthe next file could be opened and some of it could be cached.In general, calling file_cache_work end up resulting in calls tomalloc_blocks, and calling file_close calls free_blocks for all theblocks that were allocated.  Someday soon file_uncache will exist,so you can cause free_blocks to be called on only a portion of thefile that you don't need anymore (and you need memory freed up).There's a balancing act between turning the drive on too soon anddraining batteries needlessly, and turning it on too late and nothaving data in memory to play.  This will ultimately require anAPI to some timer drivers.  It's on my to-do list, after fixingbugs and writing file_uncache.This is just one simple thing to do... you can have up to 64 filesopen at once (directories count as files).  You could open up andcache perhaps the first 100k of a few upcoming files, so when/ifthe user presses the next button, you've got some in memory andthey're just a file_seek and file_read/file_read_block away, insteadof making the user wait for the drive to spin up when they press abutton.The API is designed to give the main program complete control ofwhat portion of what files gets cached when.  Calls to file_cache_workcause small increments of the file to get loaded into the cache.It is legal to have many files open and have each one with a pendingfile_cache set of parameters established.  You get to decide when toget each one to read another chunk.  Perhaps 9 times out of 10 youcall file_cache_work for the file that you're playing right now, and1 of 10 times call it for portions upcoming files, in anticipationof the user pressing a button.>Sorry to be such a pain in the ass... Put me to work, just not something so >hard as the file cache... :o)Please please please read this web page:http://www.pjrc.com/tech/mp3/library.htmlSome parts are slightly out of date, so also refer to as31glue.hfor a list of all the API to the drivers.  Once the code is morestable, I'll update this page.  The API is still open and somemore calls will need to be added to accomplish some things, butit's important that you understand what the functions do and howto call them.  That's why I spent quite a bit of time to writethat page documenting the driver API.Paul

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美一区二区精品仙草咪| 日韩精品视频网站| 三级久久三级久久久| 国产一区二区不卡在线| 在线视频欧美区| 国产日韩欧美不卡在线| 日本中文字幕一区二区视频 | 91麻豆精品在线观看| 91精品国产福利| 一区二区三区日本| 国产v日产∨综合v精品视频| 欧美久久久一区| 亚洲欧美在线aaa| 国产精品自产自拍| 精品国产免费久久| 日韩av一二三| 欧美日韩国产一级二级| 亚洲欧美福利一区二区| 国产白丝网站精品污在线入口| 日韩亚洲欧美在线| 视频一区国产视频| 欧美日韩高清一区二区不卡| 综合久久国产九一剧情麻豆| 国产传媒久久文化传媒| 日韩欧美黄色影院| 老司机精品视频线观看86| 欧美专区日韩专区| 亚洲国产日韩一区二区| 91黄色免费网站| 亚洲精品一二三| 91视频.com| 日韩伦理av电影| 94-欧美-setu| 亚洲男人的天堂一区二区| 91色.com| 亚洲一区免费视频| 欧美三级在线播放| 热久久国产精品| 欧美tk丨vk视频| 久久99久久精品| 久久嫩草精品久久久久| 国产福利一区在线| 国产日韩视频一区二区三区| 粉嫩av一区二区三区| 中文字幕五月欧美| 91国产福利在线| 日韩av一区二区三区四区| 日韩一级欧美一级| 国产精品996| 中文字幕中文乱码欧美一区二区| 不卡的av网站| 亚洲第一福利视频在线| 91精品国产高清一区二区三区蜜臀| 日本免费在线视频不卡一不卡二| 精品免费国产二区三区| 国产成人免费视频精品含羞草妖精| 国产精品三级在线观看| 在线观看www91| 免费精品视频最新在线| 欧美国产乱子伦| 91久久人澡人人添人人爽欧美| 亚洲第一成年网| 久久亚洲捆绑美女| 99免费精品在线观看| 又紧又大又爽精品一区二区| 91精品国产免费| 国产suv精品一区二区三区| 一区二区三区四区不卡在线 | 91精品在线免费| 国产在线一区二区| 日韩理论片网站| 欧美一区二区三区免费观看视频| 国产成人啪免费观看软件| 亚洲电影在线免费观看| 久久婷婷国产综合精品青草| 色婷婷久久久亚洲一区二区三区| 日韩av在线免费观看不卡| 国产精品久久久久一区| 777a∨成人精品桃花网| thepron国产精品| 久久99国内精品| 亚洲激情自拍视频| 久久亚区不卡日本| 欧美一区三区二区| 色一区在线观看| 国产精品白丝jk白祙喷水网站| 亚洲国产精品久久久久秋霞影院 | 免费一级片91| 一区二区成人在线视频| 久久嫩草精品久久久精品一| 欧美日韩高清一区| 99久久精品免费看国产| 国产一区二区在线电影| 丝袜亚洲另类欧美| 有坂深雪av一区二区精品| 亚洲国产激情av| 欧美精品一区二区久久久| 欧美午夜不卡视频| 一本到三区不卡视频| 成人毛片老司机大片| 国产一区91精品张津瑜| 蜜桃精品视频在线观看| 天天影视网天天综合色在线播放| 亚洲手机成人高清视频| 国产日韩欧美制服另类| 久久品道一品道久久精品| 精品少妇一区二区三区| 91精品国产综合久久久久久久| 欧洲精品中文字幕| 97久久精品人人做人人爽50路| 国产成人精品在线看| 九九视频精品免费| 精品制服美女久久| 久久97超碰色| 激情小说亚洲一区| 国产制服丝袜一区| 国产大陆精品国产| 成人黄色在线看| av网站一区二区三区| 成人激情免费电影网址| 成人高清免费观看| 91视频你懂的| 欧美视频一二三区| 4438x亚洲最大成人网| 7777精品伊人久久久大香线蕉 | 欧美一区二区精品在线| 777久久久精品| 精品少妇一区二区三区视频免付费| 日韩亚洲欧美综合| 久久久噜噜噜久久中文字幕色伊伊 | 88在线观看91蜜桃国自产| 欧美一区二区三区电影| 欧美一级欧美三级| 精品国产一区二区三区久久影院| 久久综合丝袜日本网| 国产精品理论在线观看| 亚洲精品你懂的| 亚洲成人激情综合网| 精品在线你懂的| 成人免费不卡视频| 欧美色手机在线观看| 91麻豆精品国产自产在线| 久久久久久久综合狠狠综合| 亚洲欧洲三级电影| 石原莉奈在线亚洲二区| 国产福利一区在线| 色婷婷久久久综合中文字幕| 欧美一二三四区在线| 中文天堂在线一区| 亚洲国产cao| 国产一区二区三区在线观看免费视频 | 成人丝袜18视频在线观看| 91久久精品一区二区三| 日韩欧美在线123| 欧美国产国产综合| 三级久久三级久久久| 成人aa视频在线观看| 欧美日韩一区二区电影| 欧美国产日韩一二三区| 五月综合激情日本mⅴ| 国产大片一区二区| 欧美肥胖老妇做爰| 亚洲品质自拍视频网站| 久久电影网电视剧免费观看| 99精品久久免费看蜜臀剧情介绍| 91精品国产麻豆| 亚洲欧美激情插| 国产高清在线观看免费不卡| 欧美人狂配大交3d怪物一区| 中文字幕精品一区二区精品绿巨人 | 国产精品免费人成网站| 麻豆精品久久精品色综合| 色婷婷久久综合| 中文一区二区在线观看| 久久se这里有精品| 欧美人成免费网站| 亚洲一区免费观看| 97aⅴ精品视频一二三区| 欧美精品一区二区三区在线 | 免费观看日韩电影| 欧美色窝79yyyycom| 成人欧美一区二区三区在线播放| 国产综合色在线| 日韩三区在线观看| 免费三级欧美电影| 91精品国产综合久久香蕉的特点| 夜夜嗨av一区二区三区网页| 成人18视频日本| 国产亚洲一区二区在线观看| 青娱乐精品视频在线| 欧美精品在线观看播放| 亚洲永久精品大片| 在线视频一区二区三| 亚洲精品日韩一| 91麻豆国产自产在线观看| 国产精品传媒在线| 波多野结衣中文一区| 国产精品不卡在线| 99热99精品| 亚洲精品第1页|