ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

mmtypes.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 (AMD64)
00008 
00009 Abstract:
00010 
00011     AMD64 Type definitions for the Memory Manager
00012 
00013 Author:
00014 
00015     Alex Ionescu (alex.ionescu@reactos.com)   06-Oct-2004
00016     Timo Kreuzer (timo.kreuzer@reactos.com)   15-Aug-2008
00017 
00018 --*/
00019 
00020 #ifndef _AMD64_MMTYPES_H
00021 #define _AMD64_MMTYPES_H
00022 
00023 //
00024 // Dependencies
00025 //
00026 
00027 //
00028 // Page-related Macros
00029 //
00030 #define PAGE_SIZE                         0x1000
00031 #define PAGE_SHIFT                        12L
00032 #define MM_ALLOCATION_GRANULARITY         0x10000
00033 #define MM_ALLOCATION_GRANULARITY_SHIFT   16L
00034 
00035 //
00036 // Address of the shared user page
00037 //
00038 #define MM_SHARED_USER_DATA_VA 0x7FFE0000ULL
00039 
00040 //
00041 // Sanity checks for Paging Macros
00042 //
00043 #ifdef C_ASSERT
00044 C_ASSERT(PAGE_SIZE == (1 << PAGE_SHIFT));
00045 C_ASSERT(MM_ALLOCATION_GRANULARITY == (1 << MM_ALLOCATION_GRANULARITY_SHIFT));
00046 C_ASSERT(MM_ALLOCATION_GRANULARITY &&
00047          !(MM_ALLOCATION_GRANULARITY & (MM_ALLOCATION_GRANULARITY - 1)));
00048 C_ASSERT(MM_ALLOCATION_GRANULARITY >= PAGE_SIZE);
00049 #endif
00050 
00051 //
00052 // Page Table Entry Definitions
00053 //
00054 typedef struct _HARDWARE_PTE
00055 {
00056     ULONG64 Valid:1;
00057     ULONG64 Write:1;
00058     ULONG64 Owner:1;
00059     ULONG64 WriteThrough:1;
00060     ULONG64 CacheDisable:1;
00061     ULONG64 Accessed:1;
00062     ULONG64 Dirty:1;
00063     ULONG64 LargePage:1;
00064     ULONG64 Global:1;
00065     ULONG64 CopyOnWrite:1;
00066     ULONG64 Prototype:1;
00067     ULONG64 reserved0:1;
00068     ULONG64 PageFrameNumber:28;
00069     ULONG64 reserved1:12;
00070     ULONG64 SoftwareWsIndex:11;
00071     ULONG64 NoExecute:1;
00072 } HARDWARE_PTE, *PHARDWARE_PTE;
00073 
00074 typedef struct _MMPTE_SOFTWARE
00075 {
00076     ULONG64 Valid:1;
00077     ULONG64 PageFileLow:4;
00078     ULONG64 Protection:5;
00079     ULONG64 Prototype:1;
00080     ULONG64 Transition:1;
00081     ULONG64 UsedPageTableEntries:10;
00082     ULONG64 Reserved:10;
00083     ULONG64 PageFileHigh:32;
00084 } MMPTE_SOFTWARE, *PMMPTE_SOFTWARE;
00085 
00086 typedef struct _MMPTE_TRANSITION
00087 {
00088     ULONG64 Valid:1;
00089     ULONG64 Write:1;
00090     ULONG64 Owner:1;
00091     ULONG64 WriteThrough:1;
00092     ULONG64 CacheDisable:1;
00093     ULONG64 Protection:5;
00094     ULONG64 Prototype:1;
00095     ULONG64 Transition:1;
00096 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
00097     ULONG64 PageFrameNumber:36;
00098     ULONG64 Unused:16;
00099 #else
00100     ULONG64 PageFrameNumber:28;
00101     ULONG64 Unused:24;
00102 #endif
00103 } MMPTE_TRANSITION;
00104 
00105 typedef struct _MMPTE_PROTOTYPE
00106 {
00107     ULONG64 Valid:1;
00108     ULONG64 Unused0:7;
00109     ULONG64 ReadOnly:1;
00110     ULONG64 Unused1:1;
00111     ULONG64 Prototype:1;
00112     ULONG64 Protection:5;
00113     LONG64 ProtoAddress:48;
00114 } MMPTE_PROTOTYPE;
00115 
00116 typedef struct _MMPTE_SUBSECTION
00117 {
00118     ULONG64 Valid:1;
00119     ULONG64 Unused0:4;
00120     ULONG64 Protection:5;
00121     ULONG64 Prototype:1;
00122     ULONG64 Unused1:5;
00123     LONG64 SubsectionAddress:48;
00124 } MMPTE_SUBSECTION;
00125 
00126 typedef struct _MMPTE_LIST
00127 {
00128     ULONG64 Valid:1;
00129     ULONG64 OneEntry:1;
00130     ULONG64 filler0:3;
00131     ULONG64 Protection:5;
00132     ULONG64 Prototype:1;
00133     ULONG64 Transition:1;
00134     ULONG64 filler1:20;
00135     ULONG64 NextEntry:32;
00136 } MMPTE_LIST;
00137 
00138 typedef struct _MMPTE_HARDWARE
00139 {
00140     ULONG64 Valid:1;
00141 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
00142     ULONG64 Dirty1:1;
00143 #else
00144 #ifdef CONFIG_SMP
00145     ULONG64 Writable:1;
00146 #else
00147     ULONG64 Write:1;
00148 #endif
00149 #endif
00150     ULONG64 Owner:1;
00151     ULONG64 WriteThrough:1;
00152     ULONG64 CacheDisable:1;
00153     ULONG64 Accessed:1;
00154     ULONG64 Dirty:1;
00155     ULONG64 LargePage:1;
00156     ULONG64 Global:1;
00157     ULONG64 CopyOnWrite:1;
00158     ULONG64 Prototype:1;
00159 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
00160     ULONG64 Write:1;
00161     ULONG64 PageFrameNumber:36;
00162     ULONG64 reserved1:4;
00163 #else
00164 #ifdef CONFIG_SMP
00165     ULONG64 Write:1;
00166 #else
00167     ULONG64 reserved0:1;
00168 #endif
00169     ULONG64 PageFrameNumber:28;
00170     ULONG64 reserved1:12;
00171 #endif
00172     ULONG64 SoftwareWsIndex:11;
00173     ULONG64 NoExecute:1;
00174 } MMPTE_HARDWARE, *PMMPTE_HARDWARE;
00175 
00176 typedef struct _MMPTE_HARDWARE_LARGEPAGE
00177 {
00178     ULONG64 Valid:1;
00179     ULONG64 Write:1;
00180     ULONG64 Owner:1;
00181     ULONG64 WriteThrough:1;
00182     ULONG64 CacheDisable:1;
00183     ULONG64 Accessed:1;
00184     ULONG64 Dirty:1;
00185     ULONG64 LargePage:1;
00186     ULONG64 Global:1;
00187     ULONG64 CopyOnWrite:1;
00188     ULONG64 Prototype:1;
00189     ULONG64 reserved0:1;
00190     ULONG64 PAT:1;
00191     ULONG64 reserved1:8;
00192 #if (NTDDI_VERSION >= NTDDI_LONGHORN)
00193     ULONG64 PageFrameNumber:27;
00194     ULONG64 reserved2:16;
00195 #else
00196     ULONG64 PageFrameNumber:19;
00197     ULONG64 reserved2:24;
00198 #endif
00199 } MMPTE_HARDWARE_LARGEPAGE, *PMMPTE_HARDWARE_LARGEPAGE;
00200 
00201 
00202 #endif // !AMD64_MMTYPES_H

Generated on Sun May 27 2012 04:30:48 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.