中斷型別標誌

2021-07-03 14:20:47 字數 1319 閱讀 2385

在呼叫request_irq函式申請乙個irq

時,會傳入相應的中斷型別標誌。對於這些標誌新舊版本的核心實現是不完全相同的。

irqf_disabled

3.16.7-ct7版本核心中此標誌是沒有地方用到的。此標誌表示中斷在處理的時候是關中斷的,不能被另外的中斷所打斷。(

)這篇文章裡有講到此標誌在新核心中被廢棄的原因。

之前老的核心中,按照中斷處理快慢,分為快速中斷和慢速的中斷。對於慢速的中斷,在處理的時候是不能關中斷的,能夠被其他的中斷所中斷,這樣能夠防止處理耗時過長。快速中斷在處理的時候是關中斷的,不能被其他中斷所中斷,因為認為它處理的夠快。

在老的核心版本(

我參考的核心版本是

2.6.12.6)

中sa_interrupt標誌起到和irqf_disabled一樣的作用。

fastcall 

int 

handle_irq_event

(unsigned int 

irq, 

struct

pt_regs *

regs,

struct

irqaction *

action

)   

while

(action

); 

handle_irq_event在do_irq

中呼叫,在執行註冊的

handler

之前,會判斷註冊時有沒有設定sa_interrupt標誌。如果沒有設定此標誌,就呼叫local_irq_enable函式開中斷。

之前由於硬體的問題、慢速的處理器以及開發人員能力的差異,導致慢速的中斷處理在現實情況中大量存在。現在隨著硬體的快速發展,已經能夠越來越快的處理中斷了。並且中斷的延遲處理機制,如下半部、中斷執行緒化都使得能夠將大量的工作從中斷處理程式中移出來。

irqf_shared

此標誌用來表示乙個irq

是否允許在多個裝置間共享。在之前使用

8259

中斷控制器是,乙個

8259只有8

個pin,2

個級聯也只能支援

15個外部裝置中斷,外設很多的情況下可能會需要多個裝置共享乙個

irq。

現在普遍使用的是apic

(高階可程式設計的中斷控制器),由

io apic

和local apic

組成。每個

io apic

支援24

個irq line

,多個io apic

可以級聯。現在不推薦使用此標誌來註冊中斷。

中斷標誌位實驗心得

在做cc2530開發板一些實驗時候,經常會遇到一些最基本的問題,比如清中斷標誌位時候,是先清源中斷暫存器還是先是清cpu中斷標誌暫存器。初始化中斷標誌 p0ifg 0x00 在下面電路中需要將引腳定義為終端觸發引腳即 p0 1後面連線開關 gnd 單向導電二極體負極為低電平時該發光二極體點亮,否則處...

關於中斷請求標誌位

今天才發現我用了這麼長時間的中斷服務函式,竟然不知道中斷請求標誌位到底具體是什麼意思 悲哀!一般就用了定時器中斷服務函式,沒關心中斷請求標誌位,今天才發現,原來定時器中斷請求標誌位就是定時器溢位標誌位,定時器溢位時自動跳到相應中斷向量處,當主機響應該定時器中斷時,該標誌位由硬體自動清零。所以,我雖然...

設定中斷遮蔽標誌可以改變

設定中斷遮蔽標誌可以改變 a 多個中斷源的中斷請求優先順序 b cpu對多個中斷請求響應的優先次序 c 多個中斷服務程式開始執行的順序 d 多個中斷服務程式執行完的次序 正確答案d 原因 由中斷請求排隊器決定 參考微機原理 硬體電路已經規定,中斷遮蔽標誌不能改變。a錯 從請求到響應期間,執行中斷隱指...