5 * th9x - http://code.google.com/p/th9x
6 * er9x - http://code.google.com/p/er9x
7 * gruvin9x - http://code.google.com/p/gruvin9x
9 * License GPLv2: http://www.gnu.org/licenses/gpl-2.0.html
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
21 #ifndef _DISK_CACHE_H_
22 #define _DISK_CACHE_H_
28 #define DISK_CACHE_BLOCKS_NUM 32 // no cache blocks
29 #define DISK_CACHE_BLOCK_SECTORS 16 // no sectors
31 #define DISK_CACHE_BLOCK_SIZE (DISK_CACHE_BLOCK_SECTORS * BLOCK_SIZE)
37 bool read(BYTE
* buff
, DWORD sector
, UINT count
);
38 DRESULT
fill(BYTE drv
, BYTE
* buff
, DWORD sector
, UINT count
);
39 void free(DWORD sector
, UINT count
);
44 uint8_t data
[DISK_CACHE_BLOCK_SIZE
];
60 DRESULT
read(BYTE drv
, BYTE
* buff
, DWORD sector
, UINT count
);
61 DRESULT
write(BYTE drv
, const BYTE
* buff
, DWORD sector
, UINT count
);
62 const DiskCacheStats
& getStats() const;
63 int getHitRate() const;
69 DiskCacheBlock
* blocks
;
72 extern DiskCache diskCache
;
74 #endif // _DISK_CACHE_H_