Let FscGetCacheSize return what FscSetCacheSize set

No actual file system cache page allocation though...
This commit is contained in:
PatrickvL 2016-12-13 16:44:04 +01:00
parent ea98d81f9c
commit 78856b08a2
2 changed files with 27 additions and 11 deletions

View File

@ -52,14 +52,17 @@ XBSYSAPI EXPORTNUM(4) VOID NTAPI AvSetSavedDataAddress
// ******************************************************************
// * FscGetCacheSize
// ******************************************************************
XBSYSAPI EXPORTNUM(35) DWORD NTAPI FscGetCacheSize();
XBSYSAPI EXPORTNUM(35) ULONG NTAPI FscGetCacheSize();
XBSYSAPI EXPORTNUM(36) VOID NTAPI FscInvalidateIdleBlocks();
// ******************************************************************
// * FscSetCacheSize
// ******************************************************************
XBSYSAPI EXPORTNUM(37) LONG NTAPI FscSetCacheSize(ULONG uCachePages);
XBSYSAPI EXPORTNUM(37) NTSTATUS NTAPI FscSetCacheSize
(
ULONG NumberOfCachePages
);
XBSYSAPI EXPORTNUM(88) BOOLEAN KdDebuggerEnabled;
XBSYSAPI EXPORTNUM(89) BOOLEAN KdDebuggerNotPresent;

View File

@ -51,16 +51,19 @@ namespace NtDll
#include "Emu.h" // For EmuWarning()
#define FSCACHE_MAXIMUM_NUMBER_OF_CACHE_PAGES 2048
// global variables
xboxkrnl::LONG g_FscNumberOfCachePages = 16; // 16 = default number of file system cache pages
// ******************************************************************
// * 0x0023 - FscGetCacheSize()
// ******************************************************************
XBSYSAPI EXPORTNUM(35) xboxkrnl::DWORD NTAPI xboxkrnl::FscGetCacheSize()
XBSYSAPI EXPORTNUM(35) xboxkrnl::ULONG NTAPI xboxkrnl::FscGetCacheSize()
{
LOG_FUNC();
EmuWarning("FscGetCacheSize returning default 64kb");
RETURN(64 * 1024);
RETURN(g_FscNumberOfCachePages);
}
// ******************************************************************
@ -76,15 +79,25 @@ XBSYSAPI EXPORTNUM(36) xboxkrnl::VOID NTAPI xboxkrnl::FscInvalidateIdleBlocks()
// ******************************************************************
// * 0x0025 - FscSetCacheSize()
// ******************************************************************
XBSYSAPI EXPORTNUM(37) xboxkrnl::LONG NTAPI xboxkrnl::FscSetCacheSize
XBSYSAPI EXPORTNUM(37) xboxkrnl::NTSTATUS NTAPI xboxkrnl::FscSetCacheSize
(
ULONG uCachePages
ULONG NumberOfCachePages
)
{
LOG_FUNC_ONE_ARG(uCachePages);
LOG_FUNC_ONE_ARG(NumberOfCachePages);
LOG_IGNORED();
NTSTATUS ret = STATUS_SUCCESS;
RETURN(0);
if (NumberOfCachePages > FSCACHE_MAXIMUM_NUMBER_OF_CACHE_PAGES)
ret = STATUS_INVALID_PARAMETER;
else
{
// TODO : Actually allocate file system cache pages, for example do something like this :
// if (NumberOfCachePages < g_FscNumberOfCachePages) FscShrinkCacheSize(NumberOfCachePages)
// if (NumberOfCachePages > g_FscNumberOfCachePages) FscGrowCacheSize(NumberOfCachePages), possibly return STATUS_INSUFFICIENT_RESOURCES
g_FscNumberOfCachePages = NumberOfCachePages;
}
RETURN(ret);
}