From 331debbeec6778c76cf4153dd8f431f670ef8bb7 Mon Sep 17 00:00:00 2001 From: ReactOS Portable Systems Group Date: Thu, 15 Oct 2009 17:01:31 +0000 Subject: [PATCH] - 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 --- reactos/ntoskrnl/mm/ARM3/mmsup.c | 133 +++++++++++++++++++++ reactos/ntoskrnl/mm/freelist.c | 19 +++ reactos/ntoskrnl/mm/mmsup.c | 145 ----------------------- reactos/ntoskrnl/mm/section.c | 35 +++--- reactos/ntoskrnl/ntoskrnl-generic.rbuild | 2 +- 5 files changed, 172 insertions(+), 162 deletions(-) create mode 100644 reactos/ntoskrnl/mm/ARM3/mmsup.c delete mode 100644 reactos/ntoskrnl/mm/mmsup.c diff --git a/reactos/ntoskrnl/mm/ARM3/mmsup.c b/reactos/ntoskrnl/mm/ARM3/mmsup.c new file mode 100644 index 00000000000..ed73cdd9e56 --- /dev/null +++ b/reactos/ntoskrnl/mm/ARM3/mmsup.c @@ -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 +#define NDEBUG +#include + +#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 */ diff --git a/reactos/ntoskrnl/mm/freelist.c b/reactos/ntoskrnl/mm/freelist.c index 9bf2cd3fee9..b6f4faa4af3 100644 --- a/reactos/ntoskrnl/mm/freelist.c +++ b/reactos/ntoskrnl/mm/freelist.c @@ -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) diff --git a/reactos/ntoskrnl/mm/mmsup.c b/reactos/ntoskrnl/mm/mmsup.c deleted file mode 100644 index d8302d96b71..00000000000 --- a/reactos/ntoskrnl/mm/mmsup.c +++ /dev/null @@ -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 -#define NDEBUG -#include - -/* 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 */ diff --git a/reactos/ntoskrnl/mm/section.c b/reactos/ntoskrnl/mm/section.c index 7613d0065e3..240540112dc 100644 --- a/reactos/ntoskrnl/mm/section.c +++ b/reactos/ntoskrnl/mm/section.c @@ -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@ diff --git a/reactos/ntoskrnl/ntoskrnl-generic.rbuild b/reactos/ntoskrnl/ntoskrnl-generic.rbuild index bf90c3bf352..8380cf512c9 100644 --- a/reactos/ntoskrnl/ntoskrnl-generic.rbuild +++ b/reactos/ntoskrnl/ntoskrnl-generic.rbuild @@ -390,6 +390,7 @@ hypermap.c iosup.c mdlsup.c + mmsup.c ncache.c pool.c procsup.c @@ -402,7 +403,6 @@ freelist.c marea.c mmfault.c - mmsup.c mminit.c mpw.c pagefile.c