專利名稱::一種硬件中斷的處理方法和處理裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及中斷處理,特別涉及一種硬件中斷的處理方法和處理裝置。技術(shù)背景在現(xiàn)有的計(jì)算系統(tǒng)中,系統(tǒng)通常通過中斷請(qǐng)求函數(shù),如request—iqr(),為上層的應(yīng)用或客戶操作系統(tǒng)提供設(shè)備服務(wù)。中斷請(qǐng)求函數(shù)的參數(shù)中通常包括中斷號(hào)、中斷處理程序。同時(shí),現(xiàn)有技術(shù)中支持多個(gè)設(shè)備共享同一個(gè)中斷號(hào),所以在系統(tǒng)的中斷向量表中,一個(gè)中斷號(hào)下可以存在多個(gè)對(duì)應(yīng)的中斷處理程序。當(dāng)共享同一中斷號(hào)的設(shè)備中的一個(gè)設(shè)備發(fā)生中斷時(shí),系統(tǒng)通常調(diào)用中斷向量表中該中斷號(hào)下的所有中斷處理程序,從而因?yàn)橹袛嗵幚沓绦蚝彤a(chǎn)生中斷的設(shè)備不匹配而導(dǎo)致系統(tǒng)不穩(wěn)定等問題。在現(xiàn)有虛擬機(jī)技術(shù)中,客戶操作系統(tǒng)通過虛擬機(jī)監(jiān)視器(VMM)直接請(qǐng)求硬件設(shè)備的服務(wù)也已經(jīng)實(shí)現(xiàn)。例如,本申請(qǐng)人在中國(guó)專利申請(qǐng)?zhí)枮?00610128624.7,申請(qǐng)日為2006.8.29的專利申請(qǐng)說(shuō)明書中,公開了一種虛擬機(jī)系統(tǒng),在系統(tǒng)的虛擬機(jī)監(jiān)視器中維護(hù)了一中斷轉(zhuǎn)換模塊,中斷轉(zhuǎn)換模塊用于根據(jù)中斷轉(zhuǎn)換表將硬件設(shè)備的硬件中斷轉(zhuǎn)換為對(duì)應(yīng)客戶操作系統(tǒng)的虛擬中斷請(qǐng)求,并通知虛擬中斷控制器。其中,中斷轉(zhuǎn)換表包含硬件中斷,硬件設(shè)備,客戶操作系統(tǒng),虛擬中斷請(qǐng)求等信息。當(dāng)然,也存在其它的客戶操作系統(tǒng)請(qǐng)求硬件設(shè)備服務(wù)的具體實(shí)現(xiàn)方法。但是,如果多個(gè)硬件設(shè)備共用一個(gè)中斷號(hào),而各個(gè)硬件設(shè)備又被不同的客戶操作系統(tǒng)請(qǐng)求服務(wù),那么在一個(gè)硬件設(shè)備產(chǎn)生硬件中斷時(shí)候,該中斷就會(huì)發(fā)送給多個(gè)客戶操作系統(tǒng),從而導(dǎo)致一個(gè)系統(tǒng)收到多余的中斷。由于對(duì)中斷的處理和實(shí)際產(chǎn)生硬件中斷的硬件設(shè)備不匹配,造成系統(tǒng)和設(shè)備工作不正常,甚至死機(jī)。
發(fā)明內(nèi)容本發(fā)明要解決的一個(gè)技術(shù)問題是提供一種硬件中斷的處理方法,通過該方法,可以保證硬件設(shè)備產(chǎn)生的中斷被發(fā)送給正確的中斷處理程序。本發(fā)明提供的硬件中斷的處理方法,應(yīng)用于PCI/PC正總線架構(gòu)的計(jì)算系統(tǒng),包括如下步驟-A,在收到硬件中斷后,判斷該硬件中斷是否為共享中斷,如果不是,則將該中斷發(fā)送給對(duì)應(yīng)的中斷處理程序,否則,繼續(xù)步驟B;B,獲取該硬件中斷的共享設(shè)備標(biāo)識(shí);C,對(duì)于獲取的每一共享設(shè)備標(biāo)識(shí)對(duì)應(yīng)的設(shè)備,分別根據(jù)其PCI配置空間中狀態(tài)寄存器的中斷狀態(tài)判斷其是否產(chǎn)生中斷,如果是,則將該中斷發(fā)送給該設(shè)備的對(duì)應(yīng)的中斷處理程序,否則,不將該中斷發(fā)送給該設(shè)備的對(duì)應(yīng)的中斷處理程序。進(jìn)一步,在步驟A前,還包括如下步驟通過系統(tǒng)命令或者系統(tǒng)電源管理接口獲得系統(tǒng)中硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息。或者,系統(tǒng)中存儲(chǔ)有硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息。而步驟A中,根據(jù)系統(tǒng)中硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息判斷硬件中斷是否為共享中斷;步驟B中,根據(jù)系統(tǒng)中硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息獲得硬件中斷的共享設(shè)備標(biāo)識(shí)。本發(fā)明提供的硬件中斷的處理方法,當(dāng)接收到一硬件中斷時(shí),判斷該中斷是否為共享中斷;如果是,則分別判斷該中斷的共享設(shè)備是否產(chǎn)生了中斷,當(dāng)該設(shè)備產(chǎn)生了中斷時(shí)將該中斷發(fā)送給請(qǐng)求該設(shè)備服務(wù)的中斷處理程序,否則,不將該中斷發(fā)送給請(qǐng)求該設(shè)備服務(wù)的中斷處理程序,從而保證硬件設(shè)備產(chǎn)生的中斷被發(fā)送給正確的中斷處理程序,避免中斷處理與產(chǎn)生硬件中斷的硬件設(shè)備不匹配而引發(fā)的問題。本發(fā)明要解決的另一個(gè)技術(shù)問題是提供一種硬件中斷的處理裝置,通過該裝置,可以保證硬件設(shè)備產(chǎn)生的中斷進(jìn)行正確的中斷處理。本發(fā)明提供的硬件中斷的處理裝置,包括如下模塊共享中斷判斷模塊,用于當(dāng)接收到硬件中斷時(shí),判斷該中斷是否為共享中斷,如果是,則將該中斷發(fā)送到共享設(shè)備獲取模塊;共享設(shè)備獲取模塊,用于接收中斷共享模塊發(fā)送的中斷,獲取該中斷的共享設(shè)備標(biāo)識(shí),將中斷和共享設(shè)備標(biāo)識(shí)發(fā)送給設(shè)備中斷產(chǎn)生判斷模塊;設(shè)備中斷產(chǎn)生判斷模塊,用于接收共享設(shè)備獲取模塊發(fā)送的中斷和共享設(shè)備標(biāo)識(shí),根據(jù)每一共享設(shè)備標(biāo)識(shí)對(duì)應(yīng)的設(shè)備的PCI配置空間中狀態(tài)寄存器中的中斷狀態(tài)判斷其是否產(chǎn)生了硬件中斷,如果是,則調(diào)用對(duì)應(yīng)的中斷處理程序?qū)χ袛噙M(jìn)行處理,如果不是,則不調(diào)用對(duì)應(yīng)的中斷處理程序。進(jìn)一步,本發(fā)明提供的中斷處理裝置還可以包括中斷信息存儲(chǔ)模塊,用于存儲(chǔ)中斷號(hào)和硬件設(shè)備標(biāo)識(shí)的對(duì)應(yīng)信息;中斷共享判斷模塊根據(jù)該對(duì)應(yīng)信息判斷中斷號(hào)是否為共享中斷,共享設(shè)備獲取模塊根據(jù)該對(duì)應(yīng)信息獲得該中斷的共享設(shè)備標(biāo)識(shí)。本發(fā)明提供的中斷處理裝置還可以包括中斷信息獲取模塊,用于獲取系統(tǒng)中斷號(hào)和硬件設(shè)備標(biāo)識(shí)的對(duì)應(yīng)信息,并將該對(duì)應(yīng)信息發(fā)送給中斷共享判斷模塊和共享設(shè)備獲取模塊;中斷共享判斷模塊根據(jù)接收的該對(duì)應(yīng)信息判斷中斷是否為共享中斷,共享設(shè)備獲取模塊根據(jù)接收的該對(duì)應(yīng)信息獲得中斷的共享設(shè)備標(biāo)識(shí)。本發(fā)明提供的硬件中斷的處理裝置,當(dāng)接收到硬件中斷時(shí),通過中斷共享判斷模塊判斷該中斷是否為共享中斷,如果是,則由共享設(shè)備獲取模塊獲得該中斷的共享設(shè)備標(biāo)識(shí),并進(jìn)一步通過設(shè)備中斷產(chǎn)生判斷模塊判斷共享設(shè)備是否產(chǎn)生了中斷,并對(duì)于產(chǎn)生了中斷的共享設(shè)備,將向請(qǐng)求該設(shè)備服務(wù)的中斷處理程序發(fā)送中斷,而對(duì)應(yīng)未產(chǎn)生中斷的共享設(shè)備,則不向請(qǐng)求該設(shè)備服務(wù)的中斷處理程序發(fā)送中斷。通過上述的硬件中斷的處理裝置,可以對(duì)硬件設(shè)備產(chǎn)生的中斷進(jìn)行正確的中斷處理,避免中斷處理與產(chǎn)生硬件中斷的硬件設(shè)備不匹配而引發(fā)的問題。圖1所示為本發(fā)明一種硬件中斷的處理方法的流程圖;圖2所示為本發(fā)明的一種硬件中斷的處理裝置的結(jié)構(gòu)圖;圖3所示為本發(fā)明的虛擬機(jī)系統(tǒng)中硬件中斷處理裝置應(yīng)用例的結(jié)構(gòu)圖。具體實(shí)施方式在下面的描述中,將共用一個(gè)中斷的硬件設(shè)備稱為該中斷的共享設(shè)備,而該中斷稱為共享中斷;硬件設(shè)備標(biāo)識(shí)用來(lái)表示對(duì)應(yīng)的硬件設(shè)備,中斷號(hào)用來(lái)表示對(duì)應(yīng)的硬件中斷。在中斷請(qǐng)求函數(shù)的輸入?yún)?shù)中,除了中斷號(hào)和中斷處理程序,還包含對(duì)應(yīng)的設(shè)備名稱或者設(shè)備標(biāo)識(shí)。如圖1所示,為本發(fā)明提供的一種硬件中斷的處理方法,應(yīng)用于PCI總線架構(gòu)的計(jì)算系統(tǒng),包括如下步驟步驟IOI,通過中斷控制器獲得硬件中斷。當(dāng)硬件設(shè)備發(fā)生中斷后,系統(tǒng)內(nèi)核通過中斷控制器獲得對(duì)應(yīng)于該硬件中斷的中斷號(hào)。步驟102,判斷硬件中斷是否為共享中斷,如果是共享中斷則繼續(xù)執(zhí)行步驟103;否則執(zhí)行步驟105:將該中斷發(fā)送給對(duì)應(yīng)的中斷處理程序。系統(tǒng)內(nèi)核在獲得中斷號(hào)后,判斷該中斷號(hào)對(duì)應(yīng)的硬件中斷是否為共享中斷。一種實(shí)現(xiàn)方式是通過系統(tǒng)命令,獲得系統(tǒng)中硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息;如果有多個(gè)硬件設(shè)備標(biāo)識(shí)與該中斷號(hào)對(duì)應(yīng),則判定該中斷號(hào)對(duì)應(yīng)的硬件中斷是共享中斷,否則,判定該中斷號(hào)對(duì)應(yīng)的硬件中斷不是共享中斷。例如,在Linux系統(tǒng)下,通過調(diào)用系統(tǒng)命令"cat/proc/interrupts",獲得如表1所示的信息<table>tableseeoriginaldocumentpage7</column></row><table>1如果系統(tǒng)內(nèi)核獲得的中斷號(hào)為16,通過表1的信息可以得知,與中斷號(hào)16對(duì)應(yīng)的硬件設(shè)備標(biāo)識(shí)包括HDAIntel、ehci—hcd:usbl、ehci—hcd:usb2、uhci一hcd:usb3和uhci一hcd:usb5,即存在多個(gè)硬件設(shè)備標(biāo)識(shí)與該中斷號(hào)對(duì)應(yīng),則可以判定該中斷號(hào)對(duì)應(yīng)的硬件中斷為共享中斷。如果系統(tǒng)內(nèi)核獲得的中斷號(hào)為19,通過表1的信息可以得知,與中斷號(hào)19對(duì)應(yīng)的硬件設(shè)備標(biāo)識(shí)包括ethO,即只有一個(gè)硬件設(shè)備標(biāo)識(shí)與該中斷號(hào)對(duì)應(yīng),則可以判定該中斷號(hào)對(duì)應(yīng)的硬件中斷不是共享中斷??梢栽诿看闻袛嘁挥布袛嗍欠駷楣蚕碇袛嗲?,運(yùn)行系統(tǒng)命令獲得上述硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息。但是,由于硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息在系統(tǒng)啟動(dòng)后通常不會(huì)隨意改變,所以,可以將上述對(duì)應(yīng)信息保存在系統(tǒng)中,這樣當(dāng)需要判斷一硬件中斷是否為共享中斷時(shí),可以根據(jù)系統(tǒng)中存儲(chǔ)的對(duì)應(yīng)信息進(jìn)行判斷,而不需要每次判斷時(shí)都運(yùn)行系統(tǒng)命令,從而提高判斷一硬件中斷是否為共享中斷的效率。如果獲得的硬件中斷不是共享中斷,則可以直接調(diào)用該中斷的處理程序,否則,繼續(xù)執(zhí)行步驟103。步驟103,獲得硬件中斷的共享設(shè)備標(biāo)識(shí)。通過上述步驟102中的描述可知,通過系統(tǒng)命令可以獲得硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息,通過該對(duì)應(yīng)信息,就可以獲得一硬件中斷的共享設(shè)備標(biāo)識(shí)。步驟104,對(duì)于獲取的每一共享設(shè)備標(biāo)識(shí)對(duì)應(yīng)的設(shè)備,分別根據(jù)其設(shè)備PCI配置空間的中斷狀態(tài)判斷其是否產(chǎn)生了中斷,如果是,則將該中斷發(fā)送給請(qǐng)求該設(shè)備服務(wù)的對(duì)應(yīng)的中斷處理程序,否則,不將該中斷發(fā)送給請(qǐng)求該設(shè)備服務(wù)的對(duì)應(yīng)的中斷處理程序。對(duì)于獲取的每一個(gè)共享設(shè)備標(biāo)識(shí)對(duì)應(yīng)的設(shè)備,讀取該設(shè)備PCI配置空間的PCI狀態(tài)寄存器(PCISTS,PCIStatusRegister)的中斷狀態(tài)(INTS,InterruptStatus),如果該中斷狀態(tài)表明該設(shè)備產(chǎn)生了中斷,則調(diào)用與該設(shè)備對(duì)應(yīng)的中斷處理程序,否則,不調(diào)用該設(shè)備的中斷處理程序。而對(duì)于共享設(shè)備的中斷狀態(tài)的判斷,可以依次執(zhí)行,在系統(tǒng)處理能力允許的情況下,也可以并行執(zhí)行。本發(fā)明提供的方法,優(yōu)選的方式是應(yīng)用于PCI、PCIE總線架構(gòu)的計(jì)算系統(tǒng)中,在PCI/PCIE總線架構(gòu)的計(jì)算系統(tǒng)中,通常只有PCI設(shè)備可以共用一個(gè)中斷,或者說(shuō),共享設(shè)備通常是PCI設(shè)備。本發(fā)明的硬件中斷的處理方法的一個(gè)實(shí)施例是,系統(tǒng)中存儲(chǔ)了中斷號(hào)和硬件設(shè)備標(biāo)識(shí)的對(duì)應(yīng)信息,在虛擬機(jī)監(jiān)視器獲得硬件中斷對(duì)應(yīng)的中斷號(hào)后,執(zhí)行如下步驟通過存儲(chǔ)的中斷號(hào)和硬件設(shè)備標(biāo)識(shí)的對(duì)應(yīng)信息判斷該硬件中斷是否為共享中斷,如果不是,則調(diào)用該硬件中斷的處理程序,如果是,則獲得對(duì)應(yīng)于該中斷號(hào)的所有硬件設(shè)備標(biāo)識(shí);其中,硬件中斷和硬件設(shè)備的對(duì)應(yīng)信息,可以通過系統(tǒng)的命令獲得,例如Limix下的cat命令或者通過系統(tǒng)的電源管理接口獲得。本發(fā)明的硬件中斷處理方法在虛擬機(jī)系統(tǒng)中的一個(gè)應(yīng)用例,包括如下步驟首先,當(dāng)硬件設(shè)備發(fā)生中斷后,虛擬機(jī)監(jiān)視器通過中斷控制器獲得對(duì)應(yīng)于該硬件中斷的中斷號(hào)。然后,虛擬機(jī)監(jiān)視器判斷硬件中斷是否為共享中斷,如果是共享中斷則繼續(xù)執(zhí)行下面的步驟;否則將該中斷發(fā)送給對(duì)應(yīng)的客戶操作系統(tǒng)。其次,通過步驟103中的方法獲得硬件中斷的共享設(shè)備標(biāo)識(shí)。進(jìn)一步,對(duì)于獲取的每一共享設(shè)備標(biāo)識(shí)對(duì)應(yīng)的設(shè)備,分別根據(jù)其設(shè)備PCI配置空間的中斷狀態(tài)判斷其是否產(chǎn)生了中斷,如果是,則將該中斷發(fā)送給請(qǐng)求該設(shè)備服務(wù)的對(duì)應(yīng)的客戶操作系統(tǒng),否則,不將該中斷發(fā)送給請(qǐng)求該設(shè)備服務(wù)的對(duì)應(yīng)的客戶操作系統(tǒng)。本發(fā)明提供的硬件中斷的處理方法,當(dāng)接收到一硬件中斷時(shí),判斷該中斷是否為共享中斷;如果是,則分別判斷該中斷的共享設(shè)備是否產(chǎn)生了中斷,如果是,將該中斷發(fā)送給請(qǐng)求該設(shè)備服務(wù)的中斷處理程序,否則,不將該中斷發(fā)送給請(qǐng)求該設(shè)備服務(wù)的中斷處理程序,從而保證硬件設(shè)備產(chǎn)生的中斷被發(fā)送給正確的中斷處理程序,避免中斷處理與產(chǎn)生硬件中斷的硬件設(shè)備不匹配而引發(fā)的問題。如圖2所示,為本發(fā)明提供的一種硬件中斷的處理裝置,應(yīng)用于計(jì)算系統(tǒng)。該中斷處理裝置包括共享中斷判斷模塊、共享設(shè)備獲取模塊和設(shè)備中斷產(chǎn)生判斷模塊。系統(tǒng)內(nèi)核將收到的硬件中斷發(fā)送給該中斷處理裝置,該裝置的各個(gè)模塊的具體描述如下共享中斷判斷模塊,用于判斷一硬件中斷是否為共享中斷,如果不是,則調(diào)用該中斷的中斷處理程序;如果是共享中斷,則將該中斷發(fā)送到共享設(shè)備獲取模塊。對(duì)一硬件中斷是否為共享中斷的判斷,可以首先調(diào)用系統(tǒng)命令,獲得中斷號(hào)與硬件設(shè)備標(biāo)識(shí)的對(duì)應(yīng)信息,然后檢查是否有多個(gè)硬件設(shè)備標(biāo)識(shí)與表示該硬件中斷的中斷號(hào)對(duì)應(yīng),如果是,則為共享中斷,否則,不是共享中斷。上述系統(tǒng)命令在Linux系統(tǒng)下是cat命令。也可以通過電源管理接口判斷一硬件中斷是否為共享中斷。共享設(shè)備獲取模塊,用于接收中斷共享模塊發(fā)送的中斷,并獲取該中斷的共享設(shè)備標(biāo)識(shí),并把中斷和共享設(shè)備標(biāo)識(shí)發(fā)送給設(shè)備中斷產(chǎn)生判斷模塊。對(duì)于一硬件中斷的共享設(shè)備的獲取,可以通過系統(tǒng)提供的系統(tǒng)命令,如linux系統(tǒng)下的cat命令,或者電源管理接口獲得。設(shè)備中斷產(chǎn)生判斷模塊,用于接收共享設(shè)備獲取模塊發(fā)送的中斷和共享設(shè)備標(biāo)識(shí),讀取共享設(shè)備PCI配置空間的PCI狀態(tài)寄存器的中斷狀態(tài)來(lái)判斷該設(shè)備是否產(chǎn)生了中斷,如果是,則將向請(qǐng)求該設(shè)備服務(wù)的對(duì)應(yīng)的中斷處理程序發(fā)送中斷,如果不是,則不向請(qǐng)求該設(shè)備服務(wù)的對(duì)應(yīng)的中斷處理程序發(fā)送中斷。進(jìn)一步,中斷處理裝置還可以包含中斷信息存儲(chǔ)模塊,該模塊用于存儲(chǔ)系統(tǒng)中中斷號(hào)和硬件設(shè)備標(biāo)識(shí)的對(duì)應(yīng)信息。當(dāng)系統(tǒng)內(nèi)核收到硬件中斷后,共享中斷判斷模塊根據(jù)中斷信息存儲(chǔ)模塊中的信息判斷硬件中斷是否為共享中斷,共享設(shè)備獲取模塊根據(jù)中斷信息存儲(chǔ)模塊中的信息獲取硬件中斷的所有共享設(shè)備標(biāo)識(shí)。中斷處理裝置還可以包括中斷信息獲取模塊,該模塊用于獲取系統(tǒng)中斷號(hào)和硬件設(shè)備標(biāo)識(shí)的對(duì)應(yīng)信息,并將該對(duì)應(yīng)信息發(fā)送給中斷共享判斷模塊和共享設(shè)備獲取模塊。中斷共享判斷模塊根據(jù)接收的該對(duì)應(yīng)信息判斷中斷是否為共享中斷,共享設(shè)備獲取模塊根據(jù)接收的該對(duì)應(yīng)信息獲得對(duì)應(yīng)于中斷的共享設(shè)備標(biāo)識(shí)。如圖3所示,為本發(fā)明的中斷處理裝置在虛擬機(jī)系統(tǒng)中的一個(gè)應(yīng)用例,其中虛擬機(jī)監(jiān)視器對(duì)應(yīng)于系統(tǒng)內(nèi)核。共享中斷判斷模塊,用于判斷一硬件中斷是否為共享中斷,如果不是,則調(diào)用該中斷的中斷處理程序;如果是共享中斷,則將該中斷發(fā)送到共享設(shè)備獲取模塊。共享設(shè)備獲取模塊,用于接收中斷共享模塊發(fā)送的中斷,并獲取該中斷的共享設(shè)備標(biāo)識(shí),并把中斷和共享設(shè)備標(biāo)識(shí)發(fā)送給設(shè)備中斷產(chǎn)生判斷模塊。而設(shè)備中斷產(chǎn)生判斷模塊用于接收共享設(shè)備獲取模塊發(fā)送的中斷和共享設(shè)備標(biāo)識(shí),讀取共享設(shè)備PCI配置空間的PCI狀態(tài)寄存器的中斷狀態(tài)來(lái)判斷該設(shè)備是否產(chǎn)生了中斷,如果是,則將向請(qǐng)求該設(shè)備服務(wù)的對(duì)應(yīng)的客戶操作系統(tǒng)發(fā)送虛擬中斷,如果不是,則不向請(qǐng)求該設(shè)備服務(wù)的對(duì)應(yīng)的客戶操作系統(tǒng)發(fā)送虛擬中斷。本發(fā)明提供的硬件中斷的處理裝置,當(dāng)接收到硬件中斷時(shí),通過中斷共享判斷模塊判斷該中斷是否為共享中斷,如果是,則由共享設(shè)備獲取模塊獲得該中斷的共享設(shè)備標(biāo)識(shí),并進(jìn)一步通過設(shè)備中斷產(chǎn)生判斷模塊判斷共享設(shè)備是否產(chǎn)生了中斷,并對(duì)于產(chǎn)生了中斷的共享設(shè)備,向?qū)?yīng)的請(qǐng)求該設(shè)備服務(wù)的中斷處理程序發(fā)送中斷,對(duì)于未產(chǎn)生中斷的共享設(shè)備,不向請(qǐng)求該設(shè)備服務(wù)的中斷處理程序發(fā)送中斷,從而可以對(duì)硬件設(shè)備產(chǎn)生的中斷進(jìn)行正確的中斷處理,避免中斷處理與產(chǎn)生硬件中斷的硬件設(shè)備不匹配而引發(fā)的問題。本發(fā)明中的計(jì)算系統(tǒng),包括個(gè)人電腦(PC)、服務(wù)器、筆記本電腦、掌上電腦、個(gè)人數(shù)字助理等具有計(jì)算能力、操作系統(tǒng)和外部硬件的設(shè)備和系統(tǒng)。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍為準(zhǔn)。權(quán)利要求1.一種硬件中斷共享的處理方法,應(yīng)用于PCI/PCIE總線架構(gòu)的計(jì)算系統(tǒng),其特征在于,包括如下步驟A,在收到硬件中斷后,判斷該硬件中斷是否為共享中斷,如果不是,則將該中斷發(fā)送給對(duì)應(yīng)的中斷處理程序,否則,繼續(xù)步驟B;B,獲取該硬件中斷的共享設(shè)備標(biāo)識(shí);C,對(duì)于獲取的每一共享設(shè)備標(biāo)識(shí)對(duì)應(yīng)的設(shè)備,分別根據(jù)其PCI配置空間中狀態(tài)寄存器的中斷狀態(tài)判斷其是否產(chǎn)生中斷,如果是,則將該中斷發(fā)送給該設(shè)備的對(duì)應(yīng)的中斷處理程序,否則,不將該中斷發(fā)送給該設(shè)備的對(duì)應(yīng)的中斷處理程序。2.如權(quán)利要求1所述的方法,其特征在于,步驟A中,根據(jù)系統(tǒng)中硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息判斷硬件中斷是否為共享中斷;步驟B中,根據(jù)系統(tǒng)中硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息獲得硬件中斷的共享設(shè)備標(biāo)識(shí)。3.如權(quán)利要求2所述的方法,其特征在于,在步驟A前,還包括如下步驟通過系統(tǒng)命令或者系統(tǒng)電源管理接口獲得系統(tǒng)中硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息。4.如權(quán)利要求2所述的方法,其特征在于,系統(tǒng)中存儲(chǔ)有硬件設(shè)備標(biāo)識(shí)和中斷號(hào)的對(duì)應(yīng)信息。5.如權(quán)利要求1至4中任意一項(xiàng)所述的方法,其特征在于,所述的計(jì)算系統(tǒng)為虛擬機(jī)系統(tǒng)。6.—種硬件中斷的處理裝置,應(yīng)用于計(jì)算機(jī)系統(tǒng),其特征在于,包括如下模塊共享中斷判斷模塊,用于當(dāng)接收到硬件中斷時(shí),判斷該中斷是否為共享中斷,如果是,則將該中斷發(fā)送到共享設(shè)備獲取模塊;共享設(shè)備獲取模塊,用于接收中斷共享模塊發(fā)送的中斷,獲取該中斷的共享設(shè)備標(biāo)識(shí),將中斷和共享設(shè)備標(biāo)識(shí)發(fā)送給設(shè)備中斷產(chǎn)生判斷模塊;設(shè)備中斷產(chǎn)生判斷模塊,用于接收共享設(shè)備獲取模塊發(fā)送的中斷和共享設(shè)備標(biāo)識(shí),根據(jù)每一共享設(shè)備標(biāo)識(shí)對(duì)應(yīng)的設(shè)備的PCI配置空間中狀態(tài)寄存器中的中斷狀態(tài)判斷其是否產(chǎn)生了硬件中斷,如果是,則調(diào)用對(duì)應(yīng)的中斷處理程序?qū)χ袛噙M(jìn)行處理,如果不是,則不調(diào)用對(duì)應(yīng)的中斷處理程序。7.如權(quán)利要求6所述的處理裝置,其特征在于,還包括中斷信息存儲(chǔ)模塊,用于存儲(chǔ)中斷號(hào)和硬件設(shè)備標(biāo)識(shí)的對(duì)應(yīng)信息;中斷共享判斷模塊根據(jù)該對(duì)應(yīng)信息判斷中斷號(hào)是否為共享中斷,共享設(shè)備獲取模塊根據(jù)該對(duì)應(yīng)信息獲得該中斷的共享設(shè)備標(biāo)識(shí)。8.如權(quán)利要求6所述的處理裝置,其特征在于,還包括中斷信息獲取模塊,用于獲取系統(tǒng)中斷號(hào)和硬件設(shè)備標(biāo)識(shí)的對(duì)應(yīng)信息,并將該對(duì)應(yīng)信息發(fā)送給中斷共享判斷模塊和共享設(shè)備獲取模塊;中斷共享判斷模塊根據(jù)接收的該對(duì)應(yīng)信息判斷中斷是否為共享中斷,共享設(shè)備獲取模塊根據(jù)接收的該對(duì)應(yīng)信息獲得中斷的共享設(shè)備標(biāo)識(shí)。9.如權(quán)利要求5至8中任意一項(xiàng)所述的處理裝置,其特征在于,所述計(jì)算系統(tǒng)為虛擬機(jī)系統(tǒng)。全文摘要本發(fā)明公開了一種硬件中斷處理裝置和處理方法,用于共享中斷的處理。該硬件中斷的處理方法包括步驟在收到硬件中斷后,判斷該硬件中斷是否為共享中斷,如果不是,則將該中斷發(fā)送給對(duì)應(yīng)的中斷處理程序,否則,繼續(xù);獲取該硬件中斷的共享設(shè)備標(biāo)識(shí);對(duì)于獲取的每一共享設(shè)備標(biāo)識(shí)對(duì)應(yīng)的設(shè)備,分別根據(jù)其PCI配置空間中狀態(tài)寄存器的中斷狀態(tài)判斷其是否產(chǎn)生中斷,如果是,則將該中斷發(fā)送給該設(shè)備的對(duì)應(yīng)的中斷處理程序,否則,不將該中斷發(fā)送給該設(shè)備的對(duì)應(yīng)的中斷處理程序。通過本發(fā)明的方法,可以避免中斷處理與產(chǎn)生硬件中斷的硬件設(shè)備不匹配而引發(fā)的問題。文檔編號(hào)G06F13/20GK101211323SQ200610169779公開日2008年7月2日申請(qǐng)日期2006年12月28日優(yōu)先權(quán)日2006年12月28日發(fā)明者良湯申請(qǐng)人:聯(lián)想(北京)有限公司