linux中斷部分

2021-05-26 18:48:08 字數 1621 閱讀 4326

linux中斷處理程式分為兩部分,上半部(top half)與底半部(bottom half)

上半部響應中斷,底半部為中斷處理函式

申請中斷:

int request_irq(unsigned int irq,irqreturn_t (*handler)(int, void *, struct pt_regs *),unsigned long irqflags, const char *devname, void *dev_id );

irq是要申請的硬體中斷號

handler是中斷處理函式

irqflags是中斷處理屬性

中斷處理函式:

irqreturn_t  ***_interrupt(int iqr,void *dev_id);

其中安排了中斷響應後要執行的函式

底半部處理機制有tasklet,工作佇列,軟體中斷

tasklet:

工作佇列:

struct work_struct my_work;/*定義乙個工作佇列*/

void my_work_fun();/*定義乙個工作函式,也就是中斷產生時底半部要處理的函式*/

init_work(&my_work,my_work_fun()) 初始化工作佇列,並與處理函式繫結

schedule_work(&my_work)呼叫工作佇列

使用模板

struct work_struct my_work;

void my_work_fun()

/*中斷處理上半部*/

irqreturn_t  ***_interrupt(int iqr,void *dev_id);

/*裝置初始化*/

int ***_init(void)

linux 驅動中斷部分學習

學習按鍵中斷,中斷程式可以在中斷函式中一次實現,也可以分開在中斷的上下半部實現,上半部實現緊急的處理,下半部做些不緊急的處理。上下半部的實現分為 軟中斷 tasklet 工作佇列 執行緒中斷。軟中斷和tasklet處理函式中不能睡眠。問題1 今天做工作佇列的實驗,在初始化函式中需要申請中斷號同時初始...

按鍵中斷部分的理解

初始化tx rx對應的gpio引腳 設定1個停止位,8位資料位 傳送和接收都是polling 禁止modem afc 波特率設定 外部中斷對應的gpio設定 中斷觸發模式 中斷允許 清掛起,清除是寫1 繫結異常向量表 禁止所有中斷 選擇中斷型別為irq 清vicxaddr 程式執行 按鍵按下 硬體自...

例項 中斷的下半部分之 軟中斷

在linux中斷加入自已的軟中斷 軟硬體環境 linux 2.6.36 s3c2440 步驟如下 在軟中斷定義的列舉型別列表中加入自已的軟中斷號my softirq 具體到linux 2.6.36 include linux interrupt.h的第376行的列舉列表。其中已經有10項,在nr s...