ReactOS
0.4.15-dev-2087-g6bfb76b
|
Go to the source code of this file.
Classes | |
struct | _POOL_DESCRIPTOR |
struct | _POOL_HEADER |
struct | _POOL_TRACKER_TABLE |
struct | _POOL_TRACKER_BIG_PAGES |
struct | _MI_LARGE_PAGE_DRIVER_ENTRY |
struct | _PHYSICAL_MEMORY_RUN |
struct | _PHYSICAL_MEMORY_DESCRIPTOR |
struct | _MMCOLOR_TABLES |
struct | _MI_LARGE_PAGE_RANGES |
struct | _MMVIEW |
struct | _MMSESSION |
struct | _MM_SESSION_SPACE_FLAGS |
struct | _MM_SESSION_SPACE |
Enumerations | |
enum | _MMSYSTEM_PTE_POOL_TYPE { SystemPteSpace, NonPagedPoolExpansion, MaximumPtePoolTypes } |
enum | _MI_PFN_CACHE_ATTRIBUTE { MiNonCached, MiCached, MiWriteCombined, MiNotMapped } |
#define IMAGE_SCN_PROTECTION_MASK (IMAGE_SCN_MEM_WRITE | IMAGE_SCN_MEM_READ | IMAGE_SCN_MEM_EXECUTE) |
#define MI_GET_NEXT_COLOR | ( | ) | (MI_GET_PAGE_COLOR(++MmSystemPageColor)) |
#define MI_GET_NEXT_PROCESS_COLOR | ( | x | ) | (MI_GET_PAGE_COLOR(++(x)->NextPageColor)) |
#define MI_IS_SESSION_ADDRESS | ( | Address | ) | (((Address) >= MmSessionBase) && ((Address) < MiSessionSpaceEnd)) |
#define MI_IS_SESSION_IMAGE_ADDRESS | ( | Address | ) | (((Address) >= MiSessionImageStart) && ((Address) < MiSessionImageEnd)) |
#define MI_IS_SESSION_PTE | ( | Pte | ) | ((((PMMPTE)Pte) >= MiSessionBasePte) && (((PMMPTE)Pte) < MiSessionLastPte)) |
#define MI_IS_SYSTEM_PAGE_TABLE_ADDRESS | ( | Address | ) | (((Address) >= (PVOID)MiAddressToPte(MmSystemRangeStart)) && ((Address) <= (PVOID)PTE_TOP)) |
#define MI_LOWEST_VAD_ADDRESS (PVOID)MM_LOWEST_USER_ADDRESS |
#define MI_SESSION_DATA_PAGES_MAXIMUM (MM_ALLOCATION_GRANULARITY / PAGE_SIZE) |
#define MI_SESSION_TAG_PAGES_MAXIMUM (MM_ALLOCATION_GRANULARITY / PAGE_SIZE) |
#define MM_DECOMMIT (MM_ZERO_ACCESS | MM_GUARDPAGE) |
#define MM_NOACCESS (MM_ZERO_ACCESS | MM_WRITECOMBINE) |
#define MM_OUTSWAPPED_KSTACK (MM_EXECUTE_WRITECOPY | MM_WRITECOMBINE) |
#define POOL_LISTS_PER_PAGE (PAGE_SIZE / POOL_BLOCK_SIZE) |
#define POOL_MAX_ALLOC (PAGE_SIZE - (sizeof(POOL_HEADER) + POOL_BLOCK_SIZE)) |
#define SYSTEM_PD_SIZE (PPE_PER_PAGE * PD_SIZE) |
typedef struct _MM_SESSION_SPACE MM_SESSION_SPACE |
typedef struct _MMCOLOR_TABLES MMCOLOR_TABLES |
typedef struct _MMSESSION MMSESSION |
typedef struct _MI_LARGE_PAGE_RANGES * PMI_LARGE_PAGE_RANGES |
typedef struct _MM_SESSION_SPACE * PMM_SESSION_SPACE |
typedef struct _MMCOLOR_TABLES * PMMCOLOR_TABLES |
typedef struct _MMSESSION * PMMSESSION |
typedef struct _POOL_DESCRIPTOR POOL_DESCRIPTOR |
typedef struct _POOL_HEADER POOL_HEADER |
typedef struct _PHYSICAL_MEMORY_RUN * PPHYSICAL_MEMORY_RUN |
typedef struct _POOL_DESCRIPTOR * PPOOL_DESCRIPTOR |
typedef struct _POOL_HEADER * PPOOL_HEADER |
typedef struct _POOL_TRACKER_TABLE * PPOOL_TRACKER_TABLE |
Enumerator | |
---|---|
MiNonCached | |
MiCached | |
MiWriteCombined | |
MiNotMapped |
Definition at line 414 of file miarm.h.
Enumerator | |
---|---|
SystemPteSpace | |
NonPagedPoolExpansion | |
MaximumPtePoolTypes |
Definition at line 407 of file miarm.h.
C_ASSERT | ( | sizeof(POOL_HEADER) | = =POOL_BLOCK_SIZE | ) |
C_ASSERT | ( | POOL_BLOCK_SIZE | = =sizeof(LIST_ENTRY) | ) |
VOID NTAPI ExInitializePoolDescriptor | ( | IN PPOOL_DESCRIPTOR | PoolDescriptor, |
IN POOL_TYPE | PoolType, | ||
IN ULONG | PoolIndex, | ||
IN ULONG | Threshold, | ||
IN PVOID | PoolLock | ||
) |
Definition at line 958 of file expool.c.
Referenced by InitializePool(), and MiInitializeSessionPool().
Definition at line 1009 of file expool.c.
Referenced by MiBuildPagedPool(), and MiInitMachineDependent().
FORCEINLINE VOID MI_ERASE_PTE | ( | IN PMMPTE | PointerPte | ) |
Definition at line 989 of file miarm.h.
Referenced by MiDeletePte(), MiDeleteSystemPageableVm(), MiDeleteVirtualAddresses(), MiUnmapLockedPagesInUserSpace(), MmDeletePageFileMapping(), and MmFreeSpecialPool().
Definition at line 1411 of file miarm.h.
Referenced by MiDeleteVirtualAddresses(), MiQueryAddressState(), and NtAllocateVirtualMemory().
FORCEINLINE BOOLEAN MI_IS_MAPPED_PTE | ( | PMMPTE | PointerPte | ) |
FORCEINLINE BOOLEAN MI_IS_PHYSICAL_ADDRESS | ( | IN PVOID | Address | ) |
Definition at line 928 of file miarm.h.
Referenced by MiDispatchFault(), MiFindInitializationCode(), MiFreeInitializationCode(), MiProtectFreeNonPagedPool(), MiReleaseProcessReferenceToSessionDataPage(), MiSetPagingOfDriver(), MiUnProtectFreeNonPagedPool(), MiWriteProtectSystemImage(), MmChangeKernelResourceSectionProtection(), MmFreeDriverInitialization(), MmFreeLoaderBlock(), MmMakeKernelResourceSectionWritable(), and MmProbeAndLockPages().
FORCEINLINE BOOLEAN MI_IS_WS_UNSAFE | ( | IN PEPROCESS | Process | ) |
Definition at line 1089 of file miarm.h.
Referenced by MiLockProcessWorkingSet(), MiLockProcessWorkingSetShared(), MiLockProcessWorkingSetUnsafe(), MiUnlockProcessWorkingSet(), MiUnlockProcessWorkingSetForFault(), MiUnlockProcessWorkingSetShared(), and MiUnlockProcessWorkingSetUnsafe().
FORCEINLINE VOID MI_MAKE_HARDWARE_PTE | ( | IN PMMPTE | NewPte, |
IN PMMPTE | MappingPte, | ||
IN ULONG_PTR | ProtectionMask, | ||
IN PFN_NUMBER | PageFrameNumber | ||
) |
Definition at line 797 of file miarm.h.
Referenced by MiCompleteProtoPteFault(), MiResolveDemandZeroFault(), MiResolvePageFileFault(), MiResolveProtoPteFault(), MmArmAccessFault(), and MmInitializeProcessAddressSpace().
FORCEINLINE VOID MI_MAKE_HARDWARE_PTE_KERNEL | ( | IN PMMPTE | NewPte, |
IN PMMPTE | MappingPte, | ||
IN ULONG_PTR | ProtectionMask, | ||
IN PFN_NUMBER | PageFrameNumber | ||
) |
Definition at line 774 of file miarm.h.
Referenced by MiInitializeWorkingSetList(), MmChangeKernelResourceSectionProtection(), MmCreateKernelStack(), MmGrowKernelStackEx(), and MmInitSystem().
FORCEINLINE VOID MI_MAKE_HARDWARE_PTE_USER | ( | IN PMMPTE | NewPte, |
IN PMMPTE | MappingPte, | ||
IN ULONG_PTR | ProtectionMask, | ||
IN PFN_NUMBER | PageFrameNumber | ||
) |
Definition at line 813 of file miarm.h.
Referenced by MiCompleteProtoPteFault(), MiFlushTbAndCapture(), MiMapLockedPagesInUserSpace(), MiResolveDemandZeroFault(), MiResolveProtoPteFault(), and MmArmAccessFault().
Definition at line 866 of file miarm.h.
FORCEINLINE VOID MI_MAKE_TRANSITION_PTE | ( | _Out_ PMMPTE | NewPte, |
_In_ PFN_NUMBER | Page, | ||
_In_ ULONG | Protection | ||
) |
FORCEINLINE PMMPFN MI_PFN_ELEMENT | ( | IN PFN_NUMBER | Pfn | ) |
Definition at line 1428 of file miarm.h.
Referenced by MiDecrementReferenceCount(), MiDecrementShareCount(), MiDispatchFault(), MiFindContiguousPages(), MiGetPageProtection(), MiInitializeAndChargePfn(), MiInitializePfn(), MiInitializePfnAndMakePteValid(), MiInitializePfnForOtherProcess(), MiInsertPageInFreeList(), MiInsertPageInList(), MiInsertStandbyListAtFront(), MiMapLockedPagesInUserSpace(), MiReleaseProcessReferenceToSessionDataPage(), MiRemoveAnyPage(), MiRemovePageByColor(), MiRemoveZeroPage(), MiResolveDemandZeroFault(), MiResolvePageFileFault(), MiResolveProtoPteFault(), MiSegmentDelete(), MiSessionCommitPageTables(), MiSessionCreateInternal(), MiUnlinkFreeOrZeroedPage(), MiUnlinkPageFromList(), MmArmAccessFault(), and MmFreeSpecialPool().
Definition at line 960 of file miarm.h.
Referenced by MiFlushTbAndCapture(), MiSetSystemCodeProtection(), and MmChangeKernelResourceSectionProtection().
Definition at line 1018 of file miarm.h.
Referenced by MiGetPteForProcess(), and MmArmAccessFault().
Definition at line 975 of file miarm.h.
Referenced by MiAccessCheck(), MiAddMappedPtes(), MiAllocatePoolPages(), MiDecommitPages(), MiDecrementShareCount(), MiMapViewOfDataSection(), MiProcessValidPteList(), MiProtectFreeNonPagedPool(), MiProtectVirtualMemory(), MiResolvePageFileFault(), MiSetProtectionOnSection(), MmArmAccessFault(), MmCommitSessionMappedView(), MmCreateKernelStack(), MmCreatePageFileMapping(), MmGetPageTableForProcess(), MmGrowKernelStackEx(), MmInitializeProcessAddressSpace(), and NtAllocateVirtualMemory().
Definition at line 1001 of file miarm.h.
Referenced by MiAllocatePoolPages(), MiBuildPagedPool(), MiFillSystemPageDirectory(), MiInitializeAndChargePfn(), MiRemoveMappedPtes(), MiSessionCommitPageTables(), MiSessionCreateInternal(), and MiSessionInitializeWorkingSetList().
Definition at line 942 of file miarm.h.
Referenced by MiAllocatePoolPages(), MiBuildPagedPool(), MiCompleteProtoPteFault(), MiCopyPfn(), MiDispatchFault(), MiInitializeColorTables(), MiInitializePfnAndMakePteValid(), MiInitializeWorkingSetList(), MiInitMachineDependent(), MiLoadImageSection(), MiMapLockedPagesInUserSpace(), MiMapPageInHyperSpace(), MiMapPagesInZeroSpace(), MiMapPDEs(), MiMapPfnDatabase(), MiMapPPEs(), MiMapPTEs(), MiReloadBootLoadedDrivers(), MiResolveDemandZeroFault(), MiResolvePageFileFault(), MiResolveProtoPteFault(), MiResolveTransitionFault(), MiSessionCreateInternal(), MiUnProtectFreeNonPagedPool(), MiZeroPfn(), MmAllocateNonCachedMemory(), MmArmAccessFault(), MmCreateKernelStack(), MmGrowKernelStackEx(), MmInitializeProcessAddressSpace(), MmMapIoSpace(), and MmMapLockedPagesSpecifyCache().
FORCEINLINE BOOLEAN MI_WS_OWNER | ( | IN PEPROCESS | Process | ) |
Definition at line 1051 of file miarm.h.
Referenced by MiUnlockProcessWorkingSet(), MiUnlockProcessWorkingSetForFault(), MiUnlockProcessWorkingSetShared(), and MiUnlockProcessWorkingSetUnsafe().
FORCEINLINE KIRQL MiAcquireExpansionLock | ( | VOID | ) |
Definition at line 1385 of file miarm.h.
Referenced by MiDereferenceSessionFinal(), MiSessionAddProcess(), MiSessionInitializeWorkingSetList(), MiSessionLeader(), MiSessionRemoveProcess(), MmDeleteProcessAddressSpace(), and MmGetSessionById().
PMDL NTAPI MiAllocatePagesForMdl | ( | IN PHYSICAL_ADDRESS | LowAddress, |
IN PHYSICAL_ADDRESS | HighAddress, | ||
IN PHYSICAL_ADDRESS | SkipBytes, | ||
IN SIZE_T | TotalBytes, | ||
IN MI_PFN_CACHE_ATTRIBUTE | CacheAttribute, | ||
IN ULONG | Flags | ||
) |
Definition at line 182 of file freelist.c.
Referenced by MmAllocateNonCachedMemory(), MmAllocatePagesForMdl(), and MmAllocatePagesForMdlEx().
TABLE_SEARCH_RESULT NTAPI MiCheckForConflictingNode | ( | IN ULONG_PTR | StartVpn, |
IN ULONG_PTR | EndVpn, | ||
IN PMM_AVL_TABLE | Table, | ||
OUT PMMADDRESS_NODE * | NodeOrParent | ||
) |
Definition at line 78 of file vadnode.c.
Referenced by MiInsertVadEx(), MiMapLockedPagesInUserSpace(), MiProtectVirtualMemory(), MmLocateMemoryAreaByAddress(), MmLocateMemoryAreaByRegion(), and NtAllocateVirtualMemory().
PVOID NTAPI MiCheckForContiguousMemory | ( | IN PVOID | BaseAddress, |
IN PFN_NUMBER | BaseAddressPages, | ||
IN PFN_NUMBER | SizeInPages, | ||
IN PFN_NUMBER | LowestPfn, | ||
IN PFN_NUMBER | HighestPfn, | ||
IN PFN_NUMBER | BoundaryPfn, | ||
IN MI_PFN_CACHE_ATTRIBUTE | CacheAttribute | ||
) |
Definition at line 214 of file contmem.c.
Referenced by MiAllocateContiguousMemory().
Definition at line 475 of file pagfault.c.
Referenced by MiDeletePte(), MiInitializePfn(), MiInitializePfnAndMakePteValid(), and MmArmAccessFault().
NTSTATUS NTAPI MiCheckSecuredVad | ( | IN PMMVAD | Vad, |
IN PVOID | Base, | ||
IN SIZE_T | Size, | ||
IN ULONG | ProtectionMask | ||
) |
Definition at line 815 of file vadnode.c.
Referenced by MiUnmapViewOfSection(), and NtAllocateVirtualMemory().
FORCEINLINE VOID MiDecrementPageTableReferences | ( | IN PVOID | Address | ) |
Definition at line 1684 of file miarm.h.
Referenced by MiDeleteVirtualAddresses(), and MiUnmapLockedPagesInUserSpace().
Definition at line 1222 of file pfnlist.c.
Referenced by MiDecrementShareCount(), MiDeletePte(), MiDereferencePfnAndDropLockCount(), and MmFreePagesFromMdl().
Definition at line 1133 of file pfnlist.c.
Referenced by MiDeletePte(), MiDeleteSystemPageableVm(), MiFreeContiguousMemory(), MiProcessValidPteList(), MiProtectVirtualMemory(), MiReleaseProcessReferenceToSessionDataPage(), MiRemoveMappedPtes(), MiUnmapLockedPagesInUserSpace(), MmDeleteKernelStack(), MmDeleteProcessAddressSpace2(), MmFreeLoaderBlock(), and MmFreeSpecialPool().
Definition at line 3305 of file section.c.
Referenced by MmpDeleteSection().
VOID NTAPI MiDeletePte | ( | IN PMMPTE | PointerPte, |
IN PVOID | VirtualAddress, | ||
IN PEPROCESS | CurrentProcess, | ||
IN PMMPTE | PrototypePte | ||
) |
Definition at line 391 of file virtual.c.
Referenced by MiBalancerThread(), MiDeleteVirtualAddresses(), MiResolveProtoPteFault(), MiUnmapLockedPagesInUserSpace(), MmArmAccessFault(), MmDeleteProcessAddressSpace(), and MmFreeMemoryArea().
PFN_COUNT NTAPI MiDeleteSystemPageableVm | ( | IN PMMPTE | PointerPte, |
IN PFN_NUMBER | PageCount, | ||
IN ULONG | Flags, | ||
OUT PPFN_NUMBER | ValidPages | ||
) |
Definition at line 297 of file virtual.c.
Referenced by MiFreeInitializationCode(), MiFreePoolPages(), MmFreeDriverInitialization(), and MmFreeSpecialPool().
Definition at line 540 of file virtual.c.
Referenced by MiRemoveMappedView(), MmCleanProcessAddressSpace(), MmDeleteTeb(), and NtFreeVirtualMemory().
FORCEINLINE VOID MiDereferencePfnAndDropLockCount | ( | IN PMMPFN | Pfn1 | ) |
Definition at line 1469 of file miarm.h.
Referenced by MI_UNLOCK_VA(), MiCompleteProtoPteFault(), MiDispatchFault(), and MmUnlockPages().
FORCEINLINE ULONG_PTR MiDetermineUserGlobalPteMask | ( | IN PVOID | PointerPte | ) |
Definition at line 737 of file miarm.h.
Referenced by MI_MAKE_HARDWARE_PTE(), and MiResolveTransitionFault().
FORCEINLINE VOID MiDropLockCount | ( | IN PMMPFN | Pfn1 | ) |
Definition at line 1439 of file miarm.h.
Referenced by MiResolveTransitionFault().
PFN_NUMBER NTAPI MiFindContiguousPages | ( | IN PFN_NUMBER | LowestPfn, |
IN PFN_NUMBER | HighestPfn, | ||
IN PFN_NUMBER | BoundaryPfn, | ||
IN PFN_NUMBER | SizeInPages, | ||
IN MEMORY_CACHING_TYPE | CacheType | ||
) |
Definition at line 22 of file contmem.c.
Referenced by MiFindContiguousMemory().
NTSTATUS NTAPI MiFindEmptyAddressRangeDownBasedTree | ( | IN SIZE_T | Length, |
IN ULONG_PTR | BoundaryAddress, | ||
IN ULONG_PTR | Alignment, | ||
IN PMM_AVL_TABLE | Table, | ||
OUT PULONG_PTR | Base | ||
) |
Definition at line 713 of file vadnode.c.
Referenced by MmCreateArm3Section().
TABLE_SEARCH_RESULT NTAPI MiFindEmptyAddressRangeDownTree | ( | IN SIZE_T | Length, |
IN ULONG_PTR | BoundaryAddress, | ||
IN ULONG_PTR | Alignment, | ||
IN PMM_AVL_TABLE | Table, | ||
OUT PULONG_PTR | Base, | ||
OUT PMMADDRESS_NODE * | Parent | ||
) |