- 追加された行はこの色です。
- 削除された行はこの色です。
*参照元 [#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]