*参照元 [#u7a0be20] #backlinks *説明 [#x01a3452] -パス: [[linux-2.6.25/block/blk-core.c]] -FIXME: これは何? --説明 **引数 [#fe605687] -struct request_queue *q -- --[[linux-2.6.25/request_queue]] **返り値 [#z351208b] -なし **参考 [#fabdf62f] -なし *実装 [#da89204a] /* * "plug" the device if there are no outstanding requests: this will * force the transfer to start only after we have put all the requests * on the list. * * This is called with interrupts off and no requests on the queue and * with the queue lock held. */ void blk_plug_device(struct request_queue *q) { WARN_ON(!irqs_disabled()); -割り込みが無効になっていない場合は警告を発する。 --[[linux-2.6.25/WARN_ON()]] --[[linux-2.6.25/irqs_disabled()]] /* * don't plug a stopped queue, it must be paired with blk_start_queue() * which will restart the queueing */ if (blk_queue_stopped(q)) return; -キューが既に停止している場合は plug(塞ぐこと)しない。 --[[linux-2.6.25/blk_queue_stopped()]] if (!test_and_set_bit(QUEUE_FLAG_PLUGGED, &q->queue_flags)) { -キューが既に plug(塞ぐこと)されていないことを確認する。 --[[linux-2.6.25/test_and_set_bit()]] mod_timer(&q->unplug_timer, jiffies + q->unplug_delay); -キューを unplug するタイマーの期限を再設定 (現在時刻から 3ms 以内)する。 --[[linux-2.6.25/mod_timer()]] --unplug_timer の時間切れで呼び出される関数は、blk_unplug_timeout である。 --unplug_timer や、unplug_delay などの メンバーは blk_queue_make_request にて設定される。 ---[[linux-2.6.25/blk_unplug_timeout()]] ---[[linux-2.6.25/blk_queue_make_request()]] blk_add_trace_generic(q, NULL, 0, BLK_TA_PLUG); - --[[linux-2.6.25/blk_add_trace_generic()]] } } EXPORT_SYMBOL(blk_plug_device); -関数をエクスポートする。 --[[linux-2.6.25/EXPORT_SYMBOL()]] *コメント [#re3ab108]