*参照元 [#c3ff55cb] #backlinks *説明 [#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]