ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

largepag.c
Go to the documentation of this file.
00001 /*
00002  * PROJECT:         ReactOS Kernel
00003  * LICENSE:         BSD - See COPYING.ARM in the top level directory
00004  * FILE:            ntoskrnl/mm/ARM3/largepag.c
00005  * PURPOSE:         ARM Memory Manager Large Page Support
00006  * PROGRAMMERS:     ReactOS Portable Systems Group
00007  */
00008 
00009 /* INCLUDES *******************************************************************/
00010 
00011 #include <ntoskrnl.h>
00012 #define NDEBUG
00013 #include <debug.h>
00014 
00015 #define MODULE_INVOLVED_IN_ARM3
00016 #include "../ARM3/miarm.h"
00017 
00018 /* GLOBALS ********************************************************************/
00019 
00020 LIST_ENTRY MmProcessList;
00021 PMMPTE MiLargePageHyperPte;
00022 ULONG MiLargePageRangeIndex;
00023 MI_LARGE_PAGE_RANGES MiLargePageRanges[64];
00024 WCHAR MmLargePageDriverBuffer[512] = {0};
00025 ULONG MmLargePageDriverBufferLength = -1;
00026 LIST_ENTRY MiLargePageDriverList;
00027 BOOLEAN MiLargePageAllDrivers;
00028 
00029 /* FUNCTIONS ******************************************************************/
00030 
00031 VOID
00032 NTAPI
00033 INIT_FUNCTION
00034 MiInitializeLargePageSupport(VOID)
00035 {
00036 #if _MI_PAGING_LEVELS > 2
00037     DPRINT1("MiInitializeLargePageSupport: PAE/x64 Not Implemented\n");
00038     //ASSERT(FALSE);
00039 #else
00040     /* Initialize the large-page hyperspace PTE used for initial mapping */
00041     MiLargePageHyperPte = MiReserveSystemPtes(1, SystemPteSpace);
00042     ASSERT(MiLargePageHyperPte);
00043     MiLargePageHyperPte->u.Long = 0;
00044 
00045     /* Initialize the process tracking list, and insert the system process */
00046     InitializeListHead(&MmProcessList);
00047     InsertTailList(&MmProcessList, &PsGetCurrentProcess()->MmProcessLinks);
00048 #endif
00049 }
00050 
00051 VOID
00052 NTAPI
00053 INIT_FUNCTION
00054 MiSyncCachedRanges(VOID)
00055 {
00056     ULONG i;
00057 
00058     /* Scan every range */
00059     for (i = 0; i < MiLargePageRangeIndex; i++)
00060     {
00061         DPRINT1("No support for large pages\n");
00062         while (TRUE);
00063     }
00064 }
00065 
00066 VOID
00067 NTAPI
00068 INIT_FUNCTION
00069 MiInitializeDriverLargePageList(VOID)
00070 {
00071     PWCHAR p, pp;
00072 
00073     /* Initialize the list */
00074     InitializeListHead(&MiLargePageDriverList);
00075 
00076     /* Bail out if there's nothing */
00077     if (MmLargePageDriverBufferLength == 0xFFFFFFFF) return;
00078 
00079     /* Loop from start to finish */
00080     p = MmLargePageDriverBuffer;
00081     pp = MmLargePageDriverBuffer + (MmLargePageDriverBufferLength / sizeof(WCHAR));
00082     while (p < pp)
00083     {
00084         /* Skip whitespaces */
00085         if ((*p == L' ') || (*p == L'\n') || (*p == L'\r') || (*p == L'\t'))
00086         {
00087             /* Skip the character */
00088             p++;
00089             continue;
00090         }
00091 
00092         /* A star means everything */
00093         if (*p == L'*')
00094         {
00095             /* No need to keep going */
00096             MiLargePageAllDrivers = TRUE;
00097             break;
00098         }
00099 
00100         DPRINT1("Large page drivers not supported\n");
00101         ASSERT(FALSE);
00102     }
00103 }
00104 
00105 /* EOF */

Generated on Sat May 26 2012 04:36:21 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.