MI_ReadCache

Syntax

#include <nitro/mi.h>

BOOL MI_ReadCache(MICache *cache, void *buffer, u32 offset, u32 length);

Arguments

cache Pointer to the MICache structure to access.
The cache must have been initialized using MI_InitCache().
buffer The destination memory to store the loaded data. Specifying NULL indicates cache preloading for the specified area.
For more details, see the Description section below.
offset The start address of the device to which data should be read.
length Data size to load.

Return Values

Returns TRUE if the cache is hit and the read succeeds; otherwise, returns FALSE.

Description

Reads data from the cache page list of the MICache structure.

If the data in the specified range has already been loaded with MI_LoadCache(), it will copy data from the cache page list and return TRUE.

If part or all of the specified range does not exist in the cache page list, it will destroy the least-used page within the cache page list, set it to the "waiting to load" state, and return FALSE.

Pages that enter the "waiting to load" state will actually be loaded during the subsequent call to MI_LoadCache().

If NULL is specified for buffer (the destination memory for the transfer), nothing will happen if there is a hit in the cache, but the same processing will apply for putting pages in areas that didn't have hits into the "waiting to load" state. Therefore, this function can be used to instruct to prepare for prefetch the specified range.

This function is thread-safe. This function can be used even while MI_LoadCache() or other such functions are being called in other threads.

This feature is a utility that enables efficient read access to devices. For more information, see the reference for the MICache structure.

See Also

MI_InitCache, MI_LoadCache, MI_IsCacheLoading
MICache

Revision History

2007/05/16 Initial version.


CONFIDENTIAL