*参照元 [#p0f8d763]
#backlinks

*説明 [#q6be2a9e]
仕事を頼んでおいて、あとで実行してもらうための機構。

-カーネルスレッドで実行される。
-仕事を頼んでおいて、あとで実行してもらうための機構。
多少遅れても良い処理、いつ実行しても良い処理を実行するときに便利。
--カーネルスレッドで実行される。
--[[linux-2.6/カーネルスレッド]]

-ワークキューの使い方
--ワークキューを作る
---既に Linux システムがワークキューを持っている。
システムのワークキューに仕事をお願いする場合は、
自前のワークキューを作る必要はない。
--仕事を作る
--ワークキューに仕事を追加する
--仕事はいつか実行される

-ワークキュー
--workqueue_struct 型の変数で定義される。
--[[linux-2.6.33/workqueue_struct]]

-仕事
--work_struct 型の変数で定義される。
--[[linux-2.6.33/work_struct]]


**参考 [#m6c6dad6]
使い方

 static struct workqueue_struct *wq;
 
 void init_something()
 {
     wq = create_workqueue("my_workqueue");
     ...
 }
-ワークキューを作成する。

 static DECLARE_WORK(work_a, work_func_a);
 
-仕事を定義する。

 void work_func_a(struct work_struct *work)
 {
     //do something...
 }
-仕事の中身、仕事で実際に行う処理を定義する。

 void do_something()
 {
     queue_work(wq, &work_a);
 }
-ワークキューに仕事を追加する。仕事はいつか実行される。


**関係モジュール [#gbafcb4c]

-ワークキューを作成する。
--[[linux-2.6.33/create_workqueue()]]

-仕事を初期化する。
-変数宣言時に初期化する場合はこちらが便利。
--[[linux-2.6.33/DECLARE_WORK()]]
-関数内などのコード中で初期化する場合はこちらが便利。
--[[linux-2.6.33/INIT_WORK()]]

-ワークキューに仕事を追加する。
仕事はいつか実行される。
--指定したワークキューに仕事を追加する。
--[[linux-2.6.33/queue_work()]]
--システムのワークキューに仕事を追加する。
--[[linux-2.6.33/schedule_work()]]


*コメント [#bfdc517a]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS