Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenlargepag.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
1.7.6.1
|