diary)この広告は、90日以上更新していないブログに表示しています。勉強はじめに前回のエントリでバッファに関する説明を書きました。ソースを追っているだけではバッファの状態遷移の仕方がわかりづらかったので絵を描いてみました。主要なものだけ簡単に。Systemを読んでください。これを立てないと書き込みになるB_DONEこのバッファは最新の情報を持っている。デバイスと同期が取れている(読み込み・書き込み)、もしくは、デバイスより新しいデータを持っている(書き込み)B_BUSYこのバッファは使用中。av-listに存在しないB_WANTEDこのバッファは使用中で、解放されるのを誰かが待っている状態B_ASYNC先読み、非同期書き込みを行う。デバイスの動作完了を待たない。)内でB_BUSYがリセットされるB_DELWRI遅延書き込み。)欲しいバッファがb-list内でB_BUSYだったときはB_WANTEDフラグを立てて寝ます。)でバッファを解放すると起きます。特徴的なのはav-listからバッファを取得しようとしたときに、それがB_DELWRI(遅延書き込み)バッファならば非同期(B_ASYNC)でデバイスへの書き込みを行うことです。av-listからバッファを取得した場合、B_BUSY(とB_RELOC)だけフラグが立つことに注意してください。