亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種將中斷處理程序底半部搬移到應(yīng)用層的方法及應(yīng)用的制作方法

文檔序號(hào):6492677閱讀:418來(lái)源:國(guó)知局
一種將中斷處理程序底半部搬移到應(yīng)用層的方法及應(yīng)用的制作方法
【專利摘要】本發(fā)明涉及一種將中斷處理程序底半部搬移到應(yīng)用層的方法,以及基于所述方法的一種在應(yīng)用層對(duì)中斷處理程序底半部進(jìn)行處理的方法。本發(fā)明的有益效果如下:(1)對(duì)中斷處理程序的修改變得簡(jiǎn)單,只需在應(yīng)用層修改應(yīng)用程序即可,不涉及到內(nèi)核層的修改,對(duì)研發(fā)人員的要求比較低;(2)對(duì)中斷處理程序的修改調(diào)試工作變得靈活,開(kāi)銷小。只需要應(yīng)用開(kāi)發(fā)人員參與即可,不需要驅(qū)動(dòng)開(kāi)發(fā)人員和應(yīng)用開(kāi)發(fā)人員協(xié)同工作;(3)中斷產(chǎn)生后,應(yīng)用程序設(shè)置的中斷事件回調(diào)函數(shù)被調(diào)用,該回調(diào)函數(shù)進(jìn)行中斷處理,在形式上與內(nèi)核層的中斷處理函數(shù)完全一致,從應(yīng)用程序的角度來(lái)講,就像在應(yīng)用層直接開(kāi)發(fā)中斷處理程序一樣。
【專利說(shuō)明】一種將中斷處理程序底半部搬移到應(yīng)用層的方法及應(yīng)用
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及Iinux下的中斷處理機(jī)制,更具體地說(shuō),涉及一種將中斷處理程序底半部搬移到應(yīng)用層的方法,以及基于所述方法的一種在應(yīng)用層對(duì)中斷處理程序底半部進(jìn)行處理的方法。
【背景技術(shù)】
[0002]Linux將中斷處理程序分解為兩個(gè)半部:頂半部(top half)和底半部(bottomhalf)。頂半部完成盡可能少的比較緊急的功能,它往往只是簡(jiǎn)單地讀取寄存器中的中斷狀態(tài)并清除中斷標(biāo)志后就進(jìn)行“登記中斷”的工作。這樣,頂半部執(zhí)行的速度就會(huì)很快,可以服務(wù)更多的中斷請(qǐng)求。接下來(lái)比較費(fèi)時(shí)的任務(wù)就可以交給底半部來(lái)完成,可以說(shuō),中斷處理的底半部完成中斷事件的絕大多數(shù)任務(wù),幾乎做了中斷處理程序所有的事情。Linux下中斷處理底半部的實(shí)現(xiàn)機(jī)制主要有tasklet,工作隊(duì)列和軟中斷。
[0003]不管底半部采用什么機(jī)制實(shí)現(xiàn),他都是在驅(qū)動(dòng)程序中實(shí)現(xiàn)的,也就是說(shuō)在內(nèi)核模式下實(shí)現(xiàn)的。如果需要對(duì)中斷處理程序進(jìn)行修改,譬如因?yàn)檐囕v環(huán)境的不同對(duì)里程脈沖統(tǒng)計(jì)的方法的修改,因?yàn)檐囕v環(huán)境的不同對(duì)傳感器信號(hào)去抖方法的修改等,則需要在內(nèi)核模式下修改和調(diào)試驅(qū)動(dòng)程序。這樣帶來(lái)的問(wèn)題是,一是修改難度大,需要在內(nèi)核層修改,對(duì)研發(fā)人員的要求高;二是不夠靈活、開(kāi)銷大,因?yàn)轵?qū)動(dòng)程序處于操作系統(tǒng)和應(yīng)用程序的中間層,每次修改都需要涉及到驅(qū)動(dòng)程序開(kāi)發(fā)人員和應(yīng)用開(kāi)發(fā)人員的配合聯(lián)調(diào),花費(fèi)的人力資源多。
[0004]中國(guó)發(fā)明專利申請(qǐng)200810117341.1提供一種實(shí)現(xiàn)中斷底半部機(jī)制的方法及嵌入式系統(tǒng),其中,方法包括:嵌入式操作系統(tǒng)收到中斷請(qǐng)求后,執(zhí)行中斷操作,轉(zhuǎn)到中斷處理頂半部模塊;所述中斷處理頂半部模塊執(zhí)行中斷處理程序后,轉(zhuǎn)到底半部中斷管理任務(wù)模塊;所述管理任務(wù)模塊執(zhí)行底半部管理任務(wù),所述底半部管理任務(wù)為嵌入式操作系統(tǒng)的具有高于常規(guī)任務(wù)的優(yōu)先級(jí)的系統(tǒng)任務(wù),所述底半部管理任務(wù)調(diào)用中斷處理底半部模塊;所述中斷處理底半部模塊執(zhí)行中斷處理底半部程序。本發(fā)明通過(guò)嵌入式操作系統(tǒng)的具有最高任務(wù)優(yōu)先級(jí)的系統(tǒng)任務(wù)來(lái)完成中斷頂半部和底半部的銜接,簡(jiǎn)單易行、響應(yīng)快速、代碼量很少,更適合于嵌入式應(yīng)用領(lǐng)域。
[0005]上述發(fā)明專利申請(qǐng)的技術(shù)方案主要用于解決了中斷頂半部和底半部銜接效果差的問(wèn)題,但仍使用現(xiàn)有的中斷處理機(jī)制,同樣存在不足:一、修改難度大,需要在內(nèi)核層修改,對(duì)研發(fā)人員的要求高;二、不夠靈活、開(kāi)銷大,因?yàn)轵?qū)動(dòng)程序處于操作系統(tǒng)和應(yīng)用程序的中間層,每次修改都需要涉及到驅(qū)動(dòng)程序開(kāi)發(fā)人員和應(yīng)用開(kāi)發(fā)人員的配合聯(lián)調(diào),花費(fèi)的人力資源多。

【發(fā)明內(nèi)容】

[0006]本發(fā)明的目的在于克服現(xiàn)有技術(shù)的不足,提供一種對(duì)中斷處理程序的修改變得簡(jiǎn)單,對(duì)中斷處理程序的修改調(diào)試工作變得靈活,開(kāi)銷小的一種Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,并將其用于在應(yīng)用層處理中斷底半部的應(yīng)用中。
[0007]本發(fā)明的技術(shù)方案如下:
[0008]一種Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,步驟如下:
[0009]I)內(nèi)核層驅(qū)動(dòng)程序完成中斷頂半部處理后,對(duì)中斷事件進(jìn)行廣播通知;
[0010]2)應(yīng)用層動(dòng)態(tài)庫(kù)程序接收內(nèi)核層驅(qū)動(dòng)程序發(fā)出的中斷事件廣播通知;
[0011]3)應(yīng)用層動(dòng)態(tài)庫(kù)程序創(chuàng)建全局鏈表、回調(diào)函數(shù)注冊(cè)接口,全局鏈表用于存儲(chǔ)向回調(diào)函數(shù)注冊(cè)接口注冊(cè)的回調(diào)函數(shù);
[0012]4)應(yīng)用層應(yīng)用程序定義中斷底半部處理函數(shù),并向回調(diào)函數(shù)注冊(cè)接口進(jìn)行注冊(cè),存儲(chǔ)于全局鏈表,形成中斷底半部處理回調(diào)函數(shù);
[0013]5)應(yīng)用層動(dòng)態(tài)庫(kù)程序取出全局鏈表中的中斷底半部處理回調(diào)函數(shù),完成中斷底半部處理。
[0014]作為優(yōu)選,內(nèi)核層驅(qū)動(dòng)程序位于系統(tǒng)的內(nèi)核層,應(yīng)用層動(dòng)態(tài)庫(kù)程序、應(yīng)用層應(yīng)用程序位于系統(tǒng)的應(yīng)用層。
[0015]作為優(yōu)選,步驟I)具體為:
[0016]1.1)內(nèi)核層驅(qū)動(dòng)程序向系統(tǒng)內(nèi)核注冊(cè)中斷頂半部處理函數(shù),用于接收硬件中斷信號(hào)并進(jìn)行頂半部處理;
[0017]1.2)內(nèi)核層驅(qū)動(dòng)程序創(chuàng)建第一 netlink套接字,用于向系統(tǒng)廣播中斷事件。
[0018]作為優(yōu)選,步驟2)具體為:應(yīng)用層動(dòng)態(tài)庫(kù)程序創(chuàng)建第二 netlink套接字、廣播通知接收線程,用于接收內(nèi)核層驅(qū)動(dòng)程序發(fā)出的中斷事件廣播通知。
[0019]作為優(yōu)選,全局鏈表中存儲(chǔ)的是頭指針,鏈表中每個(gè)節(jié)點(diǎn)存儲(chǔ)的是一個(gè)函數(shù)的調(diào)用地址。
[0020]作為優(yōu)選,回調(diào)函數(shù)注冊(cè)接口為系統(tǒng)動(dòng)態(tài)庫(kù)向應(yīng)用層提供的接口,通過(guò)回調(diào)函數(shù)注冊(cè)接口將向其注冊(cè)的函數(shù)加入到全局鏈表中。
[0021]作為優(yōu)選,步驟1.1)具體為:將自定義的函數(shù)作為request_irq函數(shù)的參數(shù)傳入到系統(tǒng)內(nèi)核,自定義的函數(shù)即可中斷頂半部處理函數(shù),并用于接收硬件中斷信號(hào)并進(jìn)行中斷頂半部處理。
[0022]作為優(yōu)選,步驟1.2)具體為:利用netlink_kernel_create函數(shù),通過(guò)第一netlink套接字對(duì)象向系統(tǒng)內(nèi)核、應(yīng)用層發(fā)送廣播通知。
[0023]作為優(yōu)選,廣播通知接收線程的實(shí)現(xiàn)具體為:創(chuàng)建自定義線程,并在該自定義線程中循環(huán)讀取第二 netlink套接字對(duì)象實(shí)現(xiàn)對(duì)中斷事件廣播通知的接收。
[0024]一種在應(yīng)用層對(duì)中斷處理程序底半部進(jìn)行處理的方法,步驟如下:
[0025]A)中斷產(chǎn)生;
[0026]B)將中斷處理程序底半部搬移到應(yīng)用層;
[0027]C)在應(yīng)用層對(duì)中斷底半部進(jìn)行處理;
[0028]步驟B)利用將中斷處理程序底半部搬移到應(yīng)用層的方法進(jìn)行操作。
[0029]本發(fā)明的有益效果如下:
[0030](I)對(duì)中斷處理程序的修改變得簡(jiǎn)單,只需在應(yīng)用層修改應(yīng)用程序即可,不涉及到內(nèi)核層的修改,對(duì)研發(fā)人員的要求比較低;
[0031](2)對(duì)中斷處理程序的修改調(diào)試工作變得靈活,開(kāi)銷小。只需要應(yīng)用開(kāi)發(fā)人員參與即可,不需要驅(qū)動(dòng)開(kāi)發(fā)人員和應(yīng)用開(kāi)發(fā)人員協(xié)同工作;
[0032](3)中斷產(chǎn)生后,應(yīng)用程序設(shè)置的中斷事件回調(diào)函數(shù)被調(diào)用,該回調(diào)函數(shù)進(jìn)行中斷處理,在形式上與內(nèi)核層的中斷處理函數(shù)完全一致,從應(yīng)用程序的角度來(lái)講,就像在應(yīng)用層直接開(kāi)發(fā)中斷處理程序一樣。
【專利附圖】

【附圖說(shuō)明】
[0033]圖1是本發(fā)明所述的方法應(yīng)用的系統(tǒng)框架示意圖。
【具體實(shí)施方式】
[0034]以下結(jié)合附圖及實(shí)施例對(duì)本發(fā)明進(jìn)行進(jìn)一步的詳細(xì)說(shuō)明。
[0035]一種Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,步驟如下:
[0036]I)內(nèi)核層驅(qū)動(dòng)程序完成中斷頂半部處理后,對(duì)中斷事件進(jìn)行廣播通知;步驟I)具體為:
[0037]1.1)內(nèi)核層驅(qū)動(dòng)程序向系統(tǒng)內(nèi)核注冊(cè)中斷頂半部處理函數(shù),用于接收硬件中斷信號(hào)并進(jìn)行頂半部處理;具體為:將自定義的函數(shù)作為request_irq函數(shù)的參數(shù)傳入到系統(tǒng)內(nèi)核,自定義的函數(shù)即可中斷頂半部處理函數(shù),并用于接收硬件中斷信號(hào)并進(jìn)行中斷頂半部處理;
[0038]1.2)內(nèi)核層驅(qū)動(dòng)程序創(chuàng)建第一 netlink套接字,用于向系統(tǒng)廣播中斷事件;具體為:利用netlink_kernel_create函數(shù),通過(guò)第一 netlink套接字對(duì)象向系統(tǒng)內(nèi)核、應(yīng)用層發(fā)送廣播通知;
[0039]2)應(yīng)用層動(dòng)態(tài)庫(kù)程序接收內(nèi)核層驅(qū)動(dòng)程序發(fā)出的中斷事件廣播通知;具體為:應(yīng)用層動(dòng)態(tài)庫(kù)程序創(chuàng)建第二 netlink套接字、廣播通知接收線程,用于接收內(nèi)核層驅(qū)動(dòng)程序發(fā)出的中斷事件廣播通知;其中,廣播通知接收線程的實(shí)現(xiàn)具體為:創(chuàng)建自定義線程,并在該自定義線程中循環(huán)讀取第二 netlink套接字對(duì)象實(shí)現(xiàn)對(duì)中斷事件廣播通知的接收;
[0040]3)應(yīng)用層動(dòng)態(tài)庫(kù)程序創(chuàng)建全局鏈表、回調(diào)函數(shù)注冊(cè)接口,全局鏈表用于存儲(chǔ)向回調(diào)函數(shù)注冊(cè)接口注冊(cè)的回調(diào)函數(shù);全局鏈表中存儲(chǔ)的是頭指針,鏈表中每個(gè)節(jié)點(diǎn)存儲(chǔ)的是一個(gè)函數(shù)的調(diào)用地址;回調(diào)函數(shù)注冊(cè)接口為系統(tǒng)動(dòng)態(tài)庫(kù)向應(yīng)用層提供的接口,通過(guò)回調(diào)函數(shù)注冊(cè)接口將向其注冊(cè)的函數(shù)加入到全局鏈表中;
[0041]4)應(yīng)用層應(yīng)用程序定義中斷底半部處理函數(shù),并向回調(diào)函數(shù)注冊(cè)接口進(jìn)行注冊(cè),存儲(chǔ)于全局鏈表,形成中斷底半部處理回調(diào)函數(shù);
[0042]5)應(yīng)用層動(dòng)態(tài)庫(kù)程序取出全局鏈表中的中斷底半部處理回調(diào)函數(shù),完成中斷底半部處理。
[0043]如圖1所示,內(nèi)核層驅(qū)動(dòng)程序位于系統(tǒng)的內(nèi)核層,應(yīng)用層動(dòng)態(tài)庫(kù)程序、應(yīng)用層應(yīng)用程序位于系統(tǒng)的應(yīng)用層,中斷事件來(lái)自硬件層的底層硬件。
[0044]內(nèi)核層驅(qū)動(dòng)程序在內(nèi)核層運(yùn)行,主要負(fù)責(zé)完成中斷頂半部的處理和向整個(gè)系統(tǒng)發(fā)出一個(gè)中斷事件的廣播通知。當(dāng)一個(gè)硬件中斷到來(lái)時(shí),內(nèi)核層驅(qū)動(dòng)程序的中斷頂半部處理函數(shù)被調(diào)用,這個(gè)部分的處理與普通的驅(qū)動(dòng)程序沒(méi)有區(qū)別,只是在中斷頂半部處理函數(shù)的最后,多出一個(gè)對(duì)中斷事件進(jìn)行廣播通知的處理,這個(gè)廣播通知采用net I ink機(jī)制實(shí)現(xiàn),在應(yīng)用層的程序和內(nèi)核層的程序都可以接收這個(gè)廣播通知。[0045]應(yīng)用層動(dòng)態(tài)庫(kù)程序在應(yīng)用層運(yùn)行,主要負(fù)責(zé)接收內(nèi)核層驅(qū)動(dòng)程序發(fā)出的中斷事件廣播通知和對(duì)應(yīng)用層應(yīng)用程序注冊(cè)的中斷底半部處理函數(shù)進(jìn)行回調(diào)。
[0046]應(yīng)用層應(yīng)用程序在應(yīng)用層運(yùn)行,主要利用應(yīng)用層動(dòng)態(tài)庫(kù)程序提供的接口函數(shù),注冊(cè)中斷底半部處理回調(diào)函數(shù)和進(jìn)行中斷底半部函數(shù)的業(yè)務(wù)處理,譬如根據(jù)里程脈沖的統(tǒng)計(jì)方法進(jìn)行里程統(tǒng)計(jì),根據(jù)傳感器信號(hào)的特點(diǎn)對(duì)信號(hào)進(jìn)行去抖處理和信號(hào)的有效性判斷等。
[0047]一種在應(yīng)用層對(duì)中斷處理程序底半部進(jìn)行處理的方法,步驟如下:
[0048]A)中斷產(chǎn)生;
[0049]B)將中斷處理程序底半部搬移到應(yīng)用層;
[0050]C)在應(yīng)用層對(duì)中斷底半部進(jìn)行處理;
[0051]步驟B)利用將中斷處理程序底半部搬移到應(yīng)用層的方法進(jìn)行操作。
[0052]實(shí)施例
[0053]Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,具體實(shí)施步驟如下:
[0054]I)內(nèi)核層驅(qū)動(dòng)程序向內(nèi)核注冊(cè)一個(gè)中斷頂半部處理函數(shù),以便接收硬件中斷信號(hào)并進(jìn)行頂半部處理;向內(nèi)核注冊(cè)中斷頂半部處理函數(shù)是Iinux內(nèi)核提供的一個(gè)接口,使用request_irq函數(shù)來(lái)實(shí)現(xiàn),將一個(gè)普通的函數(shù)作為request_irq函數(shù)的參數(shù)傳入到內(nèi)核,這個(gè)普通函數(shù)就變成了中斷頂半部處理函數(shù),可以接收硬件中斷信號(hào)并進(jìn)行中斷頂半部處理;
[0055]2)內(nèi)核層驅(qū)動(dòng)程序創(chuàng)建一個(gè)netlink套接字,以便向系統(tǒng)廣播中斷事件;創(chuàng)建netlink套接字是Iinux內(nèi)核提供的一個(gè)接口,使用netlink_kernel_create函數(shù)來(lái)實(shí)現(xiàn),通過(guò)創(chuàng)建的netlink套接字對(duì)象可以向內(nèi)核空間和用戶空間發(fā)送廣播通知;
[0056]3)應(yīng)用層動(dòng)態(tài)庫(kù)程序創(chuàng)建一個(gè)netlink套接字和一個(gè)廣播通知接收線程,以便接收內(nèi)核層驅(qū)動(dòng)程序發(fā)出的中斷事件廣播通知;廣播通知接收線程是通過(guò)創(chuàng)建一個(gè)普通的線程并且在該線程中循環(huán)讀取netlink套接字對(duì)象來(lái)實(shí)現(xiàn)的。如果有廣播通知,讀取netlink套接字對(duì)象的函數(shù)就可以返回并獲得廣播通知的具體內(nèi)容;
[0057]4)應(yīng)用層動(dòng)態(tài)庫(kù)程序創(chuàng)建一個(gè)中斷底半部處理回調(diào)函數(shù)的全局鏈表,以便存儲(chǔ)所有利用應(yīng)用層動(dòng)態(tài)庫(kù)程序的回調(diào)函數(shù)注冊(cè)接口進(jìn)行注冊(cè)中斷底半部處理回調(diào)函數(shù);這個(gè)全局鏈表使用list_head數(shù)據(jù)結(jié)構(gòu)來(lái)定義,它本質(zhì)上是一個(gè)鏈表的頭指針,鏈表中每個(gè)節(jié)點(diǎn)存儲(chǔ)的是一個(gè)函數(shù)的調(diào)用地址,這些函數(shù)我們稱之為中斷底半部處理回調(diào)函數(shù)。本來(lái),中斷底半部處理函數(shù)是針對(duì)一個(gè)完整中斷處理過(guò)程的延遲處理部分,是在Iinux內(nèi)核代碼中才能實(shí)現(xiàn)的,我們這里將一個(gè)完整中斷處理過(guò)程的延遲處理部分搬移到了應(yīng)用層,因此也稱這個(gè)全局鏈表節(jié)點(diǎn)中的函數(shù)為中斷底半部處理函數(shù)。
[0058]list_head數(shù)據(jù)結(jié)構(gòu)的定義如下:
[0059]struct list_hed{
[0060]struct list—head氺next,氺prev;
[0061]};
[0062]5)應(yīng)用層動(dòng)態(tài)庫(kù)程序創(chuàng)建一個(gè)回調(diào)函數(shù)注冊(cè)接口,以便其他應(yīng)用層應(yīng)用程序向他注冊(cè)中斷底半部處理回調(diào)函數(shù);這個(gè)回調(diào)函數(shù)注冊(cè)接口的作用就是將所注冊(cè)的中斷底半部處理函數(shù)加入到上文提到的全局鏈表中,他是一個(gè)動(dòng)態(tài)庫(kù)向應(yīng)用層提供的接口,具體采用下面的函數(shù)定義來(lái)實(shí)現(xiàn):[0063]int set_interrupt_event_callback_func(void(*event_calIback)(intevent));
[0064]6)應(yīng)用層應(yīng)用程序定義一個(gè)中斷底半部處理函數(shù),完成對(duì)中斷事件的延遲處理,譬如根據(jù)里程脈沖的統(tǒng)計(jì)方法進(jìn)行里程統(tǒng)計(jì),根據(jù)傳感器信號(hào)的特點(diǎn)對(duì)信號(hào)進(jìn)行去抖處理和信號(hào)的有效性判斷等。
[0065]7)應(yīng)用層應(yīng)用程序利用應(yīng)用層動(dòng)態(tài)庫(kù)程序的回調(diào)函數(shù)注冊(cè)接口注冊(cè)一個(gè)中斷底半部處理函數(shù)。
[0066]一種在應(yīng)用層對(duì)中斷處理程序底半部進(jìn)行處理的方法,具體實(shí)施步驟如下:
[0067]A) 一個(gè)硬件中斷產(chǎn)生;
[0068]B)內(nèi)核層驅(qū)動(dòng)程序的中斷頂半部處理函數(shù)運(yùn)行,并且發(fā)送中斷事件廣播通知;
[0069]C)應(yīng)用層動(dòng)態(tài)庫(kù)程序的廣播通知接收線程收到內(nèi)核層驅(qū)動(dòng)程序發(fā)出的中斷事件廣播通知;
[0070]D)應(yīng)用層動(dòng)態(tài)庫(kù)程序從中斷底半部處理回調(diào)函數(shù)的全局鏈表中逐個(gè)取出回調(diào)函數(shù),并以一一進(jìn)行調(diào)用;
[0071]E)應(yīng)用層應(yīng)用程序中的中斷底半部處理回調(diào)函數(shù)被應(yīng)用層動(dòng)態(tài)庫(kù)程序調(diào)用,按照該函數(shù)的內(nèi)容進(jìn)行執(zhí)行,完成中斷底半部的處理。
[0072]上述實(shí)施例僅是用來(lái)說(shuō)明本發(fā)明,而并非用作對(duì)本發(fā)明的限定。只要是依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì),對(duì)上述實(shí)施例進(jìn)行變化、變型等都將落在本發(fā)明的權(quán)利要求的范圍內(nèi)。
【權(quán)利要求】
1.一種Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,其特征在于,步驟如下: O內(nèi)核層驅(qū)動(dòng)程序完成中斷頂半部處理后,對(duì)中斷事件進(jìn)行廣播通知; 2)應(yīng)用層動(dòng)態(tài)庫(kù)程序接收內(nèi)核層驅(qū)動(dòng)程序發(fā)出的中斷事件廣播通知; 3)應(yīng)用層動(dòng)態(tài)庫(kù)程序創(chuàng)建全局鏈表、回調(diào)函數(shù)注冊(cè)接口,全局鏈表用于存儲(chǔ)向回調(diào)函數(shù)注冊(cè)接口注冊(cè)的回調(diào)函數(shù); 4)應(yīng)用層應(yīng)用程序定義中斷底半部處理函數(shù),并向回調(diào)函數(shù)注冊(cè)接口進(jìn)行注冊(cè),存儲(chǔ)于全局鏈表,形成中斷底半部處理回調(diào)函數(shù); 5)應(yīng)用層動(dòng)態(tài)庫(kù)程序取出全局鏈表中的中斷底半部處理回調(diào)函數(shù),完成中斷底半部處理。
2.根據(jù)權(quán)利要求1所述的Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,其特征在于,內(nèi)核層驅(qū)動(dòng)程序位于系統(tǒng)的內(nèi)核層,應(yīng)用層動(dòng)態(tài)庫(kù)程序、應(yīng)用層應(yīng)用程序位于系統(tǒng)的應(yīng)用層。
3.根據(jù)權(quán)利要求1所述的Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,其特征在于,步驟I)具體為: 1.1)內(nèi)核層驅(qū)動(dòng)程序向系統(tǒng)內(nèi)核注冊(cè)中斷頂半部處理函數(shù),用于接收硬件中斷信號(hào)并進(jìn)行頂半部處理; 1.2)內(nèi)核層驅(qū)動(dòng)程序創(chuàng)建`第一 netlink套接字,用于向系統(tǒng)廣播中斷事件。
4.根據(jù)權(quán)利要求1所述的Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,其特征在于,步驟2)具體為:應(yīng)用層動(dòng)態(tài)庫(kù)程序創(chuàng)建第二 netlink套接字、廣播通知接收線程,用于接收內(nèi)核層驅(qū)動(dòng)程序發(fā)出的中斷事件廣播通知。
5.根據(jù)權(quán)利要求1所述的Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,其特征在于,全局鏈表中存儲(chǔ)的是頭指針,鏈表中每個(gè)節(jié)點(diǎn)存儲(chǔ)的是一個(gè)函數(shù)的調(diào)用地址。
6.根據(jù)權(quán)利要求1所述的Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,其特征在于,回調(diào)函數(shù)注冊(cè)接口為系統(tǒng)動(dòng)態(tài)庫(kù)向應(yīng)用層提供的接口,通過(guò)回調(diào)函數(shù)注冊(cè)接口將向其注冊(cè)的函數(shù)加入到全局鏈表中。
7.根據(jù)權(quán)利要求3所述的Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,其特征在于,步驟1.0具體為:將自定義的函數(shù)作為request_irq函數(shù)的參數(shù)傳入到系統(tǒng)內(nèi)核,自定義的函數(shù)即可中斷頂半部處理函數(shù),并用于接收硬件中斷信號(hào)并進(jìn)行中斷頂半部處理。
8.根據(jù)權(quán)利要求3所述的Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,其特征在于,步驟1.2)具體為:利用netlink_kernel_create函數(shù),通過(guò)第一 netlink套接字對(duì)象向系統(tǒng)內(nèi)核、應(yīng)用層發(fā)送廣播通知。
9.根據(jù)權(quán)利要求4所述的Linux下將中斷處理程序底半部搬移到應(yīng)用層的方法,其特征在于,廣播通知接收線程的實(shí)現(xiàn)具體為:創(chuàng)建自定義線程,并在該自定義線程中循環(huán)讀取第二 netlink套接字對(duì)象實(shí)現(xiàn)對(duì)中斷事件廣播通知的接收。
10.一種在應(yīng)用層對(duì)中斷處理程序底半部進(jìn)行處理的方法,其特征在于,步驟如下: A)中斷產(chǎn)生; B)將中斷處理程序底半部搬移到應(yīng)用層; C)在應(yīng)用層對(duì)中斷底半部進(jìn)行處理;步驟B)利用權(quán)利要求1至9任一項(xiàng)所述的將中斷處理程序底半部搬移到應(yīng)用層的方法進(jìn)行操作。`
【文檔編號(hào)】G06F9/48GK103870326SQ201210532215
【公開(kāi)日】2014年6月18日 申請(qǐng)日期:2012年12月11日 優(yōu)先權(quán)日:2012年12月11日
【發(fā)明者】彭勇, 許寧, 任賦, 鄭福弟 申請(qǐng)人:廈門雅迅網(wǎng)絡(luò)股份有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1