中斷處理程式中不能延時、休眠之類的,一定要最快速、高效的執行完。
// 功能:申請中斷
// 引數1:中斷號碼,通過巨集 ira_eint(x) 獲取
// 引數2:中斷的處理函式,填函式名
// 引數3:中斷的出發方式(下面的巨集在不同核心中是不同的)
#define irqf_trigger_none 0x00000000// 引數4:描述語句,給此中斷起名,自定義#define irqf_trigger_rising 0x00000001
#define irqf_trigger_falling 0x00000002
#define irqf_trigger_high 0x00000004
#define irqf_trigger_low 0x00000008
// 引數5:傳遞給中斷處理函式的引數,沒有填null
int request_irq(unsigned int irq, irq_handler_t handler, unsigned long flags, const char *name, void *dev_id);
// 功能:釋放中斷
// 引數1:中斷號,與 request_irq 函式的第乙個引數一致
// 引數2:一定要與 request_irq 中最後乙個引數一致
void free_irq(unsigned int irq, void *dev_id);
用法:
// 中斷處理程式,多個按鍵可以根據 irqno 區分irqreturn_t key_irq_handler(int irqno, void *dev_id)
static int __init key_drv_init(void)
static int __exit key_drv_exit(void)
ARM中斷處理流程
1 arm採用的是3級流水線 arm的流水線結構為 取指 解碼 執行 arm pc pc 4 pc 8pc是指向被取指的指令,而不是正在執行的指令。也就是說在此 pc值為0x1008 執行的是0x1000的 即 書上摘錄 由於arm 體系結構採用了多級流水線技術,對於arm 指令集而言,pc 總是指...
linux2 6 32中斷處理流程
1 當發生中斷時,pc指標通過異常向量表跳轉到中斷入口函式asm do irq asm do irq是中斷的c語言總入口函式,它在 arch arm kernel irq.c中定義,宣告如下 asmlinkage void exception asm do irq unsigned int irq,...
Linux中斷處理
裝置管理過程中,中斷號的申請是乙個非常重要的操作。當裝置發出中斷之後,硬體裝置根據intel cpu的通用處理過程,跳轉到了該中斷號對應的中斷相應函式處。在linux作業系統中,必定要跳到do irq函式處。在do irq 函式中,進行了一部分公共的中斷響應處理之後,根據已經入棧了的中斷號查詢裝置中...