1、tasklet
只需要定義三段**
功能函式:
void my_tasklet(unsigned long data)
定義cdd_tasklet 變數,繫結my_tasklet函式:
declare_tasklet(cdd_tasklet, my_tasklet, 0);
tasklet_schedule(&cdd_tasklet);//等級底半部
2、工作佇列
需要定義4段**
struct work_struct my_wq;//定義變數
init_work(&my_wq,my_wq_fuc);//初始化工作者佇列並繫結函式
schedule_work(&my_wq);//登記底半部
void my_wq_fuc(struct work_struct *work)
工作佇列可以休眠
Linux 底半部機制
每當有外部中斷到來時,cpu會停止當前任務的執行而去執行中斷程式,為了提高效率,中斷服務程式不宜太大。對於乙個較大的外部中斷服務程式,linux將其劃分成2個部分 1 頂半部,不可中斷,不可搶占,執行在 硬 中斷上下文,一般是讀取暫存器狀態,執行內容較少 2 底半部,可中斷,可搶占,執行在軟中斷上下...
底半部機制之work struct(二)
工作佇列 工作佇列的實現和 tasklet 很相似,只是工作佇列的執行上下文在核心執行緒,所以可以排程和睡眠。首先是定義乙個工作佇列和乙個底半部執行函式 structwork struct my wq void my wq func structwork struct work 通過init wor...
Linux 中斷底半部
裝置中斷會打斷核心程序的正常執行,系統對更高吞吐率的追求勢必會要求中斷服務程式盡量短小精悍。但是在現實中,中斷服務程式往往要進行大量耗時操作。linux將中斷處理程式分解為兩個部分 頂半部和底半部。頂半部用於完成盡量少的比較緊急的工作,往往只是簡單的讀取暫存器的中斷狀態,並清除中斷標誌後,就進行 登...