2 * PROJECT: ReactOS Kernel
3 * LICENSE: BSD - See COPYING.ARM in the top level directory
4 * FILE: ntoskrnl/mm/ARM3/miarm.h
5 * PURPOSE: ARM Memory Manager Header
6 * PROGRAMMERS: ReactOS Portable Systems Group
9 #define MI_MIN_PAGES_FOR_NONPAGED_POOL_TUNING ((255*1024*1024) >> PAGE_SHIFT)
10 #define MI_MIN_PAGES_FOR_SYSPTE_TUNING ((19*1024*1024) >> PAGE_SHIFT)
11 #define MI_MIN_PAGES_FOR_SYSPTE_BOOST ((32*1024*1024) >> PAGE_SHIFT)
12 #define MI_MAX_INIT_NONPAGED_POOL_SIZE (128 * 1024 * 1024)
13 #define MI_MAX_NONPAGED_POOL_SIZE (128 * 1024 * 1024)
14 #define MI_MAX_FREE_PAGE_LISTS 4
16 typedef enum _MMSYSTEM_PTE_POOL_TYPE
19 NonPagedPoolExpansion
,
21 } MMSYSTEM_PTE_POOL_TYPE
;
23 typedef enum _MI_PFN_CACHE_ATTRIBUTE
29 } MI_PFN_CACHE_ATTRIBUTE
, *PMI_PFN_CACHE_ATTRIBUTE
;
31 typedef struct _PHYSICAL_MEMORY_RUN
35 } PHYSICAL_MEMORY_RUN
, *PPHYSICAL_MEMORY_RUN
;
37 typedef struct _PHYSICAL_MEMORY_DESCRIPTOR
41 PHYSICAL_MEMORY_RUN Run
[1];
42 } PHYSICAL_MEMORY_DESCRIPTOR
, *PPHYSICAL_MEMORY_DESCRIPTOR
;
44 extern MMPTE HyperTemplatePte
;
46 extern ULONG MmSizeOfNonPagedPoolInBytes
;
47 extern ULONG MmMaximumNonPagedPoolInBytes
;
48 extern PVOID MmNonPagedPoolStart
;
49 extern PVOID MmNonPagedPoolExpansionStart
;
50 extern PVOID MmNonPagedPoolEnd
;
51 extern PMMPTE MmFirstReservedMappingPte
, MmLastReservedMappingPte
;
52 extern PMMPTE MiFirstReservedZeroingPte
;
53 extern MI_PFN_CACHE_ATTRIBUTE MiPlatformCacheAttributes
[2][MmMaximumCacheType
];
54 extern PPHYSICAL_MEMORY_DESCRIPTOR MmPhysicalMemoryBlock
;
55 extern ULONG MmBootImageSize
;
56 extern PMMPTE MmSystemPtesStart
[MaximumPtePoolTypes
];
57 extern PMMPTE MmSystemPtesEnd
[MaximumPtePoolTypes
];
67 MiInitializeSystemPtes(
68 IN PMMPTE StartingPte
,
69 IN ULONG NumberOfPtes
,
70 IN MMSYSTEM_PTE_POOL_TYPE PoolType
76 IN ULONG NumberOfPtes
,
77 IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType
83 IN PMMPTE StartingPte
,
84 IN ULONG NumberOfPtes
,
85 IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType
91 MiFindContiguousPages(
92 IN PFN_NUMBER LowestPfn
,
93 IN PFN_NUMBER HighestPfn
,
94 IN PFN_NUMBER BoundaryPfn
,
95 IN PFN_NUMBER SizeInPages
,
96 IN MEMORY_CACHING_TYPE CacheType
101 MiCheckForContiguousMemory(
102 IN PVOID BaseAddress
,
103 IN PFN_NUMBER BaseAddressPages
,
104 IN PFN_NUMBER SizeInPages
,
105 IN PFN_NUMBER LowestPfn
,
106 IN PFN_NUMBER HighestPfn
,
107 IN PFN_NUMBER BoundaryPfn
,
108 IN MI_PFN_CACHE_ATTRIBUTE CacheAttribute
113 MiAllocatePagesForMdl(
114 IN PHYSICAL_ADDRESS LowAddress
,
115 IN PHYSICAL_ADDRESS HighAddress
,
116 IN PHYSICAL_ADDRESS SkipBytes
,
117 IN SIZE_T TotalBytes
,
118 IN MI_PFN_CACHE_ATTRIBUTE CacheAttribute
,
124 MiMapLockedPagesInUserSpace(
127 IN MEMORY_CACHING_TYPE CacheType
,
133 MiUnmapLockedPagesInUserSpace(
134 IN PVOID BaseAddress
,