Linux 簡單按鍵中斷處理流程

2022-05-07 18:06:08 字數 974 閱讀 8340

中斷處理程式中不能延時、休眠之類的,一定要最快速、高效的執行完。

// 功能:申請中斷

// 引數1:中斷號碼,通過巨集 ira_eint(x) 獲取

// 引數2:中斷的處理函式,填函式名

// 引數3:中斷的出發方式(下面的巨集在不同核心中是不同的) 

#define irqf_trigger_none     0x00000000

#define irqf_trigger_rising     0x00000001

#define irqf_trigger_falling     0x00000002

#define irqf_trigger_high     0x00000004

#define irqf_trigger_low     0x00000008

// 引數4:描述語句,給此中斷起名,自定義

// 引數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 函式中,進行了一部分公共的中斷響應處理之後,根據已經入棧了的中斷號查詢裝置中...