# FS_SetSeekCache

## 構文

    #include <nitro/fs.h>

    BOOL FS_SetSeekCache(FSFile *file, void* buf, u32 bufsize);

## 引数

file | すでに開かれているファイル 引数の条件について、後述の【注意】もご参照ください。
buf | シーク用キャッシュとして使用させるバッファ NULLを指定した場合は以前に設定したキャッシュバッファの使用を解除します。 引数の条件について、後述の【注意】もご参照ください。
bufsize | バッファのサイズ シーク用キャッシュとして充分なサイズは`FS_GetSeekCacheSize()`で取得することができます。 サイズが小さい場合、ライブラリは与えられたサイズの範囲で可能な限りのキャッシュを構築します。

## 返り値

処理が成功すればTRUEを返します。
以下の場合には失敗してFALSEを返します。

- 指定されたバッファがメインメモリ上ではない場合
- 指定されたバッファの両端をキャッシュライン32バイト境界で切り詰めたら領域が0バイトになってしまう場合

## 説明

シーク用キャッシュバッファを設定します。
NANDアーカイブやSDカードアーカイブなど 内部フォーマットにFATを採用しているアーカイブではファイル終端や逆方向へのシーク処理に大きな実行コストを要する場合があります。 読み込み専用ファイルのシーク操作を頻繁に使用することがわかっている場合、この関数を使用することによってシーク速度を向上することができます。

この関数で設定したバッファは、ファイルを閉じるか明示的にNULLを指定して使用を解除するまでライブラリ内部で管理されます。

この関数は、指定されたバッファの範囲内で先端と終端をキャッシュライン境界に整合させて切り詰めた領域だけを使用します。 `FS_GetSeekCacheSize()`で取得するバッファサイズには、 どのようなアドレスでも使用できる充分な余白が含まれています。

## 注意

- 指定するファイルは読み込み専用モードで開かれている必要があります。
- 指定するシーク用キャッシュは4バイトの整数倍に境界整合されたメインメモリ上のバッファである必要があります。

## 参照

`FS_SeekFile FS_GetSeekCacheSize`

## 履歴

2009/02/05 バッファのキャッシュライン境界整合に関する追記
2008/07/01 ファイルが読み込み専用モードで開かれている必要がある旨を追記
2008/06/26 初版