#include "mi.h"
Go to the source code of this file.
Defines | |
#define | MM_MIN_SYSPTE_FREE 500 |
#define | MM_MAX_SYSPTE_FREE 3000 |
#define | MM_PTE_LIST_1 400 |
#define | MM_PTE_LIST_2 100 |
#define | MM_PTE_LIST_4 60 |
#define | MM_PTE_LIST_8 50 |
#define | MM_PTE_LIST_16 40 |
#define | MM_PTE_TABLE_LIMIT 16 |
Functions | |
VOID | MiFeedSysPtePool (IN ULONG Index) |
PMMPTE | MiReserveSystemPtes2 (IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType, IN ULONG Alignment, IN ULONG Offset, IN ULONG BugCheckOnFailure) |
ULONG | MiGetSystemPteListCount (IN ULONG ListSize) |
VOID | MiDumpSystemPtes (IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType) |
ULONG | MiCountFreeSystemPtes (IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType) |
PVOID | MiGetHighestPteConsumer (OUT PULONG_PTR NumberOfPtes) |
PMMPTE | MiReserveSystemPtes (IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType, IN ULONG Alignment, IN ULONG Offset, IN ULONG BugCheckOnFailure) |
VOID | MiReleaseSystemPtes (IN PMMPTE StartingPte, IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType) |
VOID | MiInitializeSystemPtes (IN PMMPTE StartingPte, IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType) |
VOID | MiAddSystemPtes (IN PMMPTE StartingPte, IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType) |
LOGICAL | MiGetSystemPteAvailability (IN ULONG NumberOfPtes, IN MM_PAGE_PRIORITY Priority) |
Variables | |
ULONG | MmTotalFreeSystemPtes [MaximumPtePoolTypes] |
PMMPTE | MmSystemPtesStart [MaximumPtePoolTypes] |
PMMPTE | MmSystemPtesEnd [MaximumPtePoolTypes] |
PMMPTE | MmFlushPte1 |
ULONG | MmFlushCounter |
ULONG | MmSysPteIndex [MM_SYS_PTE_TABLES_MAX] = {1,2,4,8,16} |
UCHAR | MmSysPteTables [17] = {0,0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4} |
MMPTE | MmFreeSysPteListBySize [MM_SYS_PTE_TABLES_MAX] |
PMMPTE | MmLastSysPteListBySize [MM_SYS_PTE_TABLES_MAX] |
ULONG | MmSysPteListBySizeCount [MM_SYS_PTE_TABLES_MAX] |
ULONG | MmSysPteMinimumFree [MM_SYS_PTE_TABLES_MAX] = {100,50,30,20,20} |
|
Definition at line 74 of file sysptes.c. Referenced by MiReleaseSystemPtes(). |
|
Definition at line 73 of file sysptes.c. Referenced by MiFeedSysPtePool(), and MiReleaseSystemPtes(). |
|
Definition at line 110 of file sysptes.c. Referenced by MiInitializeSystemPtes(). |
|
Definition at line 114 of file sysptes.c. Referenced by MiInitializeSystemPtes(). |
|
Definition at line 111 of file sysptes.c. Referenced by MiInitializeSystemPtes(). |
|
Definition at line 112 of file sysptes.c. Referenced by MiInitializeSystemPtes(). |
|
Definition at line 113 of file sysptes.c. Referenced by MiInitializeSystemPtes(). |
|
Definition at line 116 of file sysptes.c. Referenced by MiGetSystemPteAvailability(), MiGetSystemPteListCount(), MiReleaseSystemPtes(), and MiReserveSystemPtes(). |
|
Definition at line 1907 of file sysptes.c. References ASSERT, Index, MiFillMemoryPte, MiReleaseSystemPtes(), MM_KERNEL_NOACCESS_PTE, MmSystemPtesEnd, MmSystemPtesStart, NULL, SystemPteSpace, TRUE, and USHORT. Referenced by MiInitMachineDependent(), and MmInitSystem().
|
|
Referenced by MiInitializeSystemPtes(), MiReleaseSystemPtes(), and MiReserveSystemPtes2(). |
|
Referenced by MiReleaseSystemPtes(), and MiReserveSystemPtes2(). |
|
Definition at line 788 of file sysptes.c. References FALSE, Index, MiReleaseSystemPtes(), MiReserveSystemPtes2(), MM_MIN_SYSPTE_FREE, MmSysPteIndex, MmTotalFreeSystemPtes, NULL, and SystemPteSpace. Referenced by MiReserveSystemPtes().
|
|
Definition at line 1901 of file iosup.c. References _PTE_TRACKER::CallingAddress, _PTE_TRACKER::Count, FALSE, _SYSPTES_HEADER::ListHead, MiPteHeader, MiTrackPtesAborted, MmTrackPtes, NULL, PPTE_TRACKER, PsLoadedModuleList, and TRUE. Referenced by MiReserveSystemPtes2().
|
|
Definition at line 2030 of file sysptes.c. References FALSE, HighPagePriority, Index, MM_PTE_TABLE_LIMIT, MmSysPteListBySizeCount, MmSysPteMinimumFree, MmSysPteTables, MmTotalFreeSystemPtes, NormalPagePriority, SystemPteSpace, and TRUE. Referenced by MiMapSinglePage(), and MmMapLockedPagesSpecifyCache().
|
|
Referenced by MmCreateKernelStack(). |
|
Definition at line 1740 of file sysptes.c. References ASSERT, MI_PTE_BASE_FOR_LOWEST_KERNEL_ADDRESS, MI_WRITE_INVALID_PTE, MiAllocatePoolPages(), MiCountFreeSystemPtes(), MiFillMemoryPte, MiReleaseSystemPtes(), MiReserveSystemPtes(), MM_EMPTY_LIST, MM_EMPTY_PTE_LIST, MM_PTE_LIST_1, MM_PTE_LIST_16, MM_PTE_LIST_2, MM_PTE_LIST_4, MM_PTE_LIST_8, MM_SYS_PTE_TABLES_MAX, MmFirstFreeSystemPte, MmFlushCounter, MmFlushPte1, MmFreeSysPteListBySize, MmLastSysPteListBySize, MmSysPteIndex, MmSystemPteBase, MmSystemPtesEnd, MmSystemPtesStart, MmTotalFreeSystemPtes, NonPagedPool, NULL, SystemPteSpace, TRUE, _MMPTE::u, and ZeroKernelPte. Referenced by MiInitializeNonPagedPool(), and MiInitMachineDependent().
|
|
Definition at line 1354 of file sysptes.c. References ASSERT, _MMPTE_FLUSH_LIST::Count, DbgPrint, DISPATCH_LEVEL, _MMPTE_FLUSH_LIST::FlushPte, _MMPTE_FLUSH_LIST::FlushVa, Index, KeBugCheckEx(), KeFlushEntireTb(), KeLowerIrql(), KeRaiseIrql(), MiCountFreeSystemPtes(), MiDumpSystemPtes(), MiFillMemoryPte, MiFlushPteList(), MiGetVirtualAddressMappedByPte, MiLockSystemSpace, MiUnlockSystemSpace, MM_DBG_SYS_PTES, MM_EMPTY_PTE_LIST, MM_KERNEL_NOACCESS_PTE, MM_MAX_SYSPTE_FREE, MM_MAXIMUM_FLUSH_COUNT, MM_MIN_SYSPTE_FREE, MM_PTE_TABLE_LIMIT, MmFirstFreeSystemPte, MmFlushCounter, MmFlushPte1, MmFreeSysPteListBySize, MmLastSysPteListBySize, MmSysPteIndex, MmSysPteListBySizeCount, MmSysPteMinimumFree, MmSysPteTables, MmSystemPteBase, MmSystemPtesEnd, MmSystemPtesStart, MmTotalFreeSystemPtes, NULL, PAGE_SIZE, Size, SystemPteSpace, TRUE, _MMPTE::u, and ZeroKernelPte. Referenced by ExFreePool(), MiAddSystemPtes(), MiDereferenceSession(), MiFeedSysPtePool(), MiFreeNonPagedPool(), MiInitializeSystemPtes(), MiLoadImageSection(), MiReloadBootLoadedDrivers(), MiSessionCreateInternal(), MiUnmapSinglePage(), MmAllocateIndependentPages(), MmAllocateNonCachedMemory(), MmDeleteKernelStack(), MmFreeNonCachedMemory(), MmMapIoSpace(), MmMapLockedPagesSpecifyCache(), MmMapVideoDisplay(), MmUnloadSystemImage(), MmUnmapIoSpace(), MmUnmapLockedPages(), and MmUnmapVideoDisplay().
|
|
Definition at line 524 of file sysptes.c. References ASSERT, Index, KeBugCheckEx(), KeFlushEntireTb(), MiFeedSysPtePool(), MiLockSystemSpace, MiReserveSystemPtes2(), MiUnlockSystemSpace, MM_DBG_SYS_PTES, MM_EMPTY_PTE_LIST, MM_FLUSH_COUNTER_MASK, MM_KERNEL_NOACCESS_PTE, MM_PTE_TABLE_LIMIT, MmFlushCounter, MmFlushPte1, MmFreeSysPteListBySize, MmLastSysPteListBySize, MmSysPteIndex, MmSysPteListBySizeCount, MmSysPteMinimumFree, MmSysPteTables, MmSystemPteBase, MmSystemPtesEnd, MmSystemPtesStart, NULL, Offset, PAGE_SHIFT, PTE_SHIFT, SystemPteSpace, TRUE, and _MMPTE::u. Referenced by ExAllocatePool(), MiAllocatePoolPages(), MiBuildPagedPool(), MiFindContiguousMemory(), MiInitializeSpecialPool(), MiInitializeSystemPtes(), MiInitMachineDependent(), MiLoadImageSection(), MiMapBBTMemory(), MiMapSinglePage(), MiReloadBootLoadedDrivers(), MiSessionCreateInternal(), MmAllocateIndependentPages(), MmAllocateNonCachedMemory(), MmCreateKernelStack(), MmMapIoSpace(), MmMapLockedPagesSpecifyCache(), and MmMapVideoDisplay().
|
|
Definition at line 843 of file sysptes.c. References ASSERT, _MMPTE_FLUSH_LIST::Count, DbgPrint, DISPATCH_LEVEL, _MMPTE_FLUSH_LIST::FlushPte, _MMPTE_FLUSH_LIST::FlushVa, KeBugCheckEx(), KeLowerIrql(), KeRaiseIrql(), MiCountFreeSystemPtes(), MiDumpSystemPtes(), MiFlushPteList(), MiGetHighestPteConsumer(), MiGetVirtualAddressMappedByPte, MiLockSystemSpace, MiUnlockSystemSpace, MM_DBG_SYS_PTES, MM_EMPTY_PTE_LIST, MM_MAXIMUM_FLUSH_COUNT, MmFirstFreeSystemPte, MmNumberOfSystemPtes, MmSystemPteBase, MmTotalFreeSystemPtes, NULL, Offset, PAGE_SHIFT, PAGE_SIZE, PTE_SHIFT, SystemPteSpace, TRUE, _MMPTE::u, and ZeroKernelPte. Referenced by MiFeedSysPtePool(), and MiReserveSystemPtes().
|
|
Definition at line 78 of file sysptes.c. Referenced by MiFlushPteList(), MiInitializeSystemPtes(), MiReleaseSystemPtes(), and MiReserveSystemPtes(). |
|
Definition at line 76 of file sysptes.c. Referenced by MiInitializeSystemPtes(), MiReleaseSystemPtes(), and MiReserveSystemPtes(). |
|
Definition at line 101 of file sysptes.c. Referenced by MiInitializeSystemPtes(), MiReleaseSystemPtes(), and MiReserveSystemPtes(). |
|
Definition at line 102 of file sysptes.c. Referenced by MiInitializeSystemPtes(), MiReleaseSystemPtes(), and MiReserveSystemPtes(). |
|
Definition at line 96 of file sysptes.c. Referenced by MiFeedSysPtePool(), MiInitializeSystemPtes(), MiReleaseSystemPtes(), and MiReserveSystemPtes(). |
|
Definition at line 103 of file sysptes.c. Referenced by MiGetSystemPteAvailability(), MiGetSystemPteListCount(), MiReleaseSystemPtes(), and MiReserveSystemPtes(). |
|
Definition at line 104 of file sysptes.c. Referenced by MiGetSystemPteAvailability(), MiReleaseSystemPtes(), and MiReserveSystemPtes(). |
|
Definition at line 98 of file sysptes.c. Referenced by MiGetSystemPteAvailability(), MiGetSystemPteListCount(), MiReleaseSystemPtes(), and MiReserveSystemPtes(). |
|
|
|
|
|
|