專(zhuān)利名稱(chēng):一種主機(jī)響應(yīng)、停止響應(yīng)及處理外設(shè)中斷的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)系統(tǒng),尤其涉及一種主機(jī)響應(yīng)、停止響應(yīng)及處理外設(shè) 中斷的方法。
背景技術(shù):
在外設(shè)和主機(jī)Host (主機(jī))端的同步調(diào)試以及應(yīng)用中,主機(jī)響應(yīng)外設(shè)產(chǎn) 生的中斷一直是一個(gè)比較困難的瓶頸。這是因?yàn)橐话阃庠O(shè)產(chǎn)生的中斷只能被 其自己所偵測(cè)到,并通過(guò)響應(yīng)中斷服務(wù)子程序來(lái)進(jìn)行功能實(shí)現(xiàn),而主機(jī)是無(wú) 法直接得知外設(shè)是在何時(shí)產(chǎn)生中斷,又是在何時(shí)結(jié)束中斷的。
在進(jìn)行同步調(diào)試時(shí),現(xiàn)有的主機(jī)檢測(cè)外設(shè)中斷結(jié)束的方法往往是讓外設(shè) 結(jié)束中斷服務(wù)后向其自身的一塊存儲(chǔ)器里更新標(biāo)志位,而主機(jī)則循環(huán)的通過(guò) 通信端口發(fā)送命令讀取外設(shè)中這塊存儲(chǔ)器中的標(biāo)志位。這種方法對(duì)于那些中 斷服務(wù)程序需要較長(zhǎng)時(shí)間的情況是很不理想的,因?yàn)橥庠O(shè)在中斷結(jié)束之前不 會(huì)響應(yīng)主機(jī)的命令,因此如果此時(shí)主機(jī)循環(huán)通過(guò)通信口發(fā)送命令來(lái)檢測(cè)這塊 存儲(chǔ)器,外設(shè)就會(huì)把主機(jī)的指令都存在一塊緩存里,如果中斷時(shí)間較長(zhǎng),則 主機(jī)不斷的向外設(shè)發(fā)送命令,將會(huì)造成緩存溢出,從而造成嚴(yán)重的后果。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問(wèn)題是提供一種主機(jī)響應(yīng)、停止響應(yīng)及處理外設(shè)中 斷的方法,避免了由于外設(shè)中斷時(shí)間過(guò)長(zhǎng)而導(dǎo)致的緩存溢出的問(wèn)題。
為解決上述問(wèn)題,本發(fā)明提供了一種主機(jī)響應(yīng)外設(shè)中斷的方法,包括
所述主機(jī)上保存有可以響應(yīng)的每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí);
所述外設(shè)在產(chǎn)生中斷后、且在調(diào)用對(duì)應(yīng)的中斷服務(wù)子程序進(jìn)行功能實(shí)現(xiàn) 前,向其與所述主機(jī)之間的通信端口輸出一中斷產(chǎn)生信息,其中包含所述中
斷的中斷類(lèi)型標(biāo)識(shí);當(dāng)所述主積4企測(cè)到所述通信端口收到所述中斷產(chǎn)生信息
時(shí),判斷本地是否保存有所述中斷產(chǎn)生信息中攜帶的中斷類(lèi)型標(biāo)識(shí);若有, 則響應(yīng)所述中斷。
進(jìn)一步地,上述方法還可具有以下特征
所述主機(jī)上還保存有可以響應(yīng)的每一類(lèi)中斷的中斷使能標(biāo)志,每一類(lèi)中 斷的中斷使能標(biāo)志和該類(lèi)中斷對(duì)應(yīng)的中斷類(lèi)型標(biāo)識(shí)——對(duì)應(yīng),其中,所述中 斷使能標(biāo)志的值用于表示所述主機(jī)此時(shí)是否可以響應(yīng)此類(lèi)中斷;
當(dāng)所述主機(jī)判斷出本地保存有所述中斷產(chǎn)生信息中攜帶的中斷類(lèi)型標(biāo)識(shí) 后,且在響應(yīng)所述中斷之前,還判斷本地保存的該中斷類(lèi)型標(biāo)識(shí)對(duì)應(yīng)的中斷 使能標(biāo)志的值是否表示主機(jī)此時(shí)可以響應(yīng)此類(lèi)中斷;若是,則所述主機(jī)響應(yīng) 所述中斷。
進(jìn)一步地,上述方法還可具有以下特征
所述主機(jī)上還保存有每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí)及該類(lèi)中斷對(duì)應(yīng)的中斷 服務(wù)程序入口地址的對(duì)應(yīng)關(guān)系;
所述主機(jī)響應(yīng)所述中斷是指,所述主機(jī)根據(jù)所述中斷產(chǎn)生信息中攜帶的 中斷類(lèi)型標(biāo)識(shí)查找到對(duì)應(yīng)的中斷服務(wù)程序的入口地址后執(zhí)行相應(yīng)的中斷服務(wù) 程序。
為解決上述問(wèn)題,本發(fā)明還提供了一種主機(jī)停止響應(yīng)外設(shè)中斷的方法, 包括
所述主機(jī)上保存有每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí);
所述外設(shè)結(jié)束中斷后,向其與所述主機(jī)之間的通信端口輸出一中斷結(jié)束 信息,其中包含所述中斷的中斷類(lèi)型標(biāo)識(shí);
當(dāng)所述主機(jī)檢測(cè)到所述通信端口收到所述中斷結(jié)束信息時(shí),若判斷出本 地保存有所述中斷類(lèi)型標(biāo)識(shí),則停止響應(yīng)所述中斷。
進(jìn)一步地,上述方法還可具有以下特征
所述主機(jī)上還保存有可以響應(yīng)的每一類(lèi)中斷的中斷服務(wù)程序入口地址,
每一類(lèi)中斷的中斷服務(wù)程序入口地址和該類(lèi)中斷對(duì)應(yīng)的中斷類(lèi)型標(biāo)識(shí)一一對(duì) 應(yīng);
所述主機(jī)停止響應(yīng)所述中斷是指,所述主機(jī)根據(jù)所述中斷結(jié)束信息中攜 帶的中斷類(lèi)型標(biāo)識(shí)查找到所述中斷對(duì)應(yīng)的中斷服務(wù)程序的入口地址后停止執(zhí) 4亍相應(yīng)的中斷月良務(wù)程序。
進(jìn)一步地,上述方法還可具有以下特征
所述外設(shè)向所述通信接口發(fā)送的中斷結(jié)束信息中還包括所述外設(shè)的標(biāo)
識(shí);
如在所述外設(shè)產(chǎn)生中斷前,所述主機(jī)上運(yùn)行有所述外設(shè)對(duì)應(yīng)的主機(jī)服務(wù) 應(yīng)用線程,則在所迷外設(shè)產(chǎn)生中斷時(shí),所述主機(jī)阻塞所述主機(jī)服務(wù)應(yīng)用線程
的運(yùn)行;在所述主機(jī)停止響應(yīng)所述中斷后,所述主機(jī)根據(jù)接收到的所述外設(shè)
的標(biāo)識(shí)取消阻塞所述對(duì)應(yīng)的主機(jī)服務(wù)應(yīng)用線程的運(yùn)行。
為解決上述問(wèn)題,本發(fā)明還提供了一種主機(jī)處理外設(shè)中斷的方法,包括
所述主機(jī)上保存有可以響應(yīng)的每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí);
所述外設(shè)在產(chǎn)生中斷后且在調(diào)用對(duì)應(yīng)的中斷服務(wù)子程序進(jìn)行功能實(shí)現(xiàn) 前,或在中斷結(jié)束后,向其與所述主機(jī)之間的通信端口輸出一信息,其中包 含所述中斷的中斷類(lèi)型標(biāo)識(shí)和狀態(tài)指示標(biāo)識(shí),所述狀態(tài)指示標(biāo)識(shí)的值相應(yīng)的 表示所述中斷已產(chǎn)生或已結(jié)束;
當(dāng)所述主機(jī)檢測(cè)到所述通信端口收到所述信息時(shí),如根據(jù)所述狀態(tài)指示 標(biāo)識(shí)的值判斷出所述中斷已產(chǎn)生,則判斷本地是否保存有所述信息中攜帶的 中斷類(lèi)型標(biāo)識(shí);若有,則所述主機(jī)響應(yīng)所述中斷;
若根據(jù)所述狀態(tài)指示標(biāo)識(shí)的值判斷出所述外設(shè)中斷的狀態(tài)為已結(jié)束,則 判斷本地是否保存有所述信息中攜帶的中斷類(lèi)型標(biāo)識(shí);若有,則停止響應(yīng)所 述中斷。
進(jìn)一步地,上述方法還可具有以下特征
所述主機(jī)上還保存有可以響應(yīng)的每一類(lèi)中斷的中斷使能標(biāo)志,每一類(lèi)中 斷的中斷使能標(biāo)志和該類(lèi)中斷對(duì)應(yīng)的中斷類(lèi)型標(biāo)識(shí)——對(duì)應(yīng),其中,所述中
斷使能標(biāo)志的值用于表示所述主機(jī)此時(shí)是否可以響應(yīng)此類(lèi)中斷;
當(dāng)所述主機(jī)根據(jù)所述狀態(tài)指示標(biāo)識(shí)的值判斷出所述中斷已產(chǎn)生且本地保 存有所述信息中攜帶的中斷類(lèi)型標(biāo)識(shí)后,且在響應(yīng)所述中斷之前,還判斷本 地保存的該中斷類(lèi)型標(biāo)識(shí)對(duì)應(yīng)的中斷使能標(biāo)志的值是否表示所述主機(jī)此時(shí)可
以響應(yīng)此類(lèi)中斷;若是,則所述主;I/L響應(yīng)所述中斷。 進(jìn)一步地,上述方法還可具有以下特征
所述主機(jī)上還保存有每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí)及該類(lèi)中斷對(duì)應(yīng)的中斷 服務(wù)程序入口地址的對(duì)應(yīng)關(guān)系;
所述主機(jī)響應(yīng)所述中斷是指,所述主機(jī)根據(jù)所述信息中攜帶的中斷類(lèi)型 標(biāo)識(shí)查找到對(duì)應(yīng)的中斷服務(wù)程序的入口地址后執(zhí)行相應(yīng)的中斷服務(wù)程序;
所述主機(jī)停止響應(yīng)所述中斷是指,所述主機(jī)根據(jù)所述信息中攜帶的中斷
中斷服務(wù)程序。
進(jìn)一步地,上述方法還可具有以下特征
所述外設(shè)向所述通信接口發(fā)送的信息中還包括所述外設(shè)的標(biāo)識(shí);
如在所述外設(shè)產(chǎn)生中斷前,所述主機(jī)上運(yùn)行有所述外設(shè)對(duì)應(yīng)的主機(jī)服務(wù) 應(yīng)用線程,則在所述主機(jī)響應(yīng)所述中斷前,所述主機(jī)根據(jù)接收到的所述外設(shè) 的標(biāo)識(shí)阻塞所述對(duì)應(yīng)的主機(jī)服務(wù)應(yīng)用線程的運(yùn)行;在所述主機(jī)停止響應(yīng)所述 中斷后,所述主機(jī)根據(jù)接收到的所述外設(shè)的標(biāo)識(shí)取消阻塞所述對(duì)應(yīng)的主機(jī)服 務(wù)應(yīng)用線程的運(yùn)行。
本發(fā)明利用外設(shè)輸出的特殊信息使主機(jī)端能檢測(cè)到外設(shè)中斷的產(chǎn)生或結(jié) 束,大大簡(jiǎn)化了同步調(diào)試的難度,且使得主機(jī)端能開(kāi)發(fā)出更多的應(yīng)用。而且 在本發(fā)明中,把中斷更新標(biāo)志位設(shè)定在了主機(jī)側(cè),通過(guò)外設(shè)的打印信息來(lái)同 步更新該標(biāo)志位,解決了由于外設(shè)中斷時(shí)間過(guò)長(zhǎng)而導(dǎo)致的緩存溢出的問(wèn)題。
圖1為本發(fā)明實(shí)施例中主機(jī)與外設(shè)的連接方式示意圖;
圖2為本發(fā)明實(shí)施例中主機(jī)處理外設(shè)中斷的方法示意圖。
具體實(shí)施例方式
下面將結(jié)合附圖及實(shí)施例對(duì)本發(fā)明的技術(shù)方案進(jìn)行更詳細(xì)的說(shuō)明。
如圖1所示, 一般來(lái)說(shuō),主機(jī)需要通過(guò)特定的通信端口 (例如USB,串 口等)在遵循一定通信協(xié)議的前提下與外設(shè)進(jìn)行通信和設(shè)置。
當(dāng)外設(shè)產(chǎn)生中斷后,會(huì)調(diào)用對(duì)應(yīng)的中斷服務(wù)子程序來(lái)進(jìn)行功能實(shí)現(xiàn)。主 機(jī)要想進(jìn)行中斷響應(yīng)應(yīng)用,就必須在外設(shè)產(chǎn)生中斷后且在調(diào)用對(duì)應(yīng)的中斷服 務(wù)子程序前獲知該中斷已產(chǎn)生并據(jù)此扭^f亍相應(yīng)的中斷響應(yīng)。
如圖2所示,根據(jù)上述構(gòu)想,可以在外設(shè)產(chǎn)生中斷后且調(diào)用對(duì)應(yīng)的中斷 服務(wù)子程序進(jìn)行功能實(shí)現(xiàn)前或在中斷服務(wù)子程序結(jié)束后,讓其向通信端口輸 出 一信息,其中包含可以唯一標(biāo)識(shí)出該中斷的類(lèi)型的中斷類(lèi)型標(biāo)識(shí)及一狀態(tài) 指示標(biāo)識(shí),該中斷類(lèi)型標(biāo)識(shí)的值與每一類(lèi)中斷的對(duì)應(yīng)關(guān)系在主機(jī)和外設(shè)進(jìn)行 通信前已經(jīng)協(xié)商好,而狀態(tài)指示標(biāo)識(shí)的值用于指示此外設(shè)中斷已開(kāi)始或已結(jié) 束(其中,攜帶表示中斷已開(kāi)始的信息可認(rèn)為是中斷產(chǎn)生信息,攜帶表示中 斷已結(jié)束的信息可認(rèn)為是中斷結(jié)束信息)。在主機(jī)側(cè)存有可以響應(yīng)的每一類(lèi) 中斷的中斷類(lèi)型標(biāo)識(shí)及對(duì)應(yīng)的中斷服務(wù)程序入口地址的對(duì)應(yīng)關(guān)系。此外,還 可在主機(jī)側(cè)存儲(chǔ)可以響應(yīng)的每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí)及相應(yīng)的中斷使能標(biāo) 志的對(duì)應(yīng)關(guān)系,其中,中斷使能標(biāo)志的值用于指示主機(jī)此時(shí)是否可以響應(yīng)此 類(lèi)中斷,如在某一段時(shí)間內(nèi),主機(jī)不需要響應(yīng)某個(gè)(或些)中斷,則該主機(jī) 會(huì)將對(duì)應(yīng)的中斷使能標(biāo)志的值置為不可以響應(yīng),反之亦然。
主機(jī)不斷的對(duì)上述通信端口進(jìn)行檢測(cè)。當(dāng)檢測(cè)到該通信端口收到上述信 息時(shí),如根據(jù)其中的狀態(tài)指示標(biāo)識(shí)判斷出外設(shè)中斷已產(chǎn)生,則在該主機(jī)上也 保存有該信息攜帶的中斷類(lèi)型標(biāo)識(shí),則該主機(jī)根據(jù)相應(yīng)的中斷服務(wù)程序的入 口地址執(zhí)行相應(yīng)的中斷服務(wù)程序,實(shí)現(xiàn)主機(jī)側(cè)中斷響應(yīng)。如該主機(jī)上還保存 有每一類(lèi)中斷對(duì)應(yīng)的中斷使能標(biāo)志,則在根據(jù)接收到的信息中的狀態(tài)指示標(biāo) 識(shí)判斷出外設(shè)中斷已產(chǎn)生,且在該主機(jī)上也保存有該信息攜帶的中斷類(lèi)型標(biāo) 識(shí)外,還需進(jìn)一步判斷該中斷類(lèi)型標(biāo)識(shí)所對(duì)應(yīng)的中斷使能標(biāo)志的值是否表示 主機(jī)此時(shí)可以響應(yīng)該類(lèi)中斷;若是可以響應(yīng)的中斷,則該主機(jī)根據(jù)相應(yīng)的中
斷服務(wù)程序的入口地址執(zhí)行相應(yīng)的中斷服務(wù)程序,實(shí)現(xiàn)主機(jī)側(cè)中斷響應(yīng)。如 主機(jī)根據(jù)上述消息中的狀態(tài)指示標(biāo)識(shí)判斷出外設(shè)中斷已結(jié)束,則在本地查找 是否保存有該信息攜帶的中斷類(lèi)型標(biāo)識(shí),如有,則根據(jù)相應(yīng)的中斷服務(wù)程序 的入口地址停止執(zhí)行相應(yīng)的中斷服務(wù)程序,結(jié)束主機(jī)對(duì)該外設(shè)中斷的響應(yīng)。
而在主機(jī)側(cè)與外設(shè)進(jìn)行同步調(diào)試時(shí),由于外設(shè)中斷的產(chǎn)生是由主機(jī)所觸 發(fā)的,因此主機(jī)側(cè)可以直接得知外設(shè)中斷在何時(shí)開(kāi)始,但結(jié)束時(shí)間則無(wú)法得 知。因此,外設(shè)在結(jié)束中斷后,與上述步驟一樣,向通信端口輸出其中斷類(lèi) 型標(biāo)識(shí)和表示中斷已結(jié)束的狀態(tài)指示標(biāo)識(shí)。而主機(jī)側(cè)的后續(xù)步驟同上,在此 不再進(jìn)行贅述。(即主機(jī)側(cè)更新中斷更新標(biāo)志,退出等待中斷結(jié)束階段,實(shí) 現(xiàn)與外設(shè)的同步)
如在上述外設(shè)產(chǎn)生中斷前,主機(jī)上還運(yùn)行有該外設(shè)對(duì)應(yīng)的主機(jī)服務(wù)應(yīng)用 線程(以下簡(jiǎn)稱(chēng)主線程),則當(dāng)該外設(shè)在向主機(jī)發(fā)送中斷產(chǎn)生信息或中斷結(jié) 束信息時(shí),還需在該信息中攜帶該外設(shè)的標(biāo)識(shí),以便該主機(jī)根據(jù)該外設(shè)標(biāo)識(shí) 對(duì)相應(yīng)的主線程進(jìn)行阻塞或取消阻塞操作。要實(shí)現(xiàn)阻塞或取消阻塞主線程可 通過(guò)下述方法來(lái)實(shí)現(xiàn)在該主機(jī)上為該對(duì)應(yīng)的主線程設(shè)置一阻塞標(biāo)志,該阻 塞標(biāo)志的值表示主機(jī)此時(shí)是否在阻塞此主線程。當(dāng)主機(jī)在響應(yīng)外設(shè)中斷或主 機(jī)觸發(fā)外設(shè)進(jìn)行中斷時(shí),將該阻塞標(biāo)志的值置為阻塞主線程且不斷地對(duì)該標(biāo)
志進(jìn)行檢測(cè);當(dāng)主機(jī)得知外設(shè)中斷結(jié)束后,將該阻塞標(biāo)志的值置為阻塞取消。 當(dāng)主機(jī)檢測(cè)到該阻塞標(biāo)志的值表示阻塞取消時(shí),主線程跳出阻塞狀態(tài),繼續(xù) 控制外設(shè)工作。
綜上所述,為了得知外設(shè)中斷的狀態(tài),主機(jī)側(cè)需不斷的檢測(cè)其與該外設(shè) 的通信端口。在軟件上,主機(jī)側(cè)可以通過(guò)在主機(jī)服務(wù)應(yīng)用線程之外,另外開(kāi) 啟一個(gè)4企測(cè)通信端口的讀端口線程來(lái)實(shí)現(xiàn)。該線程是一個(gè)死循環(huán),可以不斷 的讀取該通信端口信息。
當(dāng)然,本發(fā)明還可有其他多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的 但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種主機(jī)響應(yīng)外設(shè)中斷的方法,其特征在于,所述主機(jī)上保存有可以響應(yīng)的每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí);所述外設(shè)在產(chǎn)生中斷后、且在調(diào)用對(duì)應(yīng)的中斷服務(wù)子程序進(jìn)行功能實(shí)現(xiàn)前,向其與所述主機(jī)之間的通信端口輸出一中斷產(chǎn)生信息,其中包含所述中斷的中斷類(lèi)型標(biāo)識(shí);當(dāng)所述主機(jī)檢測(cè)到所述通信端口收到所述中斷產(chǎn)生信息時(shí),判斷本地是否保存有所述中斷產(chǎn)生信息中攜帶的中斷類(lèi)型標(biāo)識(shí);若有,則響應(yīng)所述中斷。
2、 如權(quán)利要求l所述的方法,其特征在于,所述主機(jī)上還保存有可以響應(yīng)的每一類(lèi)中斷的中斷使能標(biāo)志,每一類(lèi)中 斷的中斷使能標(biāo)志和該類(lèi)中斷對(duì)應(yīng)的中斷類(lèi)型標(biāo)識(shí)一一對(duì)應(yīng),其中,所述中 斷使能標(biāo)志的值用于表示所述主機(jī)此時(shí)是否可以響應(yīng)此類(lèi)中斷;當(dāng)所述主機(jī)判斷出本地保存有所述中斷產(chǎn)生信息中攜帶的中斷類(lèi)型標(biāo)識(shí) 后,且在響應(yīng)所述中斷之前,還判斷本地保存的該中斷類(lèi)型標(biāo)識(shí)對(duì)應(yīng)的中斷 使能標(biāo)志的值是否表示主機(jī)此時(shí)可以響應(yīng)此類(lèi)中斷;若是,則所述主機(jī)響應(yīng) 所述中斷。
3、 如權(quán)利要求1或2所述的方法,其特征在于,所述主機(jī)上還保存有每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí)及該類(lèi)中斷對(duì)應(yīng)的中斷 服務(wù)程序入口地址的對(duì)應(yīng)關(guān)系;所述主機(jī)響應(yīng)所述中斷是指,所述主機(jī)根據(jù)所述中斷產(chǎn)生信息中攜帶的 程序。
4、 一種主機(jī)停止響應(yīng)外設(shè)中斷的方法,其特征在于, 所述主機(jī)上保存有每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí);所述外設(shè)結(jié)束中斷后,向其與所述主^L之間的通信端口輸出一中斷結(jié)束 信息,其中包含所述中斷的中斷類(lèi)型標(biāo)識(shí); 當(dāng)所述主機(jī)檢測(cè)到所述通信端口收到所述中斷結(jié)束信息時(shí),若判斷出本 地保存有所述中斷類(lèi)型標(biāo)識(shí),則停止響應(yīng)所述中斷。
5、 如權(quán)利要求4所述的方法,其特征在于,所述主機(jī)上還保存有可以響應(yīng)的每一類(lèi)中斷的中斷服務(wù)程序入口地址, 每一類(lèi)中斷的中斷服務(wù)程序入口地址和該類(lèi)中斷對(duì)應(yīng)的中斷類(lèi)型標(biāo)識(shí)——對(duì) 應(yīng);所述主機(jī)停止響應(yīng)所述中斷是指,所述主機(jī)根據(jù)所述中斷結(jié)束信息中攜 帶的中斷類(lèi)型標(biāo)識(shí)查找到所述中斷對(duì)應(yīng)的中斷服務(wù)程序的入口地址后停止執(zhí) 行相應(yīng)的中斷服務(wù)程序。
6、 如權(quán)利要求4或5所述的方法,其特征在于,所述外設(shè)向所述通信接口發(fā)送的中斷結(jié)束信息中還包括所述外設(shè)的標(biāo)識(shí);如在所述外設(shè)產(chǎn)生中斷前,所述主機(jī)上運(yùn)行有所述外設(shè)對(duì)應(yīng)的主機(jī)服務(wù) 應(yīng)用線程,則在所述外設(shè)產(chǎn)生中斷時(shí),所述主機(jī)阻塞所述主機(jī)服務(wù)應(yīng)用線程的運(yùn)行;在所述主機(jī)停止響應(yīng)所述中斷后,所述主機(jī)根據(jù)接收到的所述外設(shè) 的標(biāo)識(shí)取消阻塞所述對(duì)應(yīng)的主才幾服務(wù)應(yīng)用線程的運(yùn)行。
7、 一種主機(jī)處理外設(shè)中斷的方法,其特征在于,所述主機(jī)上保存有可以響應(yīng)的每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí);所述外設(shè)在產(chǎn)生中斷后且在調(diào)用對(duì)應(yīng)的中斷服務(wù)子程序進(jìn)行功能實(shí)現(xiàn) 前,或在中斷結(jié)束后,向其與所述主機(jī)之間的通信端口輸出一信息,其中包 含所述中斷的中斷類(lèi)型標(biāo)識(shí)和狀態(tài)指示標(biāo)識(shí),所述狀態(tài)指示標(biāo)識(shí)的值相應(yīng)的 表示所述中斷已產(chǎn)生或已結(jié)束;當(dāng)所述主機(jī)檢測(cè)到所述通信端口收到所述信息時(shí),如根據(jù)所述狀態(tài)指示 標(biāo)識(shí)的值判斷出所述中斷已產(chǎn)生,則判斷本地是否保存有所述信息中攜帶的 中斷類(lèi)型標(biāo)識(shí);若有,則所述主機(jī)響應(yīng)所述中斷;若根據(jù)所述狀態(tài)指示標(biāo)識(shí)的值判斷出所述外設(shè)中斷的狀態(tài)為已結(jié)束,則 判斷本地是否保存有所述信息中攜帶的中斷類(lèi)型標(biāo)識(shí);若有,則停止響應(yīng)所 述中斷。
8、 如權(quán)利要求7所述的方法,其特征在于,所述主機(jī)上還保存有可以響應(yīng)的每一類(lèi)中斷的中斷使能標(biāo)志,每一類(lèi)中 斷的中斷使能標(biāo)志和該類(lèi)中斷對(duì)應(yīng)的中斷類(lèi)型標(biāo)識(shí)一一對(duì)應(yīng),其中,所述中 斷使能標(biāo)志的值用于表示所述主機(jī)此時(shí)是否可以響應(yīng)此類(lèi)中斷;當(dāng)所述主機(jī)根據(jù)所述狀態(tài)指示標(biāo)識(shí)的值判斷出所述中斷已產(chǎn)生且本地保 存有所述信息中攜帶的中斷類(lèi)型標(biāo)識(shí)后,且在響應(yīng)所述中斷之前,還判斷本 地保存的該中斷類(lèi)型標(biāo)識(shí)對(duì)應(yīng)的中斷使能標(biāo)志的值是否表示所述主機(jī)此時(shí)可 以響應(yīng)此類(lèi)中斷;若是,則所述主^^響應(yīng)所述中斷。
9、 如權(quán)利要求7或8所述的方法,其特征在于,所述主機(jī)上還保存有每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí)及該類(lèi)中斷對(duì)應(yīng)的中斷 服務(wù)程序入口地址的對(duì)應(yīng)關(guān)系;所述主機(jī)響應(yīng)所述中斷是指,所述主機(jī)根據(jù)所述信息中攜帶的中斷類(lèi)型所述主機(jī)停止響應(yīng)所述中斷是指,所述主機(jī)根據(jù)所述信息中攜帶的中斷 類(lèi)型標(biāo)識(shí)查找到所述中斷對(duì)應(yīng)的中斷服務(wù)程序的入口地址后停止執(zhí)行相應(yīng)的 中斷服務(wù)程序。
10、 如權(quán)利要求7所述的方法,其特征在于,所述外設(shè)向所述通信接口發(fā)送的信息中還包括所述外設(shè)的標(biāo)識(shí);如在所述外設(shè)產(chǎn)生中斷前,所述主機(jī)上運(yùn)行有所述外設(shè)對(duì)應(yīng)的主機(jī)服務(wù) 應(yīng)用線程,則在所述主機(jī)響應(yīng)所述中斷前,所述主機(jī)根據(jù)接收到的所述外設(shè) 的標(biāo)識(shí)阻塞所述對(duì)應(yīng)的主機(jī)服務(wù)應(yīng)用線程的運(yùn)行;在所述主機(jī)停止響應(yīng)所迷 中斷后,所述主機(jī)根據(jù)接收到的所述外設(shè)的標(biāo)識(shí)取消阻塞所述對(duì)應(yīng)的主機(jī)服 務(wù)應(yīng)用線程的運(yùn)行。
全文摘要
主機(jī)處理外設(shè)中斷的方法,包括主機(jī)上保存有可以響應(yīng)的每一類(lèi)中斷的中斷類(lèi)型標(biāo)識(shí);外設(shè)在產(chǎn)生中斷后且在調(diào)用對(duì)應(yīng)的中斷服務(wù)子程序進(jìn)行功能實(shí)現(xiàn)前,或在中斷結(jié)束后,向其與主機(jī)之間的通信端口輸出一信息,其中包含該中斷的中斷類(lèi)型標(biāo)識(shí)和狀態(tài)指示標(biāo)識(shí),狀態(tài)指示標(biāo)識(shí)的值相應(yīng)的表示中斷已產(chǎn)生或已結(jié)束;當(dāng)主機(jī)檢測(cè)到通信端口收到信息時(shí),如根據(jù)狀態(tài)指示標(biāo)識(shí)的值判斷出中斷已產(chǎn)生,則判斷本地是否保存有信息中攜帶的中斷類(lèi)型標(biāo)識(shí);若有,則響應(yīng)該中斷;若根據(jù)狀態(tài)指示標(biāo)識(shí)的值判斷出外設(shè)中斷的狀態(tài)為已結(jié)束,則判斷本地是否保存有信息中攜帶的中斷類(lèi)型標(biāo)識(shí);若有,則停止響應(yīng)中斷。采用本發(fā)明,解決了由于外設(shè)中斷時(shí)間過(guò)長(zhǎng)而導(dǎo)致的緩存溢出問(wèn)題。
文檔編號(hào)G06F9/46GK101373443SQ20081022274
公開(kāi)日2009年2月25日 申請(qǐng)日期2008年9月23日 優(yōu)先權(quán)日2008年9月23日
發(fā)明者蔣亞誠(chéng), 韜 謝 申請(qǐng)人:北京中星微電子有限公司