2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: ntoskrnl/mm/i386/page.c
5 * PURPOSE: Low level memory managment manipulation
7 * PROGRAMMERS: David Welch (welch@cwcom.net)
10 /* INCLUDES ***************************************************************/
14 #include <internal/debug.h>
16 #if defined (ALLOC_PRAGMA)
17 #pragma alloc_text(INIT, MmInitGlobalKernelPageDirectory)
18 #pragma alloc_text(INIT, MiInitPageDirectoryMap)
22 /* GLOBALS *****************************************************************/
26 /* FUNCTIONS ***************************************************************/
28 BOOLEAN
MmUnmapPageTable(PULONG Pt
);
32 MiFlushTlbIpiRoutine(ULONG_PTR Address
)
39 MiFlushTlb(PULONG Pt
, PVOID Address
)
47 MmGetPageDirectory(VOID
)
49 return (PULONG_PTR
)__readcr3();
53 ProtectToPTE(ULONG flProtect
)
60 Mmi386ReleaseMmInfo(PEPROCESS Process
)
63 return STATUS_UNSUCCESSFUL
;
68 MmInitializeHandBuiltProcess(IN PEPROCESS Process
,
69 IN PLARGE_INTEGER DirectoryTableBase
)
72 return STATUS_UNSUCCESSFUL
;
77 MmCreateProcessAddressSpace(IN ULONG MinWs
,
79 IN PLARGE_INTEGER DirectoryTableBase
)
87 MmDeletePageTable(PEPROCESS Process
, PVOID Address
)
94 MmFreePageTable(PEPROCESS Process
, PVOID Address
)
99 BOOLEAN
MmUnmapPageTable(PULONG Pt
)
107 MmGetPfnForProcess(PEPROCESS Process
,
116 MmDisableVirtualMapping(PEPROCESS Process
, PVOID Address
, BOOLEAN
* WasDirty
, PPFN_TYPE Page
)
123 MmRawDeleteVirtualMapping(PVOID Address
)
130 MmDeleteVirtualMapping(PEPROCESS Process
, PVOID Address
, BOOLEAN FreePage
,
131 BOOLEAN
* WasDirty
, PPFN_TYPE Page
)
138 MmDeletePageFileMapping(PEPROCESS Process
, PVOID Address
,
139 SWAPENTRY
* SwapEntry
)
145 Mmi386MakeKernelPageTableGlobal(PVOID PAddress
)
153 MmIsDirtyPage(PEPROCESS Process
, PVOID Address
)
161 MmIsAccessedAndResetAccessPage(PEPROCESS Process
, PVOID Address
)
169 MmSetCleanPage(PEPROCESS Process
, PVOID Address
)
176 MmSetDirtyPage(PEPROCESS Process
, PVOID Address
)
183 MmEnableVirtualMapping(PEPROCESS Process
, PVOID Address
)
190 MmIsPagePresent(PEPROCESS Process
, PVOID Address
)
198 MmIsPageSwapEntry(PEPROCESS Process
, PVOID Address
)
206 MmCreateVirtualMappingForKernel(PVOID Address
,
212 return STATUS_UNSUCCESSFUL
;
217 MmCreatePageFileMapping(PEPROCESS Process
,
222 return STATUS_UNSUCCESSFUL
;
228 MmCreateVirtualMappingUnsafe(PEPROCESS Process
,
235 return STATUS_UNSUCCESSFUL
;
240 MmCreateVirtualMapping(PEPROCESS Process
,
247 return STATUS_UNSUCCESSFUL
;
252 MmGetPageProtect(PEPROCESS Process
, PVOID Address
)
260 MmSetPageProtect(PEPROCESS Process
, PVOID Address
, ULONG flProtect
)
268 PHYSICAL_ADDRESS STDCALL
269 MmGetPhysicalAddress(PVOID vaddr
)
271 PHYSICAL_ADDRESS ret
= {{0}};
278 MmCreateHyperspaceMapping(PFN_TYPE Page
)
286 MmChangeHyperspaceMapping(PVOID Address
, PFN_TYPE NewPage
)
294 MmDeleteHyperspaceMapping(PVOID Address
)
302 MmUpdatePageDir(PEPROCESS Process
, PVOID Address
, ULONG Size
)
310 MmInitGlobalKernelPageDirectory(VOID
)
318 MiInitPageDirectoryMap(VOID
)