- Rewrite MmMapIoSpace and MmUnmapIoSpace to use System PTEs instead.
[reactos.git] / reactos / ntoskrnl / mm / ARM3 / miarm.h
1 /*
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
7 */
8
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
15
16 typedef enum _MMSYSTEM_PTE_POOL_TYPE
17 {
18 SystemPteSpace,
19 NonPagedPoolExpansion,
20 MaximumPtePoolTypes
21 } MMSYSTEM_PTE_POOL_TYPE;
22
23 typedef enum _MI_PFN_CACHE_ATTRIBUTE
24 {
25 MiNonCached,
26 MiCached,
27 MiWriteCombined,
28 MiNotMapped
29 } MI_PFN_CACHE_ATTRIBUTE, *PMI_PFN_CACHE_ATTRIBUTE;
30
31 extern MMPTE HyperTemplatePte;
32
33 extern ULONG MmSizeOfNonPagedPoolInBytes;
34 extern ULONG MmMaximumNonPagedPoolInBytes;
35 extern PVOID MmNonPagedPoolStart;
36 extern PVOID MmNonPagedPoolExpansionStart;
37 extern PMMPTE MmFirstReservedMappingPte, MmLastReservedMappingPte;
38 extern PMMPTE MiFirstReservedZeroingPte;
39
40 VOID
41 NTAPI
42 MiInitializeArmPool(
43 VOID
44 );
45
46 VOID
47 NTAPI
48 MiInitializeSystemPtes(
49 IN PMMPTE StartingPte,
50 IN ULONG NumberOfPtes,
51 IN MMSYSTEM_PTE_POOL_TYPE PoolType
52 );
53
54 PMMPTE
55 NTAPI
56 MiReserveSystemPtes(
57 IN ULONG NumberOfPtes,
58 IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType
59 );
60
61 VOID
62 NTAPI
63 MiReleaseSystemPtes(
64 IN PMMPTE StartingPte,
65 IN ULONG NumberOfPtes,
66 IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType
67 );
68
69 /* EOF */