工作佇列(2)

2021-06-28 06:54:30 字數 898 閱讀 8148

完整的例項來演示工作佇列:

#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...