# MICache

## 定義

      #include <nitro/mi.h>

      typedef struct MICachePage
      {
          struct MICachePage *next;
          u32                 offset;
          u8                 *buffer;
      }
      MICachePage;

      typedef struct MICache
      {
      /* private: */
          u32             pagewidth;
          MICachePage    *valid;
          MICachePage    *invalid;
          MICachePage    *loading;
          int             valid_total;
          int             invalid_total;
          int             loading_total;
      }
      MICache;

## 説明

`MIDevice`構造体に対するメモリキャッシュを実現するための構造体です。

この機能は、デバイス読み込みアクセスを効率よく行うためのユーティリティです。
主に以下のような特長があります。

- 準局所的なランダムアクセスを行うデバイス制御コードの処理効率を向上させます。
  以前に読み込まれたことのあるデータはページ単位で保持されるため、 限られた範囲のデータを繰り返し参照する場合には初回しかデバイスへアクセスしません。
- 環境やデバイスに依存しない柔軟な非同期処理を記述することが出来ます。
  キャッシュへのアクセスと実際のロード処理はごく単純な形式で提供されているため、 アプリケーションの動作に合った自由な完了待ちルーチンを実装することが出来ます。

## 参照

`MI_InitCache, MI_ReadCache, MI_LoadCache, MI_IsCacheLoading
MIDevice`

## 履歴

2007/05/16 初版