ReactOS  0.4.14-dev-323-g6fe6a88
largepag.c
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS Kernel
3  * LICENSE: BSD - See COPYING.ARM in the top level directory
4  * FILE: ntoskrnl/mm/ARM3/largepag.c
5  * PURPOSE: ARM Memory Manager Large Page Support
6  * PROGRAMMERS: ReactOS Portable Systems Group
7  */
8 
9 /* INCLUDES *******************************************************************/
10 
11 #include <ntoskrnl.h>
12 #define NDEBUG
13 #include <debug.h>
14 
15 #define MODULE_INVOLVED_IN_ARM3
16 #include <mm/ARM3/miarm.h>
17 
18 /* GLOBALS ********************************************************************/
19 
28 
29 /* FUNCTIONS ******************************************************************/
30 
31 INIT_FUNCTION
32 VOID
33 NTAPI
35 {
36 #if _MI_PAGING_LEVELS > 2
37  DPRINT1("MiInitializeLargePageSupport: PAE/x64 Not Implemented\n");
38  //ASSERT(FALSE);
39 #else
40  /* Initialize the large-page hyperspace PTE used for initial mapping */
44 
45  /* Initialize the process tracking list, and insert the system process */
47  InsertTailList(&MmProcessList, &PsGetCurrentProcess()->MmProcessLinks);
48 #endif
49 }
50 
51 INIT_FUNCTION
52 VOID
53 NTAPI
55 {
56  ULONG i;
57 
58  /* Scan every range */
59  for (i = 0; i < MiLargePageRangeIndex; i++)
60  {
61  UNIMPLEMENTED_DBGBREAK("No support for large pages\n");
62  }
63 }
64 
65 INIT_FUNCTION
66 VOID
67 NTAPI
69 {
70  PWCHAR p, pp;
71 
72  /* Initialize the list */
74 
75  /* Bail out if there's nothing */
76  if (MmLargePageDriverBufferLength == 0xFFFFFFFF) return;
77 
78  /* Loop from start to finish */
81  while (p < pp)
82  {
83  /* Skip whitespaces */
84  if ((*p == L' ') || (*p == L'\n') || (*p == L'\r') || (*p == L'\t'))
85  {
86  /* Skip the character */
87  p++;
88  continue;
89  }
90 
91  /* A star means everything */
92  if (*p == L'*')
93  {
94  /* No need to keep going */
96  break;
97  }
98 
99  DPRINT1("Large page drivers not supported\n");
100  ASSERT(FALSE);
101  }
102 }
103 
104 /* EOF */
#define TRUE
Definition: types.h:120
PMMPTE NTAPI MiReserveSystemPtes(IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType)
Definition: syspte.c:246
LIST_ENTRY MiLargePageDriverList
Definition: largepag.c:26
INIT_FUNCTION VOID NTAPI MiInitializeLargePageSupport(VOID)
Definition: largepag.c:34
PMMPTE MiLargePageHyperPte
Definition: largepag.c:21
uint16_t * PWCHAR
Definition: typedefs.h:54
#define InsertTailList(ListHead, Entry)
INIT_FUNCTION VOID NTAPI MiSyncCachedRanges(VOID)
Definition: largepag.c:54
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
INIT_FUNCTION VOID NTAPI MiInitializeDriverLargePageList(VOID)
Definition: largepag.c:68
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
Definition: IoEaTest.cpp:117
#define pp
Definition: hlsl.yy.c:1208
#define PsGetCurrentProcess
Definition: psfuncs.h:17
unsigned char BOOLEAN
__wchar_t WCHAR
Definition: xmlstorage.h:180
BOOLEAN MiLargePageAllDrivers
Definition: largepag.c:27
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
static const WCHAR L[]
Definition: oid.c:1250
ULONG MiLargePageRangeIndex
Definition: largepag.c:22
Definition: typedefs.h:117
ULONG_PTR Long
Definition: mmtypes.h:215
WCHAR MmLargePageDriverBuffer[512]
Definition: largepag.c:24
#define InitializeListHead(ListHead)
Definition: env_spec_w32.h:944
#define UNIMPLEMENTED_DBGBREAK(...)
Definition: debug.h:57
#define DPRINT1
Definition: precomp.h:8
ULONG MmLargePageDriverBufferLength
Definition: largepag.c:25
unsigned int ULONG
Definition: retypes.h:1
GLfloat GLfloat p
Definition: glext.h:8902
MI_LARGE_PAGE_RANGES MiLargePageRanges[64]
Definition: largepag.c:23
LIST_ENTRY MmProcessList
Definition: largepag.c:20
union _MMPTE::@2256 u