專利名稱:中斷抖動的處理方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種中斷抖動的處理方法和設(shè)備。
背景技術(shù):
中斷是單片機(jī)實(shí)時地處理內(nèi)部或外部事件的一種內(nèi)部機(jī)制。當(dāng)某種內(nèi)部或外部事 件發(fā)生時,單片機(jī)的中斷系統(tǒng)將迫使CPU (Central Processing Unit,中央處理器)暫停正 在執(zhí)行的程序,轉(zhuǎn)而去進(jìn)行中斷事件的處理,中斷處理完畢后,又返回被中斷的程序處,繼 續(xù)執(zhí)行下去。在實(shí)際應(yīng)用中,設(shè)備底層驅(qū)動軟件的運(yùn)行,往往是以硬件產(chǎn)生的中斷為條件來進(jìn) 行觸發(fā)的,硬件所產(chǎn)生的中斷通知了驅(qū)動軟件的各種事件的發(fā)生,例如數(shù)據(jù)的傳輸事件通 知、硬件異常通知等。為了響應(yīng)中斷的產(chǎn)生,進(jìn)行中斷對應(yīng)的處理,底層驅(qū)動軟件需要調(diào)用 操作系統(tǒng)或者BSP (Board Support lockage,板級支持軟件包)提供的函數(shù),為每一個需要 管理的中斷注冊一個中斷處理程序。此后,當(dāng)硬件中斷產(chǎn)生時,操作系統(tǒng)或BSP會調(diào)用驅(qū)動 注冊的中斷處理程序進(jìn)行處理。當(dāng)發(fā)生異常時,中斷有可能以非常高的頻度頻繁產(chǎn)生,這就可能導(dǎo)致系統(tǒng)不斷的 進(jìn)入中斷的處理程序,在嚴(yán)重的情況下,CPU可能除了反復(fù)執(zhí)行中斷處理程序之外,已經(jīng)沒 有空閑再去執(zhí)行其他的程序,此時,就會出現(xiàn)設(shè)備的不正常運(yùn)行,甚至癱瘓。為了克服這樣的問題,需要對過渡頻繁的中斷進(jìn)行過濾,即中斷去抖。在現(xiàn)有技術(shù) 提到的中斷去抖概念,通常指的是,在中斷處理程序及其觸發(fā)的后續(xù)處理流程中,對于中斷 的頻繁產(chǎn)生進(jìn)行軟件流程的去抖,例如,在鍵盤輸入過程中,由于存在按鍵的抖動,導(dǎo)致雖 然操作者感覺只是按了一次鍵,但是處理器接收到的按鍵事件產(chǎn)生中斷卻可能有多個,為 了最終將抖動的多次鍵盤鍵入識別為一次鍵入,后續(xù)的軟件流程可能采用一系列算法進(jìn)行 去抖。在實(shí)現(xiàn)本發(fā)明實(shí)施例的過程中,申請人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題 現(xiàn)有技術(shù)所涉及的中斷去抖操作,只能適用于低頻的中斷抖動(頻率通常在10000HZ
以下),這種情況下,CPU仍然有余力執(zhí)行中斷處理程序及其后續(xù)軟件去抖流程。而如果出現(xiàn)高頻的中斷抖動(頻率通常在10000HZ以上),CPU只能不斷被動響應(yīng) 中斷處理程序,已經(jīng)無力再去處理中斷處理程序后續(xù)的流程,后續(xù)的去抖操作及其正常功 能都已經(jīng)沒有條件再得到執(zhí)行,設(shè)備已經(jīng)失效甚至癱瘓。對于此種情況,現(xiàn)有技術(shù)沒有給出有效的保證設(shè)備在高頻中斷抖動的場景下仍然 正常工作的方法。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例提供一種中斷抖動的處理方法和設(shè)備,解決現(xiàn)有的無法在高頻中斷 抖動場景下進(jìn)行正常處理的問題。為達(dá)到上述目的,本發(fā)明實(shí)施例一方面提供了一種中斷抖動的處理方法,包括通過統(tǒng)一中斷入口接收所有的中斷;
當(dāng)接收到一個中斷時,查詢所述中斷的接收時間是否處于所述中斷的類型所對應(yīng)的過 濾周期內(nèi);
如果查詢結(jié)果為是,判斷在所述過濾周期內(nèi)接收到的所述類型的中斷的次數(shù)是否達(dá)到 預(yù)設(shè)的過濾閾值;
如果沒有達(dá)到,調(diào)用所述類型的中斷所對應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理。另一方面,本發(fā)明實(shí)施例還提供了一種中斷抖動的處理設(shè)備,包括 統(tǒng)一中斷入口,用于接收所有的中斷;
設(shè)置模塊,用于設(shè)置各中斷類型所對應(yīng)的過濾周期和過濾閾值; 查詢模塊,用于當(dāng)所述統(tǒng)一中斷入口接收到一個中斷時,查詢所述中斷的接收時間是 否處于所述設(shè)置模塊設(shè)置的所述中斷的類型所對應(yīng)的過濾周期內(nèi);
判斷模塊,用于在所述查詢模塊的查詢結(jié)果為是時,判斷在所述過濾周期內(nèi)接收到的 所述類型的中斷的次數(shù)是否達(dá)到所述設(shè)置模塊所設(shè)置的過濾閾值;
處理模塊,用于在所述判斷模塊的判斷結(jié)果為沒有達(dá)到時,調(diào)用所述類型的中斷所對 應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn)
通過應(yīng)用本發(fā)明實(shí)施例的技術(shù)方案,將所有的中斷通過統(tǒng)一中斷入口進(jìn)行接收和判斷 處理,只有在確定在相應(yīng)的過濾周期內(nèi)接收到的相應(yīng)類型的中斷沒有超過預(yù)設(shè)的過濾閾值 時,才對該中斷執(zhí)行相應(yīng)的正常處理流程,從而,避免大量的中斷抖動對處理資源的占用, 并且,由于通過統(tǒng)一中斷入口接收中斷,并進(jìn)行統(tǒng)一的過濾處理,降低了大量冗余的中斷處 理對處理器資源的占用,因此,即使在出現(xiàn)高頻中斷抖動的情況下,依舊可以保證處理器有 足夠的資源進(jìn)行其他正常的業(yè)務(wù)處理。
圖1為本發(fā)明實(shí)施例提出的一種中斷抖動的處理方法的流程示意圖2為本發(fā)明實(shí)施例提出的一種具體應(yīng)用場景下的中斷抖動的處理方法的流程示意
圖3為本發(fā)明實(shí)施例提出的一種中斷抖動的處理設(shè)備的結(jié)構(gòu)示意圖。
具體實(shí)施例方式如背景技術(shù)所述,在各種設(shè)備產(chǎn)品中,底層驅(qū)動軟件的一項(xiàng)重要工作就是對于硬 件產(chǎn)生的各種中斷進(jìn)行管理。不可避免的,硬件中斷在某些異常的情況下存在發(fā)生抖動而 頻繁產(chǎn)生的可能性(例如,由于虛焊導(dǎo)致的接觸不良,或者設(shè)備進(jìn)水導(dǎo)致的硬件故障等),一 旦中斷產(chǎn)生的頻度達(dá)到了一定的量級,就可能導(dǎo)致處理器為了不斷對其進(jìn)行處理,而對正 常的業(yè)務(wù)運(yùn)行造成嚴(yán)重的干擾,甚至導(dǎo)致設(shè)備癱瘓。這樣的情況即為中斷抖動,為了克服這樣的中斷抖動,現(xiàn)有的技術(shù)方案主要是由 CPU進(jìn)行去抖操作,但這樣同樣會占用處理資源,在抖動頻率較高,尤其對于高頻的中斷抖 動(其頻率通常在10000HZ以上,即每IOOus產(chǎn)生1次以上中斷)的情況,現(xiàn)有的技術(shù)方案需 要占用大量的CPU處理資源,同樣可能造成沒有足夠的處理資源進(jìn)行其他業(yè)務(wù)處理,甚至造成設(shè)備癱瘓。為了避免這種情況的發(fā)生,本發(fā)明實(shí)施例提出了對中斷,尤其是高頻抖動的進(jìn)行 過濾處理的技術(shù)方案。本發(fā)明實(shí)施例針對高頻中斷去抖的需求,提出了對中斷進(jìn)行過濾處理的技術(shù)方 案,其中心思想在于對于需要進(jìn)行過濾處理的中斷進(jìn)行注冊,對于注冊了需要過濾處理的 中斷,在一定的過濾周期內(nèi),無論該中斷從硬件上產(chǎn)生多少次,軟件上只會對底層驅(qū)動軟件 注冊的該中斷處理程序進(jìn)行有限次數(shù)的調(diào)用。以保證系統(tǒng)不會因?yàn)檫^多的中斷抖動而占用 過多的處理資源。如圖1所示,為本發(fā)明實(shí)施例提出的一種中斷抖動的處理方法的流程示意圖,該 方法具體包括以下步驟
步驟S101、通過統(tǒng)一中斷入口接收所有的中斷。統(tǒng)一中斷入口的引入主要是為了將所有的中斷在上報過程中都經(jīng)過統(tǒng)一的預(yù)處 理,從而實(shí)現(xiàn)統(tǒng)一的過濾處理。統(tǒng)一中斷入口可以是與后續(xù)處理單元相連接的一個邏輯接口,也可以是一個獨(dú)立 的處理單元,或是一個能夠應(yīng)用相應(yīng)的處理函數(shù)的功能實(shí)體,具體物理形態(tài)的變化并不會 影響本發(fā)明的保護(hù)范圍。步驟S102、當(dāng)接收到一個中斷時,查詢該中斷的接收時間是否處于該中斷的類型 所對應(yīng)的過濾周期內(nèi)。在實(shí)際應(yīng)用中,該中斷的類型所對應(yīng)的過濾周期是預(yù)先設(shè)定的,即前述的對于需 要進(jìn)行過濾處理的中斷進(jìn)行注冊,并設(shè)置相應(yīng)的過濾周期,在此過濾周期內(nèi),無論該中斷從 硬件上產(chǎn)生多少次,軟件上只會對底層驅(qū)動軟件注冊的該中斷處理程序進(jìn)行有限次數(shù)的調(diào)用。如果查詢結(jié)果為是,執(zhí)行步驟S103 ; 如果查詢結(jié)果為否,執(zhí)行步驟S104。在實(shí)際應(yīng)用中,為了在過濾周期內(nèi)對接收到的中斷進(jìn)行計(jì)數(shù),以便進(jìn)行相應(yīng)的后 續(xù)處理,所以,當(dāng)查詢結(jié)果為是時,需要進(jìn)行計(jì)數(shù)處理,即將在過濾周期內(nèi)接收到的該類型 的中斷的次數(shù)增加1。而相反的,當(dāng)查詢結(jié)果為否時,表示當(dāng)前的過濾周期已經(jīng)過期,無需再對該類型的 中斷進(jìn)行過濾,因此,將在過濾周期內(nèi)接收到的該類型的中斷的次數(shù)清零。步驟S103、判斷在過濾周期內(nèi)接收到的該類型的中斷的次數(shù)是否達(dá)到預(yù)設(shè)的過濾 閾值。如果沒有達(dá)到,執(zhí)行步驟S104 ; 如果已經(jīng)達(dá)到,執(zhí)行步驟S105。步驟S104、調(diào)用該類型的中斷所對應(yīng)的中斷處理程序?qū)υ撝袛噙M(jìn)行處理。步驟S105、結(jié)束對所述中斷的處理,放棄調(diào)用所述類型的中斷所對應(yīng)的中斷處理程序。在實(shí)際的應(yīng)用場景中,對于接收次數(shù)達(dá)到過濾閾值的中斷,一方面,需要執(zhí)行步驟 S105中的結(jié)束處理,放棄調(diào)用中斷處理程序的操作,從而避免對過多次數(shù)的中斷進(jìn)行頻繁 處理而造成的系統(tǒng)資源的浪費(fèi),另一方面,當(dāng)一個類型的中斷接收次數(shù)達(dá)到一定的數(shù)量后,則需要對該類型的中斷進(jìn)行直接關(guān)閉,即系統(tǒng)對此類型的中斷直接忽略,不進(jìn)行任何處理, 不僅不會調(diào)用中斷處理程序,甚至連前述的步驟S102之后的過濾操作都不會進(jìn)行,進(jìn)一步 節(jié)省系統(tǒng)資源的開銷。具體的關(guān)閉方式是為此類型的中斷添加關(guān)閉標(biāo)識,凡是添加了關(guān)閉 標(biāo)識的中斷類型,系統(tǒng)將對其直接忽略。這樣的關(guān)閉操作將設(shè)定一個關(guān)閉時間,在此關(guān)閉時間內(nèi),系統(tǒng)將屏蔽對該類型的 中斷的響應(yīng),不會對其進(jìn)行任何處理。由此可知,中斷的關(guān)閉過程是在前述的過濾過程的基礎(chǔ)上進(jìn)一步加強(qiáng)的中斷過濾 操作,尤其對于高頻中斷抖動,將起到更好的過濾效果,進(jìn)一步的節(jié)省系統(tǒng)資源。在具體的實(shí)施場景中,相應(yīng)的關(guān)閉判定過程如下
在步驟S104判斷接收中斷的次數(shù)已經(jīng)達(dá)到預(yù)設(shè)的過濾閾值的基礎(chǔ)上,進(jìn)一步判斷在 所述過濾周期內(nèi)接收到的所述類型的中斷的次數(shù)是否達(dá)到預(yù)設(shè)的告警閾值。如果沒有達(dá)到,則執(zhí)行步驟S105,結(jié)束對該中斷的處理,放棄調(diào)用該類型的中斷所 對應(yīng)的中斷處理程序。如果達(dá)到,則除了執(zhí)行步驟S105中的處理,關(guān)閉該類型的中斷,同時,還需要記錄 該中斷的接收時間,并對該類型的中斷設(shè)置關(guān)閉標(biāo)識和關(guān)閉時間。由于引入了關(guān)閉機(jī)制,所以,在實(shí)際的過濾操作之前,可以優(yōu)先判斷當(dāng)前是否存在 被關(guān)閉的中斷,如果有,進(jìn)一步判斷是否已經(jīng)超過關(guān)閉時間,即在步驟S102中查詢接收時 間是否處于過濾周期內(nèi)的操作之前,需要對當(dāng)前是否有處于關(guān)閉狀態(tài)的中斷的類型進(jìn)行識 別,由于被關(guān)閉的中斷已經(jīng)被系統(tǒng)屏蔽,所以,當(dāng)前的識別過程必然是在其他中斷的處理過 程中進(jìn)行的,只有超過了關(guān)閉時間,才會開啟該類型的中斷,從而,系統(tǒng)才會再響應(yīng)對該類 型的中斷的處理,具體過程如下
當(dāng)接收到一個中斷時,判斷是否存在設(shè)置關(guān)閉標(biāo)識的中斷類型。如果不存在,直接執(zhí)行步驟S102,啟動相應(yīng)的過濾程序,如果存在,判斷當(dāng)前是否 超過設(shè)置關(guān)閉標(biāo)識的中斷類型的關(guān)閉時間。如果已經(jīng)超過關(guān)閉時間,則刪除該關(guān)閉標(biāo)識,開啟相應(yīng)的中斷類型的處理過程,在 后續(xù)的處理過程中,硬件產(chǎn)生的相應(yīng)類型的中斷才會被響應(yīng),才會進(jìn)行具體的后處理過程, 相反,如果沒有超過關(guān)閉時間,則不進(jìn)行任何處理,直接執(zhí)行步驟S102,繼續(xù)對當(dāng)前的中斷 進(jìn)行過濾處理。需要進(jìn)一步指出的是,如果系統(tǒng)中同時存在需要過濾的中斷,以及不需要過濾的 中斷,那么,在執(zhí)行步驟S102的過濾程序之前,需要優(yōu)先識別是否對當(dāng)前接收到的中斷進(jìn) 行過濾,具體的處理步驟如下
確定所述中斷是否需要進(jìn)行過濾處理;
如果不需要,調(diào)用所述中斷所對應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理,如果需要,則 執(zhí)行步驟S102,查詢所述中斷的接收時間是否處于所述中斷的類型所對應(yīng)的過濾周期內(nèi)。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn)
通過應(yīng)用本發(fā)明實(shí)施例的技術(shù)方案,將所有的中斷通過統(tǒng)一中斷入口進(jìn)行接收和判斷 處理,只有在確定在相應(yīng)的過濾周期內(nèi)接收到的相應(yīng)類型的中斷沒有超過預(yù)設(shè)的過濾閾值 時,才對該中斷執(zhí)行相應(yīng)的正常處理流程,從而,避免大量的中斷抖動對處理資源的占用, 并且,由于通過統(tǒng)一中斷入口接收中斷,并進(jìn)行統(tǒng)一的過濾處理,降低了大量冗余的中斷處理對處理器資源的占用,因此,即使在出現(xiàn)高頻中斷抖動的情況下,依舊可以保證處理器有 足夠的資源進(jìn)行其他正常的業(yè)務(wù)處理。下面,結(jié)合具體的應(yīng)用場景,對本發(fā)明實(shí)施例所提出的技術(shù)方案進(jìn)行說明。根據(jù)本發(fā)明的技術(shù)思路,在系統(tǒng)中為所有的中斷處理程序設(shè)置一個統(tǒng)一的入口。 即所有的中斷產(chǎn)生時,首先執(zhí)行一個統(tǒng)一的處理函數(shù),在該處理函數(shù)內(nèi),根據(jù)中斷所對應(yīng)的 標(biāo)識(中斷號)進(jìn)行中斷的分發(fā),相應(yīng)的調(diào)用驅(qū)動所注冊的中斷處理程序。這個統(tǒng)一的中斷處理的入口成為中斷過濾處理的決策點(diǎn)。在該決策點(diǎn)可以完成以 下工作
判斷當(dāng)前產(chǎn)生的中斷是否是一個需要進(jìn)行過濾處理的中斷。判斷當(dāng)前需過濾處理的中斷,在本過濾周期內(nèi)是否已經(jīng)產(chǎn)生過,或是否產(chǎn)生過預(yù) 定的次數(shù),以及是否可以觸發(fā)其中斷處理程序的調(diào)用和執(zhí)行。判斷某個需過濾處理的中斷的產(chǎn)生次數(shù)是否已經(jīng)達(dá)到告警門限,從而需要對該類 型的中斷進(jìn)行強(qiáng)制關(guān)閉。判斷一個類型的中斷的過濾周期是否到期,從而需要復(fù)位所有的需過濾處理的中 斷所對應(yīng)的控制和統(tǒng)計(jì)信息。綜合以上的各判斷處理過程,即可配合完成對中斷的過濾功能。為讓驅(qū)動指示哪些類型的中斷需要過濾,及其對應(yīng)的過濾周期是多長,操作系統(tǒng) 或者BSP可以向驅(qū)動軟件提供以下的API接口,在本發(fā)明實(shí)施例中,僅描述該接口的原語描 述
函數(shù)原語dntFilterRegister (需要過濾的中斷的中斷號); 功能指定相對應(yīng)的中斷,并將其注冊為需要過濾的中斷。函數(shù)原語dntFilterTimekt (欲過濾中斷的中斷號,中斷過濾周期); 功能設(shè)置指定的需要過濾的中斷的過濾周期。函數(shù)原語dntLockTimekt (欲過濾中斷的中斷號,中斷告警周期); 功能設(shè)置指定的需要過濾的中斷的告警周期。當(dāng)驅(qū)動軟件調(diào)用上面的接口設(shè)置一個中斷為需要過濾的中斷后,在其設(shè)定的過濾 周期內(nèi),無論硬件產(chǎn)生該中斷多少次,相對應(yīng)的中斷處理程序也只會被調(diào)用預(yù)先限定的次 數(shù),避免對該中斷處理程序的頻繁調(diào)度。下面,詳細(xì)描述中斷的過濾處理過程中的決策點(diǎn)的處理流程。首先,說明與該過濾處理流程相關(guān)的變量設(shè)計(jì)。(I)FLAG [N]。表示各中斷是否需要過濾的標(biāo)志,其中,N表示系統(tǒng)中存在的中斷的個數(shù),以下的 其他變量中同樣存在此種情況,不再重復(fù)說明。(2) T_PERI0D[N]。各中斷的過濾周期的長度。(3) T_START[N]。各中斷當(dāng)前的過濾周期的起始時間。(4) COUNT [N]。在當(dāng)前過濾周期內(nèi),硬件已經(jīng)產(chǎn)生各中斷的次數(shù)。
(5) THRESHOLD 1 [N]。在同一個過濾周期內(nèi),各中斷對應(yīng)的允許調(diào)用驅(qū)動中斷處理程序的最多次數(shù),即 前述的過濾閾值。(6) THRESH0LD2[N]。在同一個過濾周期內(nèi),各中斷所允許的硬件產(chǎn)生次數(shù)的告警門限,一旦中斷在一 個過濾周期內(nèi)產(chǎn)生的次數(shù)超出了該告警門限,則該中斷將被關(guān)閉,即前述的告警閾值。(7) L0CK_FLAG[N]。各中斷是否已經(jīng)被關(guān)閉的標(biāo)志。(8 ) T_L0CK_START [N]。各中斷被關(guān)閉的起始時間。(9) T_L0CK[N]。 各中斷允許關(guān)閉的最長時間,即前述的關(guān)閉時間。在實(shí)際的應(yīng)用場景中,每個中斷都可以具有上述的各個變量,當(dāng)然,也可以只對其 中的部分中斷設(shè)置相應(yīng)的變量,而對其他不涉及相應(yīng)的限定的中斷則不設(shè)置相應(yīng)的變量, 如果一個中斷的一個變量為缺省狀態(tài),那么,則視為該中斷不受此變量所對應(yīng)的處理規(guī)則 的限定。基于上述的變量設(shè)定,如圖2所示,為本發(fā)明實(shí)施例所提出的一種具體場景中的 的中斷抖動的處理方法的流程示意圖,具體包括以下步驟
步驟S201、當(dāng)硬件中斷產(chǎn)生時,該中斷進(jìn)入統(tǒng)一中斷入口,交由中斷過濾決策程序繼續(xù)處理。中斷過濾決策處理程序引導(dǎo)該中斷進(jìn)入步驟S202。步驟S202、獲取當(dāng)前系統(tǒng)時間CurTime。步驟S203、判斷是否存在處于關(guān)閉狀態(tài)的中斷。遍歷L0CK_FLAG[N],判斷L0CK_FLAG[i] (i=0到N_1)是否指示i號中斷處于被關(guān) 閉的狀態(tài)。如果存在,執(zhí)行步驟S204 ; 如果不存在,執(zhí)行步驟S205。步驟S204、判斷處于關(guān)閉狀態(tài)的中斷是否達(dá)到關(guān)閉時間。如果i號中斷處于被關(guān)閉的狀態(tài),則判斷(CurTime - T_L0CK_START[i])是否大 于等于i號中斷關(guān)閉最長時間T_L0CK[i]。如果是,則開啟i號中斷的處理狀態(tài),恢復(fù)對i號中斷的正常響應(yīng),并繼續(xù)對當(dāng)前 中斷的處理。如果否,則不做任何操作,繼續(xù)對當(dāng)前中斷的處理。由于i號中斷處于關(guān)閉狀態(tài),其產(chǎn)生不會被系統(tǒng)感知,因此,上述的判斷過程實(shí)際 上發(fā)生在其他中斷的處理過程中,當(dāng)遍歷完所有中斷并完成相應(yīng)處理后,進(jìn)入步驟S205。步驟S205、判斷當(dāng)前中斷是否需要過濾。設(shè)本次接收到的中斷的中斷號為j,那么,可以根據(jù)FLAG[j]判斷當(dāng)前中斷是否需 要過濾。如果需要過濾,則執(zhí)行步驟S206 ;否則,如果不需要過濾,則執(zhí)行步驟S210。步驟S206、判斷當(dāng)前中斷的過濾周期是否到期。本次中斷的中斷號為j,則本步驟的處理過程為判斷(CurTime - T_START[j])是 否大于等于T_PERI0D[j]。如果是,即過濾周期到期,則執(zhí)行步驟S207 ; 如果否,即過濾周期沒有到期,則執(zhí)行步驟S208。步驟S207、對該中斷進(jìn)行計(jì)數(shù)清零。如果(CurTime - T_START[j])大于等于T_PERI0D[j],即當(dāng)前中斷的過濾周期到 期了,將C0UNT[j]清零,之后,執(zhí)行步驟S209。步驟S208、繼續(xù)對該中斷進(jìn)行計(jì)數(shù)。如果(CurTime - T_START[j])小于T_PERI0D[j],即當(dāng)前中斷的過濾周期沒有到 期,則COUNT [j]加1,之后,執(zhí)行步驟S209。步驟S209、判斷該中斷在本過濾周期內(nèi)的產(chǎn)生次數(shù)是否達(dá)到過濾閾值。即判斷 COUNT [j]是否大于等于 THRESH0LD1 [j]。如果沒有達(dá)到,則說明當(dāng)前中斷在本過濾周期內(nèi)產(chǎn)生的次數(shù)還沒有超出過濾閾 值,執(zhí)行步驟S210;
如果已經(jīng)達(dá)到,則說明當(dāng)前中斷在本過濾周期內(nèi)產(chǎn)生的次數(shù)已經(jīng)超出了過濾閾值,不 應(yīng)再調(diào)用驅(qū)動注冊的中斷處理程序,執(zhí)行步驟S211。步驟S210、調(diào)用驅(qū)動注冊的該中斷的中斷處理程序,進(jìn)行相應(yīng)的中斷處理。步驟S211、判斷該中斷在本過濾周期內(nèi)的產(chǎn)生次數(shù)是否達(dá)到告警閾值。即判斷 COUNT [j]是否大于等于 THRESH0LD2 [j]。如果達(dá)到,則執(zhí)行步驟S212 ;
如果沒有達(dá)到,則不做任何操作,該中斷處理流程結(jié)束。步驟S212、關(guān)閉當(dāng)前中斷,并在T_L0CK_START[j]中記錄當(dāng)前時間。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn)
通過應(yīng)用本發(fā)明實(shí)施例的技術(shù)方案,將所有的中斷通過統(tǒng)一中斷入口進(jìn)行接收和判斷 處理,只有在確定在相應(yīng)的過濾周期內(nèi)接收到的相應(yīng)類型的中斷沒有超過預(yù)設(shè)的過濾閾值 時,才對該中斷執(zhí)行相應(yīng)的正常處理流程,從而,避免大量的中斷抖動對處理資源的占用, 并且,由于通過統(tǒng)一中斷入口接收中斷,并進(jìn)行統(tǒng)一的過濾處理,降低了大量冗余的中斷處 理對處理器資源的占用,因此,即使在出現(xiàn)高頻中斷抖動的情況下,依舊可以保證處理器有 足夠的資源進(jìn)行其他正常的業(yè)務(wù)處理。為了實(shí)現(xiàn)本發(fā)明實(shí)施例的技術(shù)方案,本發(fā)明實(shí)施例還提供了一種中斷抖動的處理 設(shè)備,其結(jié)構(gòu)示意圖如圖3所示,具體包括
統(tǒng)一中斷入口 31,用于接收所有的中斷;
設(shè)置模塊32,用于設(shè)置各中斷類型所對應(yīng)的過濾周期和過濾閾值; 查詢模塊33,用于當(dāng)所述統(tǒng)一中斷入口 31接收到一個中斷時,查詢所述中斷的接收時 間是否處于所述設(shè)置模塊32設(shè)置的所述中斷的類型所對應(yīng)的過濾周期內(nèi);
判斷模塊34,用于在所述查詢模塊33的查詢結(jié)果為是時,判斷在所述過濾周期內(nèi)接收 到的所述類型的中斷的次數(shù)是否達(dá)到所述設(shè)置模塊32所設(shè)置的過濾閾值;處理模塊35,用于在所述判斷模塊34的判斷結(jié)果為沒有達(dá)到時,調(diào)用所述類型的中斷 所對應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理。其中,所述設(shè)置模塊32,還用于設(shè)置需要進(jìn)行過濾處理的中斷的類型;
所述查詢模塊33,還用于在查詢所述統(tǒng)一中斷入口 31接收到的中斷的接收時間是否 處于所述中斷的類型所對應(yīng)的過濾周期內(nèi)之前,確定所述中斷是否需要進(jìn)行過濾處理,如 果需要,則查詢所述中斷的接收時間是否處于所述中斷的類型所對應(yīng)的過濾周期內(nèi);
所述處理模塊35,還用于在所述查詢模塊33確定所述中斷不需要進(jìn)行過濾處理時,調(diào) 用所述中斷所對應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理。另一方面,所述處理模塊35,還用于在所述查詢模塊33的查詢結(jié)果為否時,調(diào)用 所述類型的中斷所對應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理。進(jìn)一步的,該處理設(shè)備還包括
計(jì)數(shù)模塊36,用于對所述統(tǒng)一中斷入口 31在所述設(shè)置模塊32所設(shè)置的過濾周期內(nèi)接 收到的所述類型的中斷進(jìn)行計(jì)數(shù),其中,當(dāng)所述查詢模塊33查詢所述中斷的接收時間處于 所述中斷的類型所對應(yīng)的過濾周期內(nèi)時,將在所述過濾周期內(nèi)接收到的所述類型的中斷的 次數(shù)增加1,或當(dāng)所述查詢模塊33查詢所述中斷的接收時間沒有處于所述中斷的類型所對 應(yīng)的過濾周期內(nèi)時,將在所述過濾周期內(nèi)接收到的所述類型的中斷的次數(shù)清零。另一方面,所述處理模塊35,還用于在所述判斷模塊34判斷在所述過濾周期內(nèi)接 收到的所述類型的中斷的次數(shù)已經(jīng)達(dá)到預(yù)設(shè)的過濾閾值時,結(jié)束對所述統(tǒng)一中斷入口 31 所接收到的中斷的處理,放棄調(diào)用所述類型的中斷所對應(yīng)的中斷處理程序。其中,所述設(shè)置模塊32,還用于設(shè)置告警閾值和最長中斷關(guān)閉時間;
所述處理模塊35,還用于當(dāng)所述判斷模塊34判斷在所述過濾周期內(nèi)接收到的所述類 型的中斷的次數(shù)已經(jīng)達(dá)到預(yù)設(shè)的過濾閾值時,判斷在所述過濾周期內(nèi)接收到的所述類型的 中斷的次數(shù)是否達(dá)到設(shè)置模塊32設(shè)置的告警閾值,如果沒有達(dá)到,結(jié)束對所述中斷的處 理,放棄調(diào)用所述類型的中斷所對應(yīng)的中斷處理程序,如果達(dá)到,關(guān)閉所述類型的中斷,記 錄所述中斷的接收時間,并對所述類型的中斷設(shè)置關(guān)閉標(biāo)識和關(guān)閉時間。相應(yīng)的,所述查詢模塊33,還用于在查詢所述統(tǒng)一中斷入口 31接收到的中斷的接 收時間是否處于所述中斷的類型所對應(yīng)的過濾周期內(nèi)之前,判斷是否存在設(shè)置關(guān)閉標(biāo)識的 中斷類型,如果存在,判斷當(dāng)前是否超過設(shè)置關(guān)閉標(biāo)識的中斷類型的關(guān)閉時間,如果已經(jīng)超 過,刪除所述關(guān)閉標(biāo)識,開啟所述中斷類型的處理。與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例具有以下優(yōu)點(diǎn)
通過應(yīng)用本發(fā)明實(shí)施例的技術(shù)方案,將所有的中斷通過統(tǒng)一中斷入口進(jìn)行接收和判斷 處理,只有在確定在相應(yīng)的過濾周期內(nèi)接收到的相應(yīng)類型的中斷沒有超過預(yù)設(shè)的過濾閾值 時,才對該中斷執(zhí)行相應(yīng)的正常處理流程,從而,避免大量的中斷抖動對處理資源的占用, 并且,由于通過統(tǒng)一中斷入口接收中斷,并進(jìn)行統(tǒng)一的過濾處理,降低了大量冗余的中斷處 理對處理器資源的占用,因此,即使在出現(xiàn)高頻中斷抖動的情況下,依舊可以保證處理器有 足夠的資源進(jìn)行其他正常的業(yè)務(wù)處理。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明實(shí)施例 可以通過硬件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺的方式來實(shí)現(xiàn)。基于這樣的理 解,本發(fā)明實(shí)施例的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是⑶-ROM,U盤,移動硬盤等)中,包括若干指令用以使得一臺計(jì) 算機(jī)設(shè)備(可以是個人計(jì)算機(jī),服務(wù)器,或網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明實(shí)施例各個實(shí)施場景所 述的方法。本領(lǐng)域技術(shù)人員可以理解附圖只是一個優(yōu)選實(shí)施場景的示意圖,附圖中的模塊或 流程并不一定是實(shí)施本發(fā)明實(shí)施例所必須的。本領(lǐng)域技術(shù)人員可以理解實(shí)施場景中的裝置中的模塊可以按照實(shí)施場景描述進(jìn) 行分布于實(shí)施場景的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施場景的一個或多個裝 置中。上述實(shí)施場景的模塊可以合并為一個模塊,也可以進(jìn)一步拆分成多個子模塊。上述本發(fā)明實(shí)施例序號僅僅為了描述,不代表實(shí)施場景的優(yōu)劣。以上公開的僅為本發(fā)明實(shí)施例的幾個具體實(shí)施場景,但是,本發(fā)明實(shí)施例并非局 限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明實(shí)施例的業(yè)務(wù)限制范圍。
權(quán)利要求
1.一種中斷抖動的處理方法,其特征在于,包括通過統(tǒng)一中斷入口接收所有的中斷;當(dāng)接收到一個中斷時,查詢所述中斷的接收時間是否處于所述中斷的類型所對應(yīng)的過 濾周期內(nèi);如果查詢結(jié)果為是,判斷在所述過濾周期內(nèi)接收到的所述類型的中斷的次數(shù)是否達(dá)到 預(yù)設(shè)的過濾閾值;如果沒有達(dá)到,調(diào)用所述類型的中斷所對應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理。
2.如權(quán)利要求1所述的方法,其特征在于,所述查詢所述中斷的接收時間是否處于所 述中斷的類型所對應(yīng)的過濾周期內(nèi)之前,還包括確定所述中斷是否需要進(jìn)行過濾處理;如果不需要,調(diào)用所述中斷所對應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理,如果需要,則 查詢所述中斷的接收時間是否處于所述中斷的類型所對應(yīng)的過濾周期內(nèi)。
3.如權(quán)利要求1所述的方法,其特征在于,所述查詢所述中斷的接收時間是否處于所 述中斷的類型所對應(yīng)的過濾周期內(nèi)之后,還包括如果查詢結(jié)果為否,調(diào)用所述類型的中斷所對應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理。
4.如權(quán)利要求1或3所述的方法,其特征在于,所述查詢所述中斷的接收時間是否處于 所述中斷的類型所對應(yīng)的過濾周期內(nèi)之后,還包括如果查詢結(jié)果為是,將在所述過濾周期內(nèi)接收到的所述類型的中斷的次數(shù)增加1 ;如果查詢結(jié)果為否,將在所述過濾周期內(nèi)接收到的所述類型的中斷的次數(shù)清零。
5.如權(quán)利要求1所述的方法,其特征在于,所述判斷在所述過濾周期內(nèi)接收到的所述 類型的中斷的次數(shù)是否達(dá)到預(yù)設(shè)的過濾閾值之后,還包括如果已經(jīng)達(dá)到,結(jié)束對所述中斷的處理,放棄調(diào)用所述類型的中斷所對應(yīng)的中斷處理 程序。
6.如權(quán)利要求5所述的方法,其特征在于,如果在所述過濾周期內(nèi)接收到的所述類型 的中斷的次數(shù)已經(jīng)達(dá)到預(yù)設(shè)的過濾閾值,還包括判斷在所述過濾周期內(nèi)接收到的所述類型的中斷的次數(shù)是否達(dá)到預(yù)設(shè)的告警閾值;如果沒有達(dá)到,結(jié)束對所述中斷的處理,放棄調(diào)用所述類型的中斷所對應(yīng)的中斷處理 程序;如果達(dá)到,關(guān)閉所述類型的中斷,記錄所述中斷的接收時間,并對所述類型的中斷設(shè)置 關(guān)閉標(biāo)識和關(guān)閉時間。
7.如權(quán)利要求6所述的方法,其特征在于,所述查詢所述中斷的接收時間是否處于所 述中斷的類型所對應(yīng)的過濾周期內(nèi)之前,還包括當(dāng)接收到一個中斷時,判斷是否存在設(shè)置關(guān)閉標(biāo)識的中斷類型;如果存在,判斷當(dāng)前是否超過設(shè)置關(guān)閉標(biāo)識的中斷類型的關(guān)閉時間;如果已經(jīng)超過,刪除所述關(guān)閉標(biāo)識,開啟所述中斷類型的處理。
8.—種中斷抖動的處理設(shè)備,其特征在于,包括統(tǒng)一中斷入口,用于接收所有的中斷;設(shè)置模塊,用于設(shè)置各中斷類型所對應(yīng)的過濾周期和過濾閾值;查詢模塊,用于當(dāng)所述統(tǒng)一中斷入口接收到一個中斷時,查詢所述中斷的接收時間是 否處于所述設(shè)置模塊設(shè)置的所述中斷的類型所對應(yīng)的過濾周期內(nèi);判斷模塊,用于在所述查詢模塊的查詢結(jié)果為是時,判斷在所述過濾周期內(nèi)接收到的 所述類型的中斷的次數(shù)是否達(dá)到所述設(shè)置模塊所設(shè)置的過濾閾值;處理模塊,用于在所述判斷模塊的判斷結(jié)果為沒有達(dá)到時,調(diào)用所述類型的中斷所對 應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理。
9.如權(quán)利要求8所述的設(shè)備,其特征在于,所述設(shè)置模塊,還用于設(shè)置需要進(jìn)行過濾處 理的中斷的類型;所述查詢模塊,還用于在查詢所述統(tǒng)一中斷入口接收到的中斷的接收時間是否處于所 述中斷的類型所對應(yīng)的過濾周期內(nèi)之前,確定所述中斷是否需要進(jìn)行過濾處理,如果需要, 則查詢所述中斷的接收時間是否處于所述中斷的類型所對應(yīng)的過濾周期內(nèi);所述處理模塊,還用于在所述查詢模塊確定所述中斷不需要進(jìn)行過濾處理時,調(diào)用所 述中斷所對應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理。
10.如權(quán)利要求8所述的設(shè)備,其特征在于,所述處理模塊,還用于在所述查詢模塊的 查詢結(jié)果為否時,調(diào)用所述類型的中斷所對應(yīng)的中斷處理程序?qū)λ鲋袛噙M(jìn)行處理。
11.如權(quán)利要求8或10所述的設(shè)備,其特征在于,還包括計(jì)數(shù)模塊,用于對所述統(tǒng)一中斷入口在所述設(shè)置模塊所設(shè)置的過濾周期內(nèi)接收到的所 述類型的中斷進(jìn)行計(jì)數(shù),其中,當(dāng)所述查詢模塊查詢所述中斷的接收時間處于所述中斷的 類型所對應(yīng)的過濾周期內(nèi)時,將在所述過濾周期內(nèi)接收到的所述類型的中斷的次數(shù)增加1, 或當(dāng)所述查詢模塊查詢所述中斷的接收時間沒有處于所述中斷的類型所對應(yīng)的過濾周期 內(nèi)時,將在所述過濾周期內(nèi)接收到的所述類型的中斷的次數(shù)清零。
12.如權(quán)利要求8所述的設(shè)備,其特征在于,所述處理模塊,還用于在所述判斷模塊判 斷在所述過濾周期內(nèi)接收到的所述類型的中斷的次數(shù)已經(jīng)達(dá)到預(yù)設(shè)的過濾閾值時,結(jié)束對 所述統(tǒng)一中斷入口所接收到的中斷的處理,放棄調(diào)用所述類型的中斷所對應(yīng)的中斷處理程 序。
13.如權(quán)利要求12所述的設(shè)備,其特征在于,所述設(shè)置模塊,還用于設(shè)置告警閾值和最長中斷關(guān)閉時間;所述處理模塊,還用于當(dāng)所述判斷模塊判斷在所述過濾周期內(nèi)接收到的所述類型的 中斷的次數(shù)已經(jīng)達(dá)到預(yù)設(shè)的過濾閾值時,判斷在所述過濾周期內(nèi)接收到的所述類型的中斷 的次數(shù)是否達(dá)到預(yù)設(shè)的告警閾值,如果沒有達(dá)到,結(jié)束對所述中斷的處理,放棄調(diào)用所述類 型的中斷所對應(yīng)的中斷處理程序,如果達(dá)到,關(guān)閉所述類型的中斷,記錄所述中斷的接收時 間,并對所述類型的中斷設(shè)置關(guān)閉標(biāo)識和關(guān)閉時間。
14.如權(quán)利要求13所述的設(shè)備,其特征在于,所述查詢模塊,還用于在查詢所述統(tǒng)一中斷入口接收到的中斷的接收時間是否處于所 述中斷的類型所對應(yīng)的過濾周期內(nèi)之前,判斷是否存在設(shè)置關(guān)閉標(biāo)識的中斷類型,如果存 在,判斷當(dāng)前是否超過設(shè)置關(guān)閉標(biāo)識的中斷類型的關(guān)閉時間,如果已經(jīng)超過,刪除所述關(guān)閉 標(biāo)識,開啟所述中斷類型的處理。
全文摘要
本發(fā)明實(shí)施例公開了一種中斷抖動的處理方法和設(shè)備,通過應(yīng)用本發(fā)明實(shí)施例的技術(shù)方案,將所有的中斷通過統(tǒng)一中斷入口進(jìn)行接收和判斷處理,只有在確定在相應(yīng)的過濾周期內(nèi)接收到的相應(yīng)類型的中斷沒有超過預(yù)設(shè)的過濾閾值時,才對該中斷執(zhí)行相應(yīng)的正常處理流程,從而,避免大量的中斷抖動對處理資源的占用,并且,由于通過統(tǒng)一中斷入口接收中斷,并進(jìn)行統(tǒng)一的過濾處理,降低了大量冗余的中斷處理對處理器資源的占用,因此,即使在出現(xiàn)高頻中斷抖動的情況下,依舊可以保證處理器有足夠的資源進(jìn)行其他正常的業(yè)務(wù)處理。
文檔編號G06F9/48GK102135912SQ20111008330
公開日2011年7月27日 申請日期2011年4月2日 優(yōu)先權(quán)日2011年4月2日
發(fā)明者蔣石竹 申請人:大唐移動通信設(shè)備有限公司