#include <ntoskrnl.h>
#include <internal/debug.h>
+#if defined (ALLOC_PRAGMA)
+#pragma alloc_text(INIT, MmInitializeKernelAddressSpace)
+#endif
+
+
/* GLOBALS ******************************************************************/
STATIC MADDRESS_SPACE KernelAddressSpace;
/* FUNCTIONS *****************************************************************/
VOID
+NTAPI
MmLockAddressSpace(PMADDRESS_SPACE AddressSpace)
{
/*
{
return;
}
- ExAcquireFastMutex(&AddressSpace->Lock);
+ ExEnterCriticalRegionAndAcquireFastMutexUnsafe(&AddressSpace->Lock);
}
VOID
+NTAPI
MmUnlockAddressSpace(PMADDRESS_SPACE AddressSpace)
{
/*
{
return;
}
- ExReleaseFastMutex(&AddressSpace->Lock);
+ ExReleaseFastMutexUnsafeAndLeaveCriticalRegion(&AddressSpace->Lock);
}
-VOID INIT_FUNCTION
+VOID
+INIT_FUNCTION
+NTAPI
MmInitializeKernelAddressSpace(VOID)
{
MmInitializeAddressSpace(NULL, &KernelAddressSpace);
}
-PMADDRESS_SPACE MmGetCurrentAddressSpace(VOID)
+PMADDRESS_SPACE
+NTAPI
+MmGetCurrentAddressSpace(VOID)
{
- return(&PsGetCurrentProcess()->AddressSpace);
+ return(&((PROS_EPROCESS)PsGetCurrentProcess())->AddressSpace);
}
-PMADDRESS_SPACE MmGetKernelAddressSpace(VOID)
+PMADDRESS_SPACE
+NTAPI
+MmGetKernelAddressSpace(VOID)
{
return(&KernelAddressSpace);
}
NTSTATUS
-MmInitializeAddressSpace(PEPROCESS Process,
+NTAPI
+MmInitializeAddressSpace(PROS_EPROCESS Process,
PMADDRESS_SPACE AddressSpace)
{
AddressSpace->MemoryAreaRoot = NULL;
}
else
{
- AddressSpace->LowestAddress = (PVOID)KERNEL_BASE;
+ AddressSpace->LowestAddress = MmSystemRangeStart;
}
AddressSpace->Process = Process;
if (Process != NULL)
}
NTSTATUS
+NTAPI
MmDestroyAddressSpace(PMADDRESS_SPACE AddressSpace)
{
if (AddressSpace->PageTableRefCountTable != NULL)