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

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

?? 2.html

?? 介紹linux下文件和設備編程
?? HTML
?? 第 1 頁 / 共 5 頁
字號:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; cli();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ++timer_jiffies;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tv1.index = (tv1.index + 1) &amp; TVR_MASK;<br>}<br>sti();<br>}<br>對run_timer_list函數的說明如下:<br>關中。<br>判斷jiffies是否大等于timer_jiffies,若不是,goto 8。<br>判斷tv1.index是否為0(即此時系統已經掃描過整個tv1的256個timer_list鏈表,又回到的第一個鏈表處,此時需重整TVECS結構),若是,置n為1;若不是,goto 6。<br>調用cascade_timers()函數把TVECS[n]中由其index指定的那條鏈表上的timer放到TVECS[n-1]中來。注意:調用cascade_timers()函數后,index已經加1。<br>判斷TVECS[n]-&gt;index是否為1,即原來為0。如果是(表明TVECS[n]上所有都已經掃描一遍,此時需對其后一級的TVECS[++n]調用cascade_timers()進行重整),把n加1,goto 4。<br>執行tv1.vec上由tv1-&gt;index指定的那條鏈表上的所有timer的服務函數,并把該timer從鏈表中移走。在執行服務函數的過程中,允許中斷。<br>timer_jiffies加1,tv1-&gt;index加1,若tv1-&gt;index等于256,則重新置為0,goto 2。<br>開中,返回。<p>Linux提供了兩種定時器服務。一種早期的由timer_struct等結構描述,由run_old_times函數處理。另一種“新”的服務由timer_list等結構描述,由add_timer、del_timer、cascade_time和run_timer_list等函數處理。<br>早期的定時器服務利用如下數據結構:<br>struct timer_struct {<br>&nbsp;&nbsp;&nbsp; unsigned long expires;&nbsp; /*本定時器被喚醒的時刻 */<br>&nbsp;&nbsp;&nbsp; void (*fn)(void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 定時器喚醒后的處理函數 */<br>}<br>struct timer_struct timer_table[32];&nbsp; /*最多可同時啟用32個定時器 */<br>unsigned long timer_active;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 每位對應一定時器,置1表示啟用 */<br>新的定時器服務依靠鏈表結構突破了32個的限制,利用如下的數據結構:<br>struct timer_list {<br>&nbsp;&nbsp;&nbsp; struct timer_list *next;<br>&nbsp;&nbsp;&nbsp; struct timer_list *prev;<br>&nbsp;&nbsp;&nbsp; unsigned long expires;<br>&nbsp;&nbsp;&nbsp; unsigned long data;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* 用來存放當前進程的PCB塊的指針,可作為參數傳<br>&nbsp;&nbsp;&nbsp; void (*function)(unsigned long);&nbsp; 給function */<br>}<p><br>表示上述數據結構的圖示如下:<p><br>&nbsp;&nbsp;&nbsp; 在這里,順便簡單介紹一下舊的timer機制的運作情況。<br>&nbsp;&nbsp;&nbsp; 系統在每次調用函數do_bottom_half時,都會調用一次函數run_old_timers()。<br>函數run_old_timers()<br>該函數處理的很簡單,只不過依次掃描timer_table中的32個定時器,若掃描到的定時器已經到期,并且已經被激活,則執行該timer的服務函數。<p>間隔定時器itimer<br>系統為每個進程提供了三個間隔定時器。當其中任意一個定時器到期時,就會發出一個信號給進程,同時,定時器重新開始運作。三種定時器描述如下:<br>ITIMER_REAL&nbsp; 真實時鐘,到期時送出SIGALRM信號。<br>ITIMER_VIRTUAL&nbsp; 僅在進程運行時的計時,到期時送出SIGVTALRM信號。<br>ITIMER_PROF&nbsp; 不僅在進程運行時計時,在系統為進程運作而運行時它也計時,與ITIMER_VIRTUAL對比,該定時器通常為那些在用戶態和核心態空間運行的應用所花去的時間計時,到期時送出SIGPROF信號。<br>與itimer有關的數據結構定義如下:<br>struct timespec {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tv_sec;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* seconds */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tv_nsec;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* nanoseconds */<br>};<br>struct timeval {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tv_sec;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* seconds */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; tv_usec;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* microseconds */<br>};<br>struct&nbsp; itimerspec {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct&nbsp; timespec it_interval;&nbsp;&nbsp;&nbsp; /* timer period */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct&nbsp; timespec it_value;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* timer expiration */<br>};<br>struct&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; itimerval {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeval it_interval;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* timer interval */<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeval it_value;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* current value */<br>};<p>這三種定時器在task_struct中定義:<br>struct task_struct {<br>&nbsp;&nbsp;&nbsp; ……<br>&nbsp;&nbsp;&nbsp; unsigned long timeout;<br>&nbsp;&nbsp;&nbsp; unsigned long it_real_value,it_prof_value,it_virt_value;<br>&nbsp;&nbsp;&nbsp; unsigned long it_real_incr,it_prof_incr,it_virt_incr;<br>&nbsp;&nbsp;&nbsp; struct timer_list real_timer;<br>&nbsp;&nbsp;&nbsp; ……<br>}<br>在進程創建時,系統把it_real_fn函數的入口地址賦給real_timer.function。(見sched.h)<br>我們小組分析了三個系統調用:sys_getitimer,sys_setitimer,sys_alarm。<br>在這三個系統調用中,需用到以下一些函數:<br>函數static int _getitimer(int which, struct itimerval *value)<br>該函數的運行過程大致如下:<br>根據傳進的參數which按三種itimer分別處理:<br>若是ITIMER_REAL,則設置interval為current進程的it_real_incr,val設置為0;判斷current進程的real_timer有否設置并掛入TVECS結構中,若有,設置val為current進程real_timer的expires,并把real_timer重新掛到TVECS結構中,接著把val與當前jiffies作比較,若小等于當前jiffies,則說明該real_timer已經到期,于是重新設置val為當前jiffies的值加1。最后把val減去當前jiffies的值,goto 2。<br>若是ITIMER_VIRTUAL,則分別設置interval,val的值為current進程的it_virt_incr、it_virt_value,goto 2。<br>若是ITIMER_PROF,則分別設置interval,val的值為current進程的it_prof_incr、it_prof_value,goto 2。<br>&nbsp;&nbsp; (2)調用函數jiffiestotv把val,interval的jiffies值轉換為timeval,返回0。<br>函數 int _setitimer(int which, struct itimerval *value, struct itimerval *ovalue)<br>該函數的運行過程大致如下:<br>調用函數tvtojiffies把value中的interval和value轉換為jiffies i 和 j。<br>判斷指針ovalue是否為空,若空,goto ;若不空,則把由which指定類型的itimer存入ovalue中,若存放不成功,goto 4;<br>根據which指定的itimer按三種類型分別處理:<br>若是ITIMER_REAL,則從TVECS結構中取出current進程的real_timer,并重新設置current進程的it_real_value和it_real_incr為j和i。若j等于0,goto 4;若不等于0,則把當前jiffies的值加上定時器剩余時間j,得到觸發時間。若i小于j,則表明I已經溢出,應該重新設為ULONG_MAX。最后把current進程的real_timer的expires設為i,把設置過的real_timer重新加入TVECS結構,goto 4。<br>若是ITIMER_VIRTUAL,則設置current進程的it-_virt_value和it_virt_incr為j和i。<br>若是ITIMER_PROF,則設置current進程的it-_prof_value和it_prof_incr為j和i。<br>&nbsp;&nbsp; (4)返回0。<p>函數verify_area(int type, const void *addr, unsigned long size)<br>該函數的主要功能是對以addr為始址的,長度為size的一塊存儲區是否有type類型的操作權利。<p>函數memcpy_tofs(to, from, n)<br>該函數的主要功能是從以from為始址的存儲區中取出長度為n的一塊數據放入以to為始址的存儲區。<p>函數memcpy_fromfs(from, to, n)<br>該函數的主要功能是從以from為始址的存儲區中取出長度為n的一塊數據放入以to為始址的存儲區。<p>函數memset((char*)&amp;set_buffer, 0, sizeof(set_buffer))<br>該函數的主要功能是把set_buffer中的內容置為0,在這里,即把it_value和it_interval置為0。<p>現在,我簡單介紹一下這三個系統調用:<br>系統調用sys_getitimer(int which, struct itimerval *value)<p>首先,若value為NULL,則返回-EFAULT,說明這是一個bad address。<br>其次,把which類型的itimer取出放入get_buffer。<br>再次,若存放成功,再確認對value的寫權利。<br>最后,則把get_buffer中的itimer取出,拷入value。<p>系統調用sys_setitimer(int which, struct itimerval *value,struct itimerval *ovalue)<p>首先,判斷value是否為NULL,若不是,則確認對value是否有讀的權利,并把set_buffer中的數據拷入value;若value為NULL,則把set_buffer中的內容置為0,即把it_value和it_interval置為0。<br>其次,判斷ovalue是否為NULL,若不是,則確認對ovalue是否有寫的權利。<br>再次,調用函數_setitimer設置由which指定類型的itimer。<br>最后,調用函數memcpy_tofs把get_buffer中的數據拷入ovalue,返回。<p>系統調用sys_alarm(unsigned int seconds)<p>該系統調用重新設置進程的real_itimer,若seconds為0,則把原先的alarm定時器刪掉。并且設interval為0,故只觸發一次,并把舊的real_timer存入oldalarm,并返回oldalarm。<p><p><p><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I366" ID="I366"></A><center><b><font size=+2>from aka</font></b></center><br><center><A HREF="#Content">[目錄]</A></center><hr><br><A NAME="I367" ID="I367"></A><center><b><font size=+2>硬件中斷</font></b></center><br>硬件中斷<p>硬件中斷概述<p>中斷可以用下面的流程來表示:<p>中斷產生源 --&gt; 中斷向量表 (idt) --&gt; 中斷入口 ( 一般簡單處理后調用相應的函數) ---&gt;do_IRQ--&gt; 后續處理(軟中斷等工作)<p>具體地說,處理過程如下:<p>中斷信號由外部設備發送到中斷芯片(模塊)的引腳<p>中斷芯片將引腳的信號轉換成數字信號傳給CPU,例如8259主芯片引腳0發送的是0x20<p>CPU接收中斷后,到中斷向量表IDT中找中斷向量<p>根據存在中斷向量中的數值找到向量入口<p>由向量入口跳轉到一個統一的處理函數do_IRQ<p>在do_IRQ中可能會標注一些軟中斷,在執行完do_IRQ后執行這些軟中斷。<p>下面一一介紹。<p>8259芯片<p>本文主要參考周明德《微型計算機系統原理及應用》和billpan的相關帖子<p>1.中斷產生過程<p>(1)如果IR引腳上有信號,會使中斷請求寄存器(Interrupt Request Register,IRR)相應的位置位,比如圖中, IR3, IR4, IR5上有信號,那么IRR的3,4,5為1<p>(2)如果這些IRR中有一個是允許的,也就是沒有被屏蔽,那么就會通過INT向CPU發出中斷請求信號。屏蔽是由中斷屏蔽寄存器(Interrupt Mask Register,IMR)來控制的,比如圖中位3被置1,也就是IRR位3的信號被屏蔽了。在圖中,還有4,5的信號沒

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲va在线va天堂| 国产91高潮流白浆在线麻豆| 国产精品国产成人国产三级 | 中文字幕av资源一区| 久久精品一区四区| 精品国产一区久久| 日韩无一区二区| 精品少妇一区二区三区日产乱码| 日韩精品在线一区| 久久天天做天天爱综合色| 精品日本一线二线三线不卡| 欧美成人激情免费网| 久久嫩草精品久久久精品| 2023国产精品自拍| 国产精品夫妻自拍| 亚洲精品国产a久久久久久| 一区二区三区四区精品在线视频| 一区二区三区中文字幕电影 | 国产电影一区在线| 成人精品国产一区二区4080 | 亚洲同性gay激情无套| 一区二区高清在线| 五月激情综合色| 精品国产免费久久 | 亚洲国产综合在线| 日韩—二三区免费观看av| 麻豆精品久久久| 懂色av一区二区夜夜嗨| 色婷婷久久久综合中文字幕| 欧美日韩色一区| 精品国免费一区二区三区| 久久久亚洲国产美女国产盗摄| 国产精品伦一区二区三级视频| 亚洲一区国产视频| 美女视频黄频大全不卡视频在线播放| 国产精品一区二区久久精品爱涩| 99久久精品免费观看| 正在播放亚洲一区| 国产亚洲欧美日韩日本| 亚洲黄一区二区三区| 麻豆精品一区二区| 色婷婷精品大视频在线蜜桃视频| 99国产精品久久久久久久久久 | 欧美精品第1页| www国产亚洲精品久久麻豆| 国产精品久久夜| 日韩在线播放一区二区| 成人综合在线观看| 91精品久久久久久久99蜜桃| 国产欧美精品国产国产专区| 午夜精品福利在线| 国产成人在线观看免费网站| 欧美怡红院视频| 国产亚洲福利社区一区| 亚洲成人激情自拍| 成人精品亚洲人成在线| 欧美浪妇xxxx高跟鞋交| 欧美精品一区二区三| 亚洲精品v日韩精品| 狠狠狠色丁香婷婷综合久久五月| 91久久精品一区二区三| 久久这里都是精品| 日韩激情在线观看| 91偷拍与自偷拍精品| 国产精品妹子av| 日韩精品欧美精品| 色欧美乱欧美15图片| 欧美激情在线一区二区| 久久激五月天综合精品| 欧美三级中文字幕在线观看| 国产精品理伦片| 国产精品91xxx| 日韩精品一区二区三区蜜臀| 亚洲第一综合色| 91蜜桃在线观看| 欧美激情一区二区三区全黄| 精彩视频一区二区三区| 欧美一区二区三区公司| 亚洲国产日韩a在线播放 | 亚洲色大成网站www久久九九| 韩国av一区二区三区在线观看| 69成人精品免费视频| 亚洲福利一区二区| 在线免费av一区| 亚洲精品日韩专区silk| 国产精品私房写真福利视频| 天堂蜜桃91精品| 色老综合老女人久久久| 成人欧美一区二区三区1314 | 欧美精品第1页| 亚洲午夜影视影院在线观看| 在线日韩一区二区| 亚洲人成网站在线| 91同城在线观看| 亚洲三级理论片| 97精品国产露脸对白| 亚洲男人天堂av网| 色综合久久久久网| 亚洲乱码国产乱码精品精98午夜| 成人app在线观看| 国产精品传媒在线| 99久久免费精品| 国产精品嫩草影院com| 高清av一区二区| 国产精品每日更新| 91视视频在线观看入口直接观看www | 国产精品久久久久毛片软件| 国产在线一区二区综合免费视频| 欧美r级电影在线观看| 青青青爽久久午夜综合久久午夜| 91精品欧美福利在线观看| 日韩av一级电影| 日韩欧美中文字幕精品| 久久国产麻豆精品| 欧美va亚洲va在线观看蝴蝶网| 久久99精品久久久久久动态图 | 国产欧美一区二区三区鸳鸯浴| 国产一区二区三区精品视频| 久久久亚洲精品石原莉奈| 欧美日韩精品欧美日韩精品一综合| 夜夜嗨av一区二区三区四季av | 亚洲一区二区三区精品在线| 欧美日韩亚洲不卡| 久久精品国产澳门| 国产精品网曝门| 色呦呦国产精品| 日韩成人dvd| 久久久www免费人成精品| 成人午夜短视频| 亚洲一区免费视频| 欧美一级艳片视频免费观看| 日本三级韩国三级欧美三级| 2020国产精品| av电影在线观看一区| 亚洲国产成人porn| 精品成人一区二区| 99精品偷自拍| 亚洲bdsm女犯bdsm网站| 欧美mv和日韩mv国产网站| 成人久久视频在线观看| 亚洲bdsm女犯bdsm网站| 2023国产一二三区日本精品2022| 91亚洲男人天堂| 美女尤物国产一区| 中文字幕亚洲一区二区av在线 | 久久久精品免费网站| 91在线视频播放| 日本aⅴ精品一区二区三区 | 激情综合色综合久久| 国产精品国产三级国产三级人妇| 欧美日韩国产大片| 国产大片一区二区| 视频一区国产视频| 欧美激情艳妇裸体舞| 91精品国产品国语在线不卡| 成人h精品动漫一区二区三区| 天天色图综合网| 色综合亚洲欧洲| 久久久久久久久99精品| 亚洲欧美日韩电影| 91麻豆精品国产自产在线| 国产一区二区网址| 污片在线观看一区二区| 国产精品理论在线观看| 欧美大尺度电影在线| 色综合天天做天天爱| 国产精品亚洲成人| 偷拍日韩校园综合在线| 亚洲欧美一区二区三区国产精品| 日韩欧美成人一区| 欧美日韩国产天堂| 国产aⅴ精品一区二区三区色成熟| 国产精品一级二级三级| 亚洲电影在线播放| 久久久久国产精品免费免费搜索| 91蝌蚪porny| 午夜精品免费在线观看| 欧美国产激情一区二区三区蜜月| 在线一区二区三区四区| 成人性生交大片| 国产精品18久久久久久久久久久久| 日韩电影免费在线观看网站| 亚洲一区二区三区三| 一区二区在线看| 亚洲欧洲成人精品av97| 久久久精品天堂| 久久色中文字幕| 欧美一激情一区二区三区| 欧美日韩精品一区二区三区 | 欧美不卡激情三级在线观看| 欧美伦理电影网| 欧美视频你懂的| 中文字幕一区视频| 久久亚洲二区三区| 日韩欧美在线123| 欧美一三区三区四区免费在线看| 欧美中文字幕亚洲一区二区va在线| 色综合久久中文综合久久97| 成年人午夜久久久| eeuss鲁片一区二区三区在线观看|