[NTOS:MM]
[reactos.git] / reactos / ntoskrnl / mm / ARM3 / miarm.h
index bb807bd..73c176c 100644 (file)
@@ -459,7 +459,7 @@ typedef struct _MM_SESSION_SPACE
     SIZE_T CommittedPages;
     PVOID PagedPoolStart;
     PVOID PagedPoolEnd;
-    PMMPTE PagedPoolBasePde;
+    PMMPDE PagedPoolBasePde;
     ULONG Color;
     LONG ResidentProcessCount;
     ULONG SessionPoolAllocationFailures[4];
@@ -479,9 +479,9 @@ typedef struct _MM_SESSION_SPACE
     PDRIVER_UNLOAD Win32KDriverUnload;
     POOL_DESCRIPTOR PagedPool;
 #if defined (_M_AMD64)
-    MMPTE PageDirectory;
+    MMPDE PageDirectory;
 #else
-    PMMPTE PageTables;
+    PMMPDE PageTables;
 #endif
 #if defined (_M_AMD64)
     PMMPTE SpecialPoolFirstPte;
@@ -634,6 +634,8 @@ extern SIZE_T MmSystemLockPagesCount;
 extern ULONG_PTR MmSubsectionBase;
 extern LARGE_INTEGER MmCriticalSectionTimeout;
 extern LIST_ENTRY MmWorkingSetExpansionHead;
+extern KSPIN_LOCK MmExpansionLock;
+extern PETHREAD MiExpansionLockOwner;
 
 FORCEINLINE
 BOOLEAN
@@ -1330,6 +1332,29 @@ MiLockProcessWorkingSetForFault(IN PEPROCESS Process,
     }
 }
 
+FORCEINLINE
+KIRQL
+MiAcquireExpansionLock(VOID)
+{
+    KIRQL OldIrql;
+
+    ASSERT(KeGetCurrentIrql() <= APC_LEVEL);
+    KeAcquireSpinLock(&MmExpansionLock, &OldIrql);
+    ASSERT(MiExpansionLockOwner == NULL);
+    MiExpansionLockOwner = PsGetCurrentThread();
+    return OldIrql;
+}
+
+FORCEINLINE
+VOID
+MiReleaseExpansionLock(KIRQL OldIrql)
+{
+    ASSERT(MiExpansionLockOwner == PsGetCurrentThread());
+    MiExpansionLockOwner = NULL;
+    KeReleaseSpinLock(&MmExpansionLock, OldIrql);
+    ASSERT(KeGetCurrentIrql() <= APC_LEVEL);
+}
+
 //
 // Returns the ProtoPTE inside a VAD for the given VPN
 //
@@ -1887,7 +1912,7 @@ NTSTATUS
 NTAPI
 MiInitializeAndChargePfn(
     OUT PPFN_NUMBER PageFrameIndex,
-    IN PMMPTE PointerPde,
+    IN PMMPDE PointerPde,
     IN PFN_NUMBER ContainingPageFrame,
     IN BOOLEAN SessionAllocation
 );
@@ -1904,7 +1929,7 @@ VOID
 NTAPI
 MiInitializePfnForOtherProcess(
     IN PFN_NUMBER PageFrameIndex,
-    IN PMMPTE PointerPte,
+    IN PVOID PteAddress,
     IN PFN_NUMBER PteFrame
 );
 
@@ -2039,13 +2064,6 @@ MiCheckSecuredVad(
     IN ULONG ProtectionMask
 );
 
-VOID
-NTAPI
-MiInsertVad(
-    IN PMMVAD Vad,
-    IN PEPROCESS Process
-);
-
 NTSTATUS
 NTAPI
 MiInsertVadEx(
@@ -2210,7 +2228,7 @@ MmDeterminePoolType(
 VOID
 NTAPI
 MiMakePdeExistAndMakeValid(
-    IN PMMPTE PointerPde,
+    IN PMMPDE PointerPde,
     IN PEPROCESS TargetProcess,
     IN KIRQL OldIrql
 );