完整的例項來演示工作佇列:
#include
#include #include #include #include #include // 定義乙個工作佇列指標
static struct workqueue_struct *my_wq;
// 為了傳遞資料,在work_struct結構體外又包含了乙個結構體,可以通過結構體指標實現多型
// work_struct型別的變數必須是work_struct_data結構體的第乙個變數
struct work_struct_data
*wsdata;
// 工作佇列處理函式
static void work_handler(struct work_struct *work)
// 驅動程式的初始化函式
static int _init demo_init(void)
} printk(kern_alert "demo_init.\n");
return ret;
} // 驅動程式的解除安裝函式
static void _exit demo_exit(void)
module_license("gpl");
module_init(demo_init);
module_exit(demo_exit);
新的核心還提供了container_of方法進行結構體指標的計算。所以上面:
struct work_struct_data
*wsdata;
中struct work_struct my_work;成員沒有必要放到第乙個成員。
工作佇列分析
一 用法 struct cpu workqueue struct cacheline aligned the externally visible workqueue abstraction is an array of per cpu workqueues struct workqueue str...
工作佇列模型
workqueue,中文稱其為工作佇列,是乙個用於建立核心執行緒的介面,通過它建立的核心執行緒來執行核心其他模組排列到佇列裡的工作,建立的核心執行緒被稱為工作者執行緒。要理解工作佇列的實現,重點在於理解相關的三個資料結構的含義及關係。1 表示工作佇列型別的資料結構 struct workqueue ...
工作佇列分析
一 用法 struct cpu workqueue struct cacheline aligned the externally visible workqueue abstraction is an array of per cpu workqueues struct workqueue str...