linux中斷底半部機制
中斷處理程式
----中斷處理程式ISR是在中斷髮生時被呼叫時用來處理中斷的函式,在中斷執行期間,不能
----執行有可能引起睡眠測操作,不能同使用者空間交換資料,不能呼叫schedule函式,實現
----中斷處理有一個原則,就是儘可能快處理並返回地,但是多數中斷產生時要進行大量的
----耗時處理,為了使中斷處理儘可能短並完成後續大量工作,linux引入了一種底半部機制,
----分為頂半部(top half)和底半部(buttomhalf)。
底半部機制
----Tasklet
----工作佇列
Tasklet和下半部處理
----tasklet將任務延遲到安全時間執行,每個tasklet都和一個函式相關聯,當tasklet執行時,
----該函式就被呼叫,並且tasklet可以排程自己。
Tasklet的實現
----定義一個處理函式:
----void tasklet_func(unsigned long);
----定義一個tasklet結構my_tasklet與tasklet_func(data)函式關聯
----struct tasklet_struct my_tasklet;
----DECLARE_TASKLET(my_tasklet,tasklet_func,data);
----排程tasklet
----tasklet_schedule(&my_tasklet);
工作佇列和下半部處理
----工作佇列使用方法和tasklet非常相似
----定義一個工作佇列:
----struct work_struct my_wq;
----定義一個處理函式
----void my_wq_func(struct work_struct *work);
----初始化工作佇列並將其處理函式繫結
----INIT_WORK(&my_wq,my_wq_func);
----排程工作佇列執行
----schedule_work(&my_wq);
Tasklet和工作佇列的區別
----tasklet工作在中斷上下文
----工作佇列工作在程式上下文
----tasklet處理函式中不能睡眠
----工作佇列中允許有睡眠
相關文章
- Java中斷機制Java
- 聊聊中斷機制~
- liteos 中斷機制(四)
- 人腦的「中斷機制」
- Linux中的保護機制Linux
- Linux中的許可權機制Linux
- 徹底理解 Dart mixin 機制Dart
- 理解Linux 中sed命令的工作機制Linux
- Linux安全機制Linux
- Linux OOM 機制LinuxOOM
- 徹底搞懂HTTPS的加密機制HTTP加密
- LINUX中斷--申請中斷和解除安裝中斷Linux
- Linux堆記憶體管理深入分析(下半部)Linux記憶體
- 跟著GPT學習Java執行緒中斷機制GPTJava執行緒
- linux 訊號機制Linux
- 併發機制的底層實現
- php底層原理之垃圾回收機制PHP
- javascript事件機制底層實現原理JavaScript事件
- 徹底剖析JVM類載入機制JVM
- Linux中斷申請Linux
- linux中斷 簡介Linux
- Linux核心軟中斷Linux
- 【Linux】《The Command Line Handbook》 讀書筆記(上半部分)Linux筆記
- uni-app中websocket的使用 斷開重連、心跳機制APPWeb
- 細說計算機底層整型編碼機制計算機
- Java 併發機制底層實現 —— volatile 原理、synchronize 鎖優化機制Java優化
- Linux訊號(signal)機制Linux
- Linux程式通訊機制Linux
- MySQL底層概述—10.InnoDB鎖機制MySql
- Linux堆管理實現原理學習筆記 (上半部)Linux筆記
- Spring Cloud Feign 熔斷機制填坑SpringCloud
- Linux中斷子系統Linux
- http系列--徹底理解瀏覽器的快取機制(http快取機制)HTTP瀏覽器快取
- 轉:徹底弄懂HTTP快取機制及原理HTTP快取
- Redisson的看門狗機制底層實現Redis
- 【深入 PHP】PHP7 底層執行機制PHP
- day13-實現Spring底層機制-03Spring
- HashMap的底層結構、原理、擴容機制HashMap
- Linux Watchdog 機制是什麼Linux