*参照元 [#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]

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