workqueue機制中定義了兩個重要的資料結構,分析如下:
cpu_workqueue_struct結構。該結構將cpu和核心執行緒進行了繫結。在建立workqueue的過程中,linux根據當前系統cpu的個數建立cpu_workqueue_struct。在該結構主要維護了乙個任務佇列,以及核心執行緒需要睡眠的等待佇列,另外還維護了乙個任務上下文,即task_struct。
work_struct結構是對任務的抽象。在該結構中需要維護具體的任務方法,需要處理的資料,以及任務處理的時間。該結構定義如下:
struct work_struct ;
void my_func(struct work_struct *work)
struct my_work_t *my_work =container_of(work, struct my_work_t, work);
printk(kern_info 「hello world, my name is %s!/n」, my_work->name);
}struct workqueue_struct *my_wq = create_workqueue(「my wq」); //建立自己的work queue
struct my_work_t my_work;
my_work.name = 「jack」;
init_work(&(my_work.work), my_func); //初始化自己的work queue
queue_work(my_wq, &(my_work.work));
destroy_workqueue(my_wq); //銷毀自己的work queue
Workqueue機制的實現
workqueue機制的實現 2012 02 05 22 18 標籤 workqueue 分類 linux裝置驅動模型 workqueue機制中定義了兩個重要的資料結構,分析如下 cpu workqueue struct結構。該結構將cpu和核心執行緒進行了繫結。在建立workqueue的過程中,l...
linux中workqueue的實現機制
linux 中的workqueue 機制就是為了簡化核心執行緒的建立。通過呼叫 workqueue 的介面就能建立核心執行緒。並且可以根據當前系統 cpu的個數建立執行緒的數量,使得執行緒處理的事務能夠並行化。workqueue 是核心中實現簡單而有效的機制,他顯然簡化了核心 daemon 的建立,...
Linux中Workqueue機制分析
走入linux的殿堂已經有一年有餘了,在這裡我想將linux的各種實現機制分析一遍,一方面對自己來說也是溫故而知新,另一方面,促進大家的交流,最好能夠給大家一些拋磚引玉的啟迪。我是硬體出身,搞硬體已經好多年了,從是專門軟體開發也接近兩年了,在這一段時間內我越發認為軟硬體協同設計是未來發展的主流,軟硬...