

#include <nitro/mi.h>
BOOL MI_ReadCache(MICache *cache, void *buffer, u32 offset, u32 length);| cache | アクセスするMICache構造体へのポインタMI_InitCache()で初期化されている必要があります。 |
| buffer | 読み込んだデータを格納する転送先メモリ
NULLを指定した場合は、指定範囲のキャッシュ先読みを指示します。 詳細は後述の「説明」をご参照ください。 |
| offset | データを読み込むべきデバイス上の先頭アドレス |
| length | 読み込むサイズ |
キャッシュにヒットして読み込みが成功すればTRUE、そうでなければFALSE。
MICache構造体のキャッシュページリストからデータを読み込みます。
指定された範囲のデータがすでにMI_LoadCache()によってロード済みであれば、
キャッシュページリストからデータをコピーしてTRUEを返します。
指定された範囲の一部または全てがキャッシュページリストに存在しない場合は、 キャッシュページリスト内のもっとも使用されていないページを破棄してロード待ち状態にし、FALSEを返します。
ロード待ち状態になったページは、次回のMI_LoadCache()呼び出しで実際にロードされます。
転送先メモリであるbufferにNULLを指定した場合はキャッシュにヒットしても何もしませんが、 ヒットしなかった範囲のページをロード待ち状態にする処理は同様です。よって、指定範囲を「先読み準備」するよう指示する目的で利用することができます。
この関数はスレッドセーフです。
別のスレッドがMI_LoadCache()などを呼び出している間でも使用することが出来ます。
この機能は、デバイス読み込みアクセスを効率よく行うためのユーティリティです。
詳細はMICache構造体のリファレンスをご参照ください。
MI_InitCache, MI_LoadCache, MI_IsCacheLoading
MICache
2007/05/16 初版