[ros-diffs] [sir_richard] 49559: [NTOS]: Start using colored pages. This will help performance on real systems significantly as cache is now taken into account by the memory manager. Also radically changes the...

sir_richard at svn.reactos.org sir_richard at svn.reactos.org
Thu Nov 11 13:15:40 UTC 2010


Author: sir_richard
Date: Thu Nov 11 13:15:40 2010
New Revision: 49559

URL: http://svn.reactos.org/svn/reactos?rev=49559&view=rev
Log:
[NTOS]: Start using colored pages. This will help performance on real systems significantly as cache is now taken into account by the memory manager. Also radically changes the way page allocations are given out and creates a less uniform physical memory layout. The fact this now works means that the PFN lists are finally now sane.

Modified:
    trunk/reactos/ntoskrnl/mm/ARM3/pfnlist.c

Modified: trunk/reactos/ntoskrnl/mm/ARM3/pfnlist.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/ARM3/pfnlist.c?rev=49559&r1=49558&r2=49559&view=diff
==============================================================================
--- trunk/reactos/ntoskrnl/mm/ARM3/pfnlist.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/ARM3/pfnlist.c [iso-8859-1] Thu Nov 11 13:15:40 2010
@@ -356,18 +356,15 @@
     ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL);
     ASSERT(MmAvailablePages != 0);
     ASSERT(Color < MmSecondaryColors);
-#if 0
+
     /* Check the colored free list */
     PageIndex = MmFreePagesByColor[FreePageList][Color].Flink;
-    DPRINT1("Found free page: %lx\n", PageIndex);
     if (PageIndex == LIST_HEAD)
     {
         /* Check the colored zero list */
         PageIndex = MmFreePagesByColor[ZeroedPageList][Color].Flink;
-        DPRINT1("Found zero page: %lx\n", PageIndex);
         if (PageIndex == LIST_HEAD)
         {
-#endif
             /* Check the free list */
             ASSERT_LIST_INVARIANT(&MmFreePageListHead);
             PageIndex = MmFreePageListHead.Flink;
@@ -385,10 +382,9 @@
                     ASSERT(MmZeroedPageListHead.Total == 0);
                 }
             }
-#if 0
         }
     }
-#endif
+
     /* Remove the page from its list */
     PageIndex = MiRemovePageByColor(PageIndex, Color);
 
@@ -419,11 +415,9 @@
     ASSERT(Color < MmSecondaryColors);
 
     /* Check the colored zero list */
-#if 0
     PageIndex = MmFreePagesByColor[ZeroedPageList][Color].Flink;
     if (PageIndex == LIST_HEAD)
     {
-#endif
         /* Check the zero list */
         ASSERT_LIST_INVARIANT(&MmZeroedPageListHead);
         PageIndex = MmZeroedPageListHead.Flink;
@@ -433,12 +427,11 @@
             /* This means there's no zero pages, we have to look for free ones */
             ASSERT(MmZeroedPageListHead.Total == 0);
             Zero = TRUE;
-#if 0
+
             /* Check the colored free list */
             PageIndex = MmFreePagesByColor[FreePageList][Color].Flink;
             if (PageIndex == LIST_HEAD)
             {
-#endif
                 /* Check the free list */
                 ASSERT_LIST_INVARIANT(&MmFreePageListHead);
                 PageIndex = MmFreePageListHead.Flink;
@@ -449,13 +442,9 @@
                     /* FIXME: Should check the standby list */
                     ASSERT(MmZeroedPageListHead.Total == 0);
                 }
-#if 0
             }
-#endif
         }
-#if 0
-    }
-#endif
+    }
 
     /* Sanity checks */
     Pfn1 = MI_PFN_ELEMENT(PageIndex);




More information about the Ros-diffs mailing list