新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 嵌入式Linux驅(qū)動(dòng)程序開發(fā)要點(diǎn)

嵌入式Linux驅(qū)動(dòng)程序開發(fā)要點(diǎn)

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

#include

int request_irq(unsigned int irq,

void (*handler)(int irq, void dev_id, struct pt_regs *regs),

unsigned long flags,

const char *device,

void *dev_id);

void free_irq(unsigned int irq, void *dev_id);

參數(shù)irq表示所要申請(qǐng)的硬件中斷號(hào);handler為向系統(tǒng)登記的中斷處理子程序,中斷產(chǎn)生時(shí)由系統(tǒng)來(lái)調(diào)用,調(diào)用時(shí)所帶參數(shù)irq為中斷號(hào);dev_id為申請(qǐng)時(shí)告訴系統(tǒng)的設(shè)備標(biāo)識(shí);regs為中斷發(fā)生時(shí)的寄存器內(nèi)容;device為設(shè)備名,將會(huì)出現(xiàn)在/proc/interrupts文件里;flag是申請(qǐng)時(shí)的選項(xiàng),它決定中斷處理程序的一些特性,其中最重要的是中斷處理程序是快速處理程序還是慢速處理程序??焖偬幚沓绦蜻\(yùn)行時(shí),所有中斷都被屏蔽,而慢速處理程序運(yùn)行時(shí),除了正在處理的中斷外,其他中斷都沒(méi)有被屏蔽。在系統(tǒng)中,中斷可以被不同的中斷處理程序共享。

作為系統(tǒng)核心的一部分,設(shè)備程序在申請(qǐng)和釋放內(nèi)存時(shí)不是調(diào)用malloc和free,而代之以調(diào)用kmalloc和kfree,它們被定義為:

#include

void *kmalloc(unsigned int len, int priority);

void kfree(void *obj);

參數(shù)len為希望申請(qǐng)的字節(jié)數(shù);obj為要釋放的內(nèi)存指針;priority為分配內(nèi)存操作的優(yōu)先級(jí),即在沒(méi)有足夠空閑內(nèi)存時(shí)如何操作,一般用GFP_KERNEL。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁(yè) 1 2 下一頁(yè)

評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉