<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 嵌入式Linux設備驅動(dòng)開(kāi)發(fā)之:中斷編程

嵌入式Linux設備驅動(dòng)開(kāi)發(fā)之:中斷編程

作者: 時(shí)間:2013-09-13 來(lái)源:網(wǎng)絡(luò ) 收藏

11.5

前面所講述的驅動(dòng)程序中都沒(méi)有涉及中斷處理,而實(shí)際上,有很多Linux的驅動(dòng)都是通過(guò)中斷的方式來(lái)進(jìn)行內核和硬件的交互。中斷機制提供了硬件和軟件之間異步傳遞信息的方式。硬件設備在發(fā)生某個(gè)事件時(shí)通過(guò)中斷通知軟件進(jìn)行處理。中斷實(shí)現了硬件設備按需獲得處理器關(guān)注的機制,與查詢(xún)方式相比可以大大節省CPU資源的開(kāi)銷(xiāo)。

本文引用地址:http://dyxdggzs.com/article/257108.htm

在此將介紹在驅動(dòng)程序中用于申請中斷的request_irq()調用,和用于釋放中斷的free_irq()調用。request_irq()函數調用的格式如下所示:

intrequest_irq(unsignedintirq,

void(*handler)(intirq,void*dev_id,structpt_regs*regs),

unsignedlongirqflags,constchar*devname,oid*dev_id);

其中irq是要申請的硬件中斷號。在Intel平臺,范圍是0~15。

參數handler為將要向系統注冊的中斷處理函數。這是一個(gè)回調函數,中斷發(fā)生時(shí),系統調用這個(gè)函數,傳入的參數包括硬件中斷號、設備id以及寄存器值。設備id就是在調用request_irq()時(shí)傳遞給系統的參數dev_id。

參數irqflags是中斷處理的一些屬性,其中比較重要的有SA_INTERRUPT。這個(gè)參數用于標明中斷處理程序是快速處理程序(設置SA_INTERRUPT)還是慢速處理程序(不設置SA_INTERRUPT)??焖偬幚沓绦虮徽{用時(shí)屏蔽所有中斷。慢速處理程序只屏蔽正在處理的中斷。還有一個(gè)SA_SHIRQ屬性,設置了以后運行多個(gè)設備共享中斷,在中斷處理程序中根據dev_id區分不同設備產(chǎn)生的中斷。

參數devname為設備名,會(huì )在/dev/interrupts中顯示。

參數dev_id在中斷共享時(shí)會(huì )用到。一般設置為這個(gè)設備的device結構本身或者NULL。中斷處理程序可以用dev_id找到相應的控制這個(gè)中斷的設備,或者用irq2dev_map()找到中斷對應的設備。

釋放中斷的free_irq()函數調用的格式如下所示。該函數的參數與request_irq()相同。

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>