Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenmmtypes.h
Go to the documentation of this file.
00001 /*++ NDK Version: 0095 00002 00003 Copyright (c) Alex Ionescu. All rights reserved. 00004 00005 Header Name: 00006 00007 mmtypes.h (X86) 00008 00009 Abstract: 00010 00011 i386 Type definitions for the Memory Manager 00012 00013 Author: 00014 00015 Alex Ionescu (alex.ionescu@reactos.com) 06-Oct-2004 00016 00017 --*/ 00018 00019 #ifndef _I386_MMTYPES_H 00020 #define _I386_MMTYPES_H 00021 00022 // 00023 // Dependencies 00024 // 00025 00026 // 00027 // Page-related Macros 00028 // 00029 #define PAGE_SIZE 0x1000 00030 #define PAGE_SHIFT 12L 00031 #define MM_ALLOCATION_GRANULARITY 0x10000 00032 #define MM_ALLOCATION_GRANULARITY_SHIFT 16L 00033 00034 // 00035 // Address of the shared user page 00036 // 00037 #define MM_SHARED_USER_DATA_VA 0x7FFE0000 00038 00039 // 00040 // Sanity checks for Paging Macros 00041 // 00042 #ifdef C_ASSERT 00043 C_ASSERT(PAGE_SIZE == (1 << PAGE_SHIFT)); 00044 C_ASSERT(MM_ALLOCATION_GRANULARITY == (1 << MM_ALLOCATION_GRANULARITY_SHIFT)); 00045 C_ASSERT(MM_ALLOCATION_GRANULARITY && 00046 !(MM_ALLOCATION_GRANULARITY & (MM_ALLOCATION_GRANULARITY - 1))); 00047 C_ASSERT(MM_ALLOCATION_GRANULARITY >= PAGE_SIZE); 00048 #endif 00049 00050 // 00051 // PAE SEG0 Base? 00052 // 00053 #define KSEG0_BASE_PAE 0xE0000000 00054 00055 // 00056 // Page Table Entry Definitions 00057 // 00058 typedef struct _HARDWARE_PTE_X86 00059 { 00060 ULONG Valid:1; 00061 ULONG Write:1; 00062 ULONG Owner:1; 00063 ULONG WriteThrough:1; 00064 ULONG CacheDisable:1; 00065 ULONG Accessed:1; 00066 ULONG Dirty:1; 00067 ULONG LargePage:1; 00068 ULONG Global:1; 00069 ULONG CopyOnWrite:1; 00070 ULONG Prototype: 1; 00071 ULONG reserved: 1; 00072 ULONG PageFrameNumber:20; 00073 } HARDWARE_PTE_X86, *PHARDWARE_PTE_X86; 00074 00075 typedef struct _MMPTE_SOFTWARE 00076 { 00077 ULONG Valid:1; 00078 ULONG PageFileLow:4; 00079 ULONG Protection:5; 00080 ULONG Prototype:1; 00081 ULONG Transition:1; 00082 ULONG PageFileHigh:20; 00083 } MMPTE_SOFTWARE; 00084 00085 typedef struct _MMPTE_TRANSITION 00086 { 00087 ULONG Valid:1; 00088 ULONG Write:1; 00089 ULONG Owner:1; 00090 ULONG WriteThrough:1; 00091 ULONG CacheDisable:1; 00092 ULONG Protection:5; 00093 ULONG Prototype:1; 00094 ULONG Transition:1; 00095 ULONG PageFrameNumber:20; 00096 } MMPTE_TRANSITION; 00097 00098 typedef struct _MMPTE_PROTOTYPE 00099 { 00100 ULONG Valid:1; 00101 ULONG ProtoAddressLow:7; 00102 ULONG ReadOnly:1; 00103 ULONG WhichPool:1; 00104 ULONG Prototype:1; 00105 ULONG ProtoAddressHigh:21; 00106 } MMPTE_PROTOTYPE; 00107 00108 typedef struct _MMPTE_SUBSECTION 00109 { 00110 ULONG Valid:1; 00111 ULONG SubsectionAddressLow:4; 00112 ULONG Protection:5; 00113 ULONG Prototype:1; 00114 ULONG SubsectionAddressHigh:20; 00115 ULONG WhichPool:1; 00116 } MMPTE_SUBSECTION; 00117 00118 typedef struct _MMPTE_LIST 00119 { 00120 ULONG Valid:1; 00121 ULONG OneEntry:1; 00122 ULONG filler0:8; 00123 ULONG Prototype:1; 00124 ULONG filler1:1; 00125 ULONG NextEntry:20; 00126 } MMPTE_LIST; 00127 00128 #ifndef CONFIG_SMP 00129 00130 typedef struct _MMPTE_HARDWARE 00131 { 00132 ULONG Valid:1; 00133 ULONG Write:1; 00134 ULONG Owner:1; 00135 ULONG WriteThrough:1; 00136 ULONG CacheDisable:1; 00137 ULONG Accessed:1; 00138 ULONG Dirty:1; 00139 ULONG LargePage:1; 00140 ULONG Global:1; 00141 ULONG CopyOnWrite:1; 00142 ULONG Prototype:1; 00143 ULONG reserved:1; 00144 ULONG PageFrameNumber:20; 00145 } MMPTE_HARDWARE, *PMMPTE_HARDWARE; 00146 00147 #else 00148 00149 typedef struct _MMPTE_HARDWARE 00150 { 00151 ULONG Valid:1; 00152 ULONG Writable:1; 00153 ULONG Owner:1; 00154 ULONG WriteThrough:1; 00155 ULONG CacheDisable:1; 00156 ULONG Accessed:1; 00157 ULONG Dirty:1; 00158 ULONG LargePage:1; 00159 ULONG Global:1; 00160 ULONG CopyOnWrite:1; 00161 ULONG Prototype:1; 00162 ULONG Write:1; 00163 ULONG PageFrameNumber:20; 00164 } MMPTE_HARDWARE, *PMMPTE_HARDWARE; 00165 00166 #endif 00167 00168 // 00169 // Use the right PTE structure 00170 // 00171 #define HARDWARE_PTE HARDWARE_PTE_X86 00172 #define PHARDWARE_PTE PHARDWARE_PTE_X86 00173 00174 #endif Generated on Sun May 27 2012 04:30:48 for ReactOS by
1.7.6.1
|