- Get rid of mm/mmsup.c and move some of the ROS-internal functions better where they belong.

- Add ARM3/mmsup.c for miscellaneous function helper functions.
  - Implemented:
  - Move MmIsRecursiveIoFault, MmIsThisanNtAsSystem and MmQuerySystemSize. These belong here.
  - Unimplemented:
  - Move MmSetBankedSection and fix the prototype. This should probably go somewhere else later.
  - Move MmAdjustWorkingSetSize and fix the prototype. This should probably go in procsup.c later.
  - Move MmMapUserAddressesToPage. This should also probably go in procsup.c later.
  - Move MmSetAddressrangeModified and MmIsNonPagedsystemAddressValid. These should probably go somewhere else later.

svn path=/trunk/; revision=43481
This commit is contained in:
ReactOS Portable Systems Group 2009-10-15 17:01:31 +00:00
parent c04d1d038e
commit 331debbeec
5 changed files with 172 additions and 162 deletions

View file

@ -0,0 +1,133 @@
/*
* 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>
#line 15 "ARM³::MMSUP"
#define MODULE_INVOLVED_IN_ARM3
#include "../ARM3/miarm.h"
/* GLOBALS ********************************************************************/
BOOLEAN IsThisAnNtAsSystem = FALSE;
MM_SYSTEMSIZE MmSystemSize = MmSmallSystem;
/* 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;
}
/*
* @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 IsThisAnNtAsSystem;
}
/*
* @implemented
*/
MM_SYSTEMSIZE
NTAPI
MmQuerySystemSize(VOID)
{
//
// Return the low, medium or high memory system type
//
return MmSystemSize;
}
/* EOF */

View file

@ -1077,6 +1077,25 @@ MmAllocPage(ULONG Consumer, SWAPENTRY SwapEntry)
return PfnOffset;
}
NTSTATUS
NTAPI
MiZeroPage(PFN_TYPE Page)
{
KIRQL Irql;
PVOID TempAddress;
Irql = KeRaiseIrqlToDpcLevel();
TempAddress = MiMapPageToZeroInHyperSpace(Page);
if (TempAddress == NULL)
{
return(STATUS_NO_MEMORY);
}
memset(TempAddress, 0, PAGE_SIZE);
MiUnmapPagesInZeroSpace(TempAddress, 1);
KeLowerIrql(Irql);
return(STATUS_SUCCESS);
}
NTSTATUS
NTAPI
MmZeroPageThreadMain(PVOID Ignored)

View file

@ -1,145 +0,0 @@
/*
* COPYRIGHT: See COPYING in the top directory
* PROJECT: ReactOS kernel
* FILE: ntoskrnl/mm/mmsup.c
* PURPOSE: Kernel memory managment functions
* PROGRAMMERS: David Welch (welch@cwcom.net)
*/
/* INCLUDES *******************************************************************/
#include <ntoskrnl.h>
#define NDEBUG
#include <debug.h>
/* GLOBALS ********************************************************************/
BOOLEAN IsThisAnNtAsSystem = FALSE;
MM_SYSTEMSIZE MmSystemSize = MmSmallSystem;
/* PRIVATE FUNCTIONS **********************************************************/
NTSTATUS
NTAPI
MiZeroPage(PFN_TYPE Page)
{
KIRQL Irql;
PVOID TempAddress;
Irql = KeRaiseIrqlToDpcLevel();
TempAddress = MiMapPageToZeroInHyperSpace(Page);
if (TempAddress == NULL)
{
return(STATUS_NO_MEMORY);
}
memset(TempAddress, 0, PAGE_SIZE);
MiUnmapPagesInZeroSpace(TempAddress, 1);
KeLowerIrql(Irql);
return(STATUS_SUCCESS);
}
NTSTATUS
NTAPI
MiCopyFromUserPage(PFN_TYPE DestPage, PVOID SourceAddress)
{
PEPROCESS Process;
KIRQL Irql;
PVOID TempAddress;
Process = PsGetCurrentProcess();
TempAddress = MiMapPageInHyperSpace(Process, DestPage, &Irql);
if (TempAddress == NULL)
{
return(STATUS_NO_MEMORY);
}
memcpy(TempAddress, SourceAddress, PAGE_SIZE);
MiUnmapPageInHyperSpace(Process, TempAddress, Irql);
return(STATUS_SUCCESS);
}
/* PRIVATE FUNCTIONS **********************************************************/
/* Miscellanea functions: they may fit somewhere else */
/*
* @implemented
*/
BOOLEAN
NTAPI
MmIsRecursiveIoFault (VOID)
{
PETHREAD Thread = PsGetCurrentThread();
return (Thread->DisablePageFaultClustering | Thread->ForwardClusterOnly);
}
/*
* @unimplemented
*/
NTSTATUS
NTAPI
MmMapUserAddressesToPage(IN PVOID BaseAddress,
IN SIZE_T NumberOfBytes,
IN PVOID PageAddress)
{
UNIMPLEMENTED;
return STATUS_NOT_IMPLEMENTED;
}
/*
* @unimplemented
*/
ULONG NTAPI
MmAdjustWorkingSetSize (ULONG Unknown0,
ULONG Unknown1,
ULONG Unknown2,
ULONG Unknown3)
{
UNIMPLEMENTED;
return (0);
}
/*
* @unimplemented
*/
BOOLEAN
NTAPI
MmSetAddressRangeModified (
IN PVOID Address,
IN ULONG Length
)
{
UNIMPLEMENTED;
return (FALSE);
}
/*
* @implemented
*/
BOOLEAN NTAPI MmIsNonPagedSystemAddressValid(PVOID VirtualAddress)
{
DPRINT1("WARNING: %s returns bogus result\n", __FUNCTION__);
return MmIsAddressValid(VirtualAddress);
}
/*
* @implemented
*/
BOOLEAN
NTAPI
MmIsThisAnNtAsSystem(VOID)
{
return IsThisAnNtAsSystem;
}
/*
* @implemented
*/
MM_SYSTEMSIZE
NTAPI
MmQuerySystemSize(VOID)
{
return MmSystemSize;
}
/* EOF */

View file

@ -574,6 +574,25 @@ BOOLEAN MiIsPageFromCache(PMEMORY_AREA MemoryArea,
return FALSE;
}
NTSTATUS
NTAPI
MiCopyFromUserPage(PFN_TYPE DestPage, PVOID SourceAddress)
{
PEPROCESS Process;
KIRQL Irql;
PVOID TempAddress;
Process = PsGetCurrentProcess();
TempAddress = MiMapPageInHyperSpace(Process, DestPage, &Irql);
if (TempAddress == NULL)
{
return(STATUS_NO_MEMORY);
}
memcpy(TempAddress, SourceAddress, PAGE_SIZE);
MiUnmapPageInHyperSpace(Process, TempAddress, Irql);
return(STATUS_SUCCESS);
}
NTSTATUS
NTAPI
MiReadPage(PMEMORY_AREA MemoryArea,
@ -4941,22 +4960,6 @@ MmUnmapViewInSessionSpace (
return STATUS_NOT_IMPLEMENTED;
}
/*
* @unimplemented
*/
NTSTATUS NTAPI
MmSetBankedSection (ULONG Unknown0,
ULONG Unknown1,
ULONG Unknown2,
ULONG Unknown3,
ULONG Unknown4,
ULONG Unknown5)
{
UNIMPLEMENTED;
return (STATUS_NOT_IMPLEMENTED);
}
/**********************************************************************
* NAME EXPORTED
* MmCreateSection@

View file

@ -390,6 +390,7 @@
<file>hypermap.c</file>
<file>iosup.c</file>
<file>mdlsup.c</file>
<file>mmsup.c</file>
<file>ncache.c</file>
<file>pool.c</file>
<file>procsup.c</file>
@ -402,7 +403,6 @@
<file>freelist.c</file>
<file>marea.c</file>
<file>mmfault.c</file>
<file>mmsup.c</file>
<file>mminit.c</file>
<file>mpw.c</file>
<file>pagefile.c</file>