mirror of
https://github.com/reactos/reactos.git
synced 2024-11-02 12:53:33 +00:00
65ce146169
svn path=/branches/ros-csrss/; revision=57561
154 lines
3.1 KiB
C
154 lines
3.1 KiB
C
/*
|
|
* PROJECT: ReactOS Kernel
|
|
* LICENSE: BSD - See COPYING.ARM in the top level directory
|
|
* FILE: ntoskrnl/mm/ARM3/mmsup.c
|
|
* PURPOSE: ARM Memory Manager Support Routines
|
|
* PROGRAMMERS: ReactOS Portable Systems Group
|
|
*/
|
|
|
|
/* INCLUDES *******************************************************************/
|
|
|
|
#include <ntoskrnl.h>
|
|
#define NDEBUG
|
|
#include <debug.h>
|
|
|
|
#define MODULE_INVOLVED_IN_ARM3
|
|
#include "../ARM3/miarm.h"
|
|
|
|
/* PUBLIC FUNCTIONS ***********************************************************/
|
|
|
|
/*
|
|
* @unimplemented
|
|
*/
|
|
NTSTATUS
|
|
NTAPI
|
|
MmMapUserAddressesToPage(IN PVOID BaseAddress,
|
|
IN SIZE_T NumberOfBytes,
|
|
IN PVOID PageAddress)
|
|
{
|
|
UNIMPLEMENTED;
|
|
return STATUS_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
/*
|
|
* @unimplemented
|
|
*/
|
|
NTSTATUS
|
|
NTAPI
|
|
MmAdjustWorkingSetSize(IN SIZE_T WorkingSetMinimumInBytes,
|
|
IN SIZE_T WorkingSetMaximumInBytes,
|
|
IN ULONG SystemCache,
|
|
IN BOOLEAN IncreaseOkay)
|
|
{
|
|
UNIMPLEMENTED;
|
|
return STATUS_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
/*
|
|
* @unimplemented
|
|
*/
|
|
BOOLEAN
|
|
NTAPI
|
|
MmSetAddressRangeModified(IN PVOID Address,
|
|
IN SIZE_T Length)
|
|
{
|
|
UNIMPLEMENTED;
|
|
return FALSE;
|
|
}
|
|
|
|
/*
|
|
* @implemented
|
|
*/
|
|
BOOLEAN
|
|
NTAPI
|
|
MmIsAddressValid(IN PVOID VirtualAddress)
|
|
{
|
|
#if _MI_PAGING_LEVELS >= 4
|
|
/* Check if the PXE is valid */
|
|
if (MiAddressToPxe(VirtualAddress)->u.Hard.Valid == 0) return FALSE;
|
|
#endif
|
|
|
|
#if _MI_PAGING_LEVELS >= 3
|
|
/* Check if the PPE is valid */
|
|
if (MiAddressToPpe(VirtualAddress)->u.Hard.Valid == 0) return FALSE;
|
|
#endif
|
|
|
|
#if _MI_PAGING_LEVELS >= 2
|
|
/* Check if the PDE is valid */
|
|
if (MiAddressToPde(VirtualAddress)->u.Hard.Valid == 0) return FALSE;
|
|
#endif
|
|
|
|
/* Check if the PTE is valid */
|
|
if (MiAddressToPte(VirtualAddress)->u.Hard.Valid == 0) return FALSE;
|
|
|
|
/* This address is valid now, but it will only stay so if the caller holds
|
|
* the PFN lock */
|
|
return TRUE;
|
|
}
|
|
|
|
/*
|
|
* @unimplemented
|
|
*/
|
|
BOOLEAN
|
|
NTAPI
|
|
MmIsNonPagedSystemAddressValid(IN PVOID VirtualAddress)
|
|
{
|
|
DPRINT1("WARNING: %s returns bogus result\n", __FUNCTION__);
|
|
return MmIsAddressValid(VirtualAddress);
|
|
}
|
|
|
|
/*
|
|
* @unimplemented
|
|
*/
|
|
NTSTATUS
|
|
NTAPI
|
|
MmSetBankedSection(IN HANDLE ProcessHandle,
|
|
IN PVOID VirtualAddress,
|
|
IN ULONG BankLength,
|
|
IN BOOLEAN ReadWriteBank,
|
|
IN PVOID BankRoutine,
|
|
IN PVOID Context)
|
|
{
|
|
UNIMPLEMENTED;
|
|
return STATUS_NOT_IMPLEMENTED;
|
|
}
|
|
|
|
/*
|
|
* @implemented
|
|
*/
|
|
BOOLEAN
|
|
NTAPI
|
|
MmIsRecursiveIoFault(VOID)
|
|
{
|
|
PETHREAD Thread = PsGetCurrentThread();
|
|
|
|
//
|
|
// If any of these is true, this is a recursive fault
|
|
//
|
|
return ((Thread->DisablePageFaultClustering) | (Thread->ForwardClusterOnly));
|
|
}
|
|
|
|
/*
|
|
* @implemented
|
|
*/
|
|
BOOLEAN
|
|
NTAPI
|
|
MmIsThisAnNtAsSystem(VOID)
|
|
{
|
|
/* Return if this is a server system */
|
|
return MmProductType & 0xFF;
|
|
}
|
|
|
|
/*
|
|
* @implemented
|
|
*/
|
|
MM_SYSTEMSIZE
|
|
NTAPI
|
|
MmQuerySystemSize(VOID)
|
|
{
|
|
/* Return the low, medium or high memory system type */
|
|
return MmSystemSize;
|
|
}
|
|
|
|
/* EOF */
|