*参照元 [#c3ff55cb]
#backlinks

*注意 [#a15d9286]
-より新しいバージョンがあります。
--[[linux-2.6.33/kblockd_schedule_work()]]

*説明 [#u25e834b]
-パス: [[linux-2.6.25/block/blk-core.c]]

-指定した仕事をワークキューにスケジュールする。ワークキュー内の
関数はいずれカーネルスレッドが実行してくれる。

-何に使っているか?
--リクエストキューの unplug(栓を取りさること)に使う。
--ほかも?


**引数 [#l5901979]
-struct work_struct *work
--スケジュールする仕事を指定する。
--[[linux-2.6.25/work_struct]]

**返り値 [#m6d93ffd]
-int
--キューに追加しようとした仕事が既に登録済みだったときは 0 を返す。
成功すれば 1 を返す。

**参考 [#da048403]
 static struct workqueue_struct *kblockd_workqueue;
-
--[[linux-2.6.25/workqueue_struct()]]

-ワークキューに登録した関数はカーネルスレッド上で実行される。
--ユーザコンテキストは存在しない。copy_to_user とかできません。
--内部でスリープ可能である。
--割り込みが許可されている。


*実装 [#r1675863]
 int kblockd_schedule_work(struct work_struct *work)
 {
         return queue_work(kblockd_workqueue, work);
-ブロックデバイス用のワークキューに、
指定された仕事を登録する。
--[[linux-2.6.25/queue_work()]]
--kblockd_workqueue はグローバル変数

 }
 EXPORT_SYMBOL(kblockd_schedule_work);
-関数をエクスポートする。
--[[linux-2.6.25/EXPORT_SYMBOL()]]


*コメント [#m5297a26]

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS