日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Linux 核心--8.中斷與中斷處理( 三 )



中斷發(fā)生時(shí)Linux首先讀取系統(tǒng)可編程中斷控制器中中斷狀態(tài)寄存器判斷出中斷源 , 將其轉(zhuǎn)換成irq_action數(shù)組中偏移值 。例如中斷控制器引腳6來(lái)自軟盤控制器的中斷將被轉(zhuǎn)換成對(duì)應(yīng)于中斷處理過(guò)程數(shù)組中的第7個(gè)指針 。如果此中斷沒(méi)有對(duì)應(yīng)的中斷處理過(guò)程則Linux核心將記錄這個(gè)錯(cuò)誤 , 不然它將調(diào)用對(duì)應(yīng)此中斷源的所有irqaction數(shù)據(jù)結(jié)構(gòu)中的中斷處理例程 。

當(dāng)Linux核心調(diào)用設(shè)備驅(qū)動(dòng)的中斷處理過(guò)程時(shí)此過(guò)程必須找出中斷產(chǎn)生的原因以及相應(yīng)的解決辦法 。為了找到設(shè)備驅(qū)動(dòng)的中斷原因 , 設(shè)備驅(qū)動(dòng)必須讀取發(fā)生中斷設(shè)備上的狀態(tài)寄存器 。設(shè)備可能會(huì)報(bào)告一個(gè)錯(cuò)誤或者通知請(qǐng)求的處理已經(jīng)完成 。如軟盤控制器可能將報(bào)告它已經(jīng)完成軟盤讀取磁頭對(duì)某個(gè)扇區(qū)的正確定位 。一旦確定了中斷產(chǎn)生的原因 , 設(shè)備驅(qū)動(dòng)還要完成更多的工作 。如果這樣Linux核心將推遲這些操作 。以避免了CPU在中斷模式下花費(fèi)太多時(shí)間 。在設(shè)備驅(qū)動(dòng)中斷中我們將作詳細(xì)討論 。

推薦閱讀