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 (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 doxygen 1.7.6.1

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