底半部機制

2021-08-08 07:01:13 字數 448 閱讀 1201

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將中斷處理程式分解為兩個部分 頂半部和底半部。頂半部用於完成盡量少的比較緊急的工作,往往只是簡單的讀取暫存器的中斷狀態,並清除中斷標誌後,就進行 登...