Author: sir_richard Date: Wed May 12 21:11:49 2010 New Revision: 47178
URL: http://svn.reactos.org/svn/reactos?rev=47178&view=rev Log: [NTOS]: Fix MiInsertPageInFreeList, it was using the ARM3 PFN Database macro, even though we are still using the Mm PFN Database. Also, it was lacking the code to notify the zero-page thread, and to increase available pages.
Modified: trunk/reactos/ntoskrnl/mm/ARM3/pfnlist.c trunk/reactos/ntoskrnl/mm/freelist.c
Modified: trunk/reactos/ntoskrnl/mm/ARM3/pfnlist.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/pfnlist.c?... ============================================================================== --- trunk/reactos/ntoskrnl/mm/ARM3/pfnlist.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/ARM3/pfnlist.c [iso-8859-1] Wed May 12 21:11:49 2010 @@ -466,7 +466,7 @@ (PageFrameIndex >= MmLowestPhysicalPage));
/* Get the PFN entry */ - Pfn1 = MI_PFN_TO_PFNENTRY(PageFrameIndex); + Pfn1 = MiGetPfnEntry(PageFrameIndex);
/* Sanity checks that a right kind of page is being inserted here */ ASSERT(Pfn1->u4.MustBeCached == 0); @@ -484,7 +484,7 @@ if (LastPage != LIST_HEAD) { /* Link us with the previous page, so we're at the end now */ - MI_PFN_TO_PFNENTRY(LastPage)->u1.Flink = PageFrameIndex; + MiGetPfnEntry(LastPage)->u1.Flink = PageFrameIndex; } else { @@ -507,8 +507,8 @@ Pfn1->u4.InPageError = 0; Pfn1->u4.AweAllocation = 0;
- /* Not yet until we switch to this */ - //MmAvailablePages++; + /* Increase available pages */ + MmAvailablePages++;
/* Check if we've reached the configured low memory threshold */ if (MmAvailablePages == MmLowMemoryThreshold) @@ -552,7 +552,13 @@ ColorTable->Count++; #endif
- /* FIXME: Notify zero page thread if enough pages are on the free list now */ + /* Notify zero page thread if enough pages are on the free list now */ + extern KEVENT ZeroPageThreadEvent; + if ((MmFreePageListHead.Total > 8) && !(KeReadStateEvent(&ZeroPageThreadEvent))) + { + /* This is ReactOS-specific */ + KeSetEvent(&ZeroPageThreadEvent, IO_NO_INCREMENT, FALSE); + } }
/* EOF */
Modified: trunk/reactos/ntoskrnl/mm/freelist.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/freelist.c?rev=... ============================================================================== --- trunk/reactos/ntoskrnl/mm/freelist.c [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/mm/freelist.c [iso-8859-1] Wed May 12 21:11:49 2010 @@ -49,7 +49,7 @@ SIZE_T MmPeakCommitment; SIZE_T MmtotalCommitLimitMaximum;
-static KEVENT ZeroPageThreadEvent; +KEVENT ZeroPageThreadEvent; static BOOLEAN ZeroPageThreadShouldTerminate = FALSE; static RTL_BITMAP MiUserPfnBitMap;