MI_ReadCache

構文

#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 初版