Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

mippc.h File Reference

Go to the source code of this file.

Classes

struct  _MMCOLOR_TABLES
struct  _MMPRIMARY_COLOR_TABLES
struct  _MMPTE_TRANSITION
struct  _MMPTE_SOFTWARE
struct  _MMPTE_PROTOTYPE
struct  _MMPTE_SUBSECTION
struct  _MMPTE_LIST
struct  _MMPTE

Defines

#define MM_VIRTUAL_PAGE_SHIFT   20
#define MM_SYSTEM_SPACE_START   (0xD0000000)
#define MM_SYSTEM_SPACE_END   (0xFFFFFFFF)
#define MM_HAL_RESERVED   (0xFFC00000)
#define PDE_TOP   0xC03FFFFF
#define HYPER_SPACE   ((PVOID)0xC0400000)
#define HYPER_SPACE_END   0xC07fffff
#define MM_SYSTEM_CACHE_AND_POOL_DISJOINT   1
#define MM_SYSTEM_CACHE_WORKING_SET   (0x90000000)
#define MM_SYSTEM_CACHE_START   (0x90400000)
#define MM_SYSTEM_CACHE_END   (0xAE000000)
#define MM_MAXIMUM_SYSTEM_CACHE_SIZE   (((ULONG)MM_SYSTEM_CACHE_END - (ULONG)MM_SYSTEM_CACHE_START) >> PAGE_SHIFT)
#define MM_BOOT_CODE_PAGEABLE   1
#define MM_BOOT_CODE_START   (0x80000000)
#define MM_BOOT_CODE_END   (0x90000000)
#define MM_SYSTEM_CACHE_AND_POOL_DISJOINT   1
#define MM_SYSTEM_VIEW_START   (0xD0000000)
#define MM_SYSTEM_VIEW_SIZE   (48*1024*1024)
#define MM_PAGED_POOL_START   ((PVOID)(0xD3000000))
#define MM_LOWEST_NONPAGED_SYSTEM_START   ((PVOID)(0xE0000000))
#define MmProtopte_Base   ((ULONG)0xD3000000)
#define MM_NONPAGED_POOL_END   ((PVOID)(0xEFC00000))
#define NON_PAGED_SYSTEM_END   ((ULONG)0xEFFFFFF0)
#define MM_MINIMUM_SYSTEM_PTES   9000
#define MM_MAXIMUM_SYSTEM_PTES   35000
#define MM_DEFAULT_SYSTEM_PTES   15000
#define MM_MAX_INITIAL_NONPAGED_POOL   ((ULONG)(128*1024*1024))
#define MM_MAX_ADDITIONAL_NONPAGED_POOL   ((ULONG)(192*1024*1024))
#define MM_MAX_PAGED_POOL   ((ULONG)(176*1024*1024))
#define MM_MAX_TOTAL_POOL   (((ULONG)MM_NONPAGED_POOL_END) - ((ULONG)(MM_PAGED_POOL_START)))
#define PAGE_DIRECTORY_MASK   ((ULONG)0x003FFFFF)
#define MM_VA_MAPPED_BY_PDE   (0x400000)
#define LOWEST_IO_ADDRESS   (0x80000000)
#define PTE_SHIFT   (2)
#define PHYSICAL_ADDRESS_BITS   (32)
#define MM_PROTO_PTE_ALIGNMENT   ((ULONG)MM_MAXIMUM_NUMBER_OF_COLORS * (ULONG)PAGE_SIZE)
#define MAX_PAGE_FILES   16
#define FIRST_MAPPING_PTE   ((ULONG)0xC0400000)
#define NUMBER_OF_MAPPING_PTES   255
#define LAST_MAPPING_PTE   ((ULONG)((ULONG)FIRST_MAPPING_PTE + (NUMBER_OF_MAPPING_PTES * PAGE_SIZE)))
#define IMAGE_MAPPING_PTE   ((PMMPTE)((ULONG)LAST_MAPPING_PTE + PAGE_SIZE))
#define ZEROING_PAGE_PTE   ((PMMPTE)((ULONG)IMAGE_MAPPING_PTE + PAGE_SIZE))
#define WORKING_SET_LIST   ((PVOID)((ULONG)ZEROING_PAGE_PTE + PAGE_SIZE))
#define MM_MAXIMUM_WORKING_SET   ((ULONG)((ULONG)2*1024*1024*1024 - 64*1024*1024) >> PAGE_SHIFT)
#define MM_WORKING_SET_END   ((ULONG)0xC07FF000)
#define MM_PTE_PROTOTYPE_MASK   0x1
#define MM_PTE_VALID_MASK   0x4
#define MM_PTE_CACHE_DISABLE_MASK   0x28
#define MM_PTE_TRANSITION_MASK   0x2
#define MM_PTE_WRITE_MASK   0x200
#define MM_PTE_COPY_ON_WRITE_MASK   0x400
#define MM_PTE_NOACCESS   0x0
#define MM_PTE_READONLY   0x3
#define MM_PTE_READWRITE   (0x3 | MM_PTE_WRITE_MASK)
#define MM_PTE_WRITECOPY   (0x3 | MM_PTE_WRITE_MASK | MM_PTE_COPY_ON_WRITE_MASK)
#define MM_PTE_EXECUTE   0x3
#define MM_PTE_EXECUTE_READ   0x3
#define MM_PTE_EXECUTE_READWRITE   (0x3 | MM_PTE_WRITE_MASK)
#define MM_PTE_EXECUTE_WRITECOPY   (0x3 | MM_PTE_WRITE_MASK | MM_PTE_COPY_ON_WRITE_MASK)
#define MM_PTE_NOCACHE   (MM_PTE_CACHE_DISABLE_MASK)
#define MM_PTE_GUARD   0x0
#define MM_PTE_CACHE   0x0
#define MM_PROTECT_FIELD_SHIFT   3
#define MM_ZERO_PTE   0
#define MM_ZERO_KERNEL_PTE   0
#define MM_DEMAND_ZERO_WRITE_PTE   (MM_READWRITE << MM_PROTECT_FIELD_SHIFT)
#define MM_KERNEL_DEMAND_ZERO_PTE   (MM_READWRITE << MM_PROTECT_FIELD_SHIFT)
#define MM_KERNEL_NOACCESS_PTE   (MM_NOACCESS << MM_PROTECT_FIELD_SHIFT)
#define MM_PTE_CLEAN   3
#define MM_PTE_DIRTY   0
#define MM_STACK_ALIGNMENT   0x0
#define MM_STACK_OFFSET   0x0
#define PDE_PER_PAGE   ((ULONG)1024)
#define PTE_PER_PAGE   ((ULONG)1024)
#define MM_USER_PAGE_TABLE_PAGES   (512)
#define MM_NUMBER_OF_COLORS   2
#define MM_MAXIMUM_NUMBER_OF_COLORS   2
#define MM_COLOR_MASK   1
#define MM_COLOR_STRIDE   3
#define MM_COLOR_ALIGNMENT   0x2000
#define MM_COLOR_MASK_VIRTUAL   0x1000
#define MM_SECONDARY_COLORS_DEFAULT   ((256*1024) >> PAGE_SHIFT)
#define MM_SECONDARY_COLORS_MIN   (2)
#define MM_SECONDARY_COLORS_MAX   (2048)
#define INITIALIZE_DIRECTORY_TABLE_BASE(dirbase, pfn)   *((PULONG)(dirbase)) = ((pfn) << PAGE_SHIFT)
#define MI_MAKE_VALID_PTE(OUTPTE, FRAME, PMASK, PPTE)
#define MI_MAKE_VALID_PTE_TRANSITION(OUTPTE, PROTECT)
#define MI_MAKE_TRANSITION_PTE(OUTPTE, PAGE, PROTECT, PPTE)
#define MI_MAKE_TRANSITION_PTE_VALID(OUTPTE, PPTE)
#define MI_SET_PTE_DIRTY(PTE)   (PTE).u.Hard.Dirty = MM_PTE_DIRTY
#define MI_SET_PTE_CLEAN(PTE)   (PTE).u.Hard.Dirty = MM_PTE_CLEAN
#define MI_IS_PTE_DIRTY(PTE)   ((PTE).u.Hard.Dirty != MM_PTE_CLEAN)
#define MI_SET_GLOBAL_BIT_IF_SYSTEM(OUTPTE, PPTE)
#define MI_SET_GLOBAL_STATE(PTE, STATE)
#define MI_ENABLE_CACHING(PTE)   ((PTE).u.Hard.CacheDisable = (PTE).u.Hard.GuardedStorage = 0)
#define MI_DISABLE_CACHING(PTE)   ((PTE).u.Hard.CacheDisable = (PTE).u.Hard.GuardedStorage = 1)
#define MI_IS_CACHING_DISABLED(PPTE)   ((PPTE)->u.Hard.CacheDisable == 1)
#define MI_SET_PFN_DELETED(PPFN)   ((PPFN)->PteAddress = (PMMPTE)0xFFFFFFFF)
#define MI_IS_PFN_DELETED(PPFN)   ((PPFN)->PteAddress == (PMMPTE)0xFFFFFFFF)
#define MI_CHECK_PAGE_ALIGNMENT(PAGE, COLOR)
#define MI_INITIALIZE_HYPERSPACE_MAP(HYPER_PAGE)
#define MI_GET_PAGE_COLOR_FROM_PTE(PTEADDRESS)
#define MI_GET_PAGE_COLOR_FROM_VA(ADDRESS)
#define MI_PAGE_COLOR_PTE_PROCESS(PTE, COLOR)
#define MI_PAGE_COLOR_VA_PROCESS(ADDRESS, COLOR)
#define MI_GET_NEXT_COLOR(COLOR)   ((COLOR + 1) & MM_COLOR_MASK)
#define MI_GET_PREVIOUS_COLOR(COLOR)   ((COLOR - 1) & MM_COLOR_MASK)
#define MI_GET_SECONDARY_COLOR(PAGE, PFN)   ((((ULONG)(PAGE) & MmSecondaryColorMask)) | (PFN)->u3.e1.PageColor)
#define MI_GET_COLOR_FROM_SECONDARY(COLOR)   ((COLOR) & MM_COLOR_MASK)
#define MI_GET_MODIFIED_PAGE_BY_COLOR(PAGE, COLOR)   PAGE = MmModifiedPageListByColor[COLOR].Flink
#define MI_GET_MODIFIED_PAGE_ANY_COLOR(PAGE, COLOR)
#define MI_MAKE_VALID_PTE_WRITE_COPY(PPTE)
#define MI_DETERMINE_OWNER(PPTE)
#define MI_SET_ACCESSED_IN_PTE(PPTE, ACCESSED)
#define MI_GET_ACCESSED_IN_PTE(PPTE)   0
#define MI_SET_OWNER_IN_PTE(PPTE, OWNER)
#define MI_GET_OWNER_IN_PTE(PPTE)   KernelMode
#define CLEAR_FOR_PAGE_FILE   ((ULONG)(0x0F8))
#define SET_PAGING_FILE_INFO(PTE, FILEINFO, OFFSET)
#define MiPteToProto(lpte)
#define MiProtoAddressForPte(proto_va)   ((ULONG)((((ULONG)proto_va - MmProtopte_Base) << 2) | MM_PTE_PROTOTYPE_MASK))
#define MiProtoAddressForKernelPte(proto_va)   MiProtoAddressForPte(proto_va)
#define MiGetSubsectionAddress(lpte)
#define MiGetSubsectionAddressForPte(VA)
#define MiGetPdeAddress(va)   ((PMMPTE)(((((ULONG)(va)) >> 22) << 2) + PDE_BASE))
#define MiGetPteAddress(va)   ((PMMPTE)(((((ULONG)(va)) >> 12) << 2) + PTE_BASE))
#define MiGetPdeOffset(va)   (((ULONG)(va)) >> 22)
#define MiGetPteOffset(va)   ((((ULONG)(va)) << 10) >> 22)
#define MiGetVirtualAddressMappedByPte(va)   ((PVOID)((ULONG)(va) << 10))
#define GET_PAGING_FILE_NUMBER(PTE)   ((((PTE).u.Long) >> 8) & 0xF)
#define GET_PAGING_FILE_OFFSET(PTE)   ((((PTE).u.Long) >> 12) & 0x000FFFFF)
#define IS_PTE_NOT_DEMAND_ZERO(PTE)   ((PTE).u.Long & (ULONG)0xFFFFF007)
#define MI_MAKING_VALID_PTE_INVALID(SYSTEM_WIDE)
#define MI_MAKING_MULTIPLE_PTES_INVALID(SYSTEM_WIDE)
#define MI_MAKE_PROTECT_WRITE_COPY(PTE)
#define MI_SET_PAGE_DIRTY(PPTE, VA, PFNHELD)
#define MI_NO_FAULT_FOUND(TEMP, PPTE, VA, PFNHELD)
#define MI_CAPTURE_DIRTY_BIT_TO_PFN(PPTE, PPFN)
#define MI_IS_PHYSICAL_ADDRESS(Va)   (((ULONG)Va >= KSEG0_BASE) && ((ULONG)Va < KSEG2_BASE))
#define MI_CONVERT_PHYSICAL_TO_PFN(Va)   (((ULONG)Va << 2) >> 14)

Typedefs

typedef _MMCOLOR_TABLES MMCOLOR_TABLES
typedef _MMCOLOR_TABLESPMMCOLOR_TABLES
typedef _MMPRIMARY_COLOR_TABLES MMPRIMARY_COLOR_TABLES
typedef _MMPRIMARY_COLOR_TABLESPMMPRIMARY_COLOR_TABLES
typedef _MMPTE_TRANSITION MMPTE_TRANSITION
typedef _MMPTE_SOFTWARE MMPTE_SOFTWARE
typedef _MMPTE_PROTOTYPE MMPTE_PROTOTYPE
typedef _MMPTE_SUBSECTION MMPTE_SUBSECTION
typedef _MMPTE_LIST MMPTE_LIST
typedef _MMPTE MMPTE
typedef MMPTEPMMPTE

Variables

ULONG MmSecondaryColorMask
MMPFNLIST MmFreePagesByPrimaryColor [2][MM_MAXIMUM_NUMBER_OF_COLORS]
PMMCOLOR_TABLES MmFreePagesByColor [2]
ULONG MmTotalPagesForPagingFile


Define Documentation

#define CLEAR_FOR_PAGE_FILE   ((ULONG)(0x0F8))
 

Definition at line 1285 of file mippc.h.

#define FIRST_MAPPING_PTE   ((ULONG)0xC0400000)
 

Definition at line 283 of file mippc.h.

#define GET_PAGING_FILE_NUMBER PTE   )     ((((PTE).u.Long) >> 8) & 0xF)
 

Definition at line 1616 of file mippc.h.

#define GET_PAGING_FILE_OFFSET PTE   )     ((((PTE).u.Long) >> 12) & 0x000FFFFF)
 

Definition at line 1639 of file mippc.h.

#define HYPER_SPACE   ((PVOID)0xC0400000)
 

Definition at line 161 of file mippc.h.

#define HYPER_SPACE_END   0xC07fffff
 

Definition at line 163 of file mippc.h.

#define IMAGE_MAPPING_PTE   ((PMMPTE)((ULONG)LAST_MAPPING_PTE + PAGE_SIZE))
 

Definition at line 290 of file mippc.h.

#define INITIALIZE_DIRECTORY_TABLE_BASE dirbase,
pfn   )     *((PULONG)(dirbase)) = ((pfn) << PAGE_SHIFT)
 

Definition at line 442 of file mippc.h.

Referenced by MiInitMachineDependent(), MmCreateProcessAddressSpace(), and MmInSwapProcess().

#define IS_PTE_NOT_DEMAND_ZERO PTE   )     ((PTE).u.Long & (ULONG)0xFFFFF007)
 

Definition at line 1662 of file mippc.h.

#define LAST_MAPPING_PTE   ((ULONG)((ULONG)FIRST_MAPPING_PTE + (NUMBER_OF_MAPPING_PTES * PAGE_SIZE)))
 

Definition at line 287 of file mippc.h.

#define LOWEST_IO_ADDRESS   (0x80000000)
 

Definition at line 261 of file mippc.h.

#define MAX_PAGE_FILES   16
 

Definition at line 277 of file mippc.h.

#define MI_CAPTURE_DIRTY_BIT_TO_PFN PPTE,
PPFN   ) 
 

Value:

if (((PPFN)->u3.e1.Modified == 0) && \ ((PPTE)->u.Hard.Dirty == MM_PTE_DIRTY)) { \ (PPFN)->u3.e1.Modified = 1; \ if (((PPFN)->OriginalPte.u.Soft.Prototype == 0) && \ ((PPFN)->u3.e1.WriteInProgress == 0)) { \ MiReleasePageFileSpace ((PPFN)->OriginalPte); \ (PPFN)->OriginalPte.u.Soft.PageFileHigh = 0; \ } \ }

Definition at line 1830 of file mippc.h.

#define MI_CHECK_PAGE_ALIGNMENT PAGE,
COLOR   ) 
 

Value:

{ \ PMMPFN PPFN; \ ULONG OldColor; \ PPFN = MI_PFN_ELEMENT(PAGE); \ OldColor = PPFN->u3.e1.PageColor; \ if ((COLOR) != OldColor) { \ PPFN->u3.e1.PageColor = COLOR; \ } \ }

Definition at line 859 of file mippc.h.

#define MI_CONVERT_PHYSICAL_TO_PFN Va   )     (((ULONG)Va << 2) >> 14)
 

Definition at line 1888 of file mippc.h.

#define MI_DETERMINE_OWNER PPTE   ) 
 

Value:

((((PPTE) <= MiGetPteAddress(MM_HIGHEST_USER_ADDRESS)) || \ ((PPTE) >= MiGetPdeAddress(NULL) && \ ((PPTE) <= MiGetPdeAddress(MM_HIGHEST_USER_ADDRESS)))) ? 1 : 0)

Definition at line 1184 of file mippc.h.

#define MI_DISABLE_CACHING PTE   )     ((PTE).u.Hard.CacheDisable = (PTE).u.Hard.GuardedStorage = 1)
 

Definition at line 756 of file mippc.h.

#define MI_ENABLE_CACHING PTE   )     ((PTE).u.Hard.CacheDisable = (PTE).u.Hard.GuardedStorage = 0)
 

Definition at line 731 of file mippc.h.

#define MI_GET_ACCESSED_IN_PTE PPTE   )     0
 

Definition at line 1233 of file mippc.h.

#define MI_GET_COLOR_FROM_SECONDARY COLOR   )     ((COLOR) & MM_COLOR_MASK)
 

Definition at line 1059 of file mippc.h.

#define MI_GET_MODIFIED_PAGE_ANY_COLOR PAGE,
COLOR   ) 
 

Value:

{ \ if (MmTotalPagesForPagingFile == 0) { \ PAGE = MM_EMPTY_LIST; \ } else { \ while (MmModifiedPageListByColor[COLOR].Flink == \ MM_EMPTY_LIST) { \ COLOR = MI_GET_NEXT_COLOR(COLOR); \ } \ PAGE = MmModifiedPageListByColor[COLOR].Flink; \ } \ }

Definition at line 1120 of file mippc.h.

#define MI_GET_MODIFIED_PAGE_BY_COLOR PAGE,
COLOR   )     PAGE = MmModifiedPageListByColor[COLOR].Flink
 

Definition at line 1088 of file mippc.h.

#define MI_GET_NEXT_COLOR COLOR   )     ((COLOR + 1) & MM_COLOR_MASK)
 

Definition at line 1031 of file mippc.h.

#define MI_GET_OWNER_IN_PTE PPTE   )     KernelMode
 

Definition at line 1280 of file mippc.h.

#define MI_GET_PAGE_COLOR_FROM_PTE PTEADDRESS   ) 
 

Value:

((ULONG)((MmSystemPageColor += MM_COLOR_STRIDE) & \ MmSecondaryColorMask) | \ ((((ULONG)(PTEADDRESS)) >> 2) & MM_COLOR_MASK))

Definition at line 924 of file mippc.h.

#define MI_GET_PAGE_COLOR_FROM_VA ADDRESS   ) 
 

Value:

((ULONG)((MmSystemPageColor += MM_COLOR_STRIDE) & \ MmSecondaryColorMask) | \ ((((ULONG)(ADDRESS)) >> PAGE_SHIFT) & MM_COLOR_MASK))

Definition at line 950 of file mippc.h.

#define MI_GET_PREVIOUS_COLOR COLOR   )     ((COLOR - 1) & MM_COLOR_MASK)
 

Definition at line 1054 of file mippc.h.

#define MI_GET_SECONDARY_COLOR PAGE,
PFN   )     ((((ULONG)(PAGE) & MmSecondaryColorMask)) | (PFN)->u3.e1.PageColor)
 

Definition at line 1056 of file mippc.h.

#define MI_INITIALIZE_HYPERSPACE_MAP HYPER_PAGE   ) 
 

Value:

{ \ PMMPTE Base; \ KIRQL OldIrql; \ Base = MiMapPageInHyperSpace (HYPER_PAGE, &OldIrql); \ Base->u.Hard.PageFrameNumber = NUMBER_OF_MAPPING_PTES; \ MiUnmapPageInHyperSpace (OldIrql); \ }

Definition at line 892 of file mippc.h.

#define MI_IS_CACHING_DISABLED PPTE   )     ((PPTE)->u.Hard.CacheDisable == 1)
 

Definition at line 781 of file mippc.h.

#define MI_IS_PFN_DELETED PPFN   )     ((PPFN)->PteAddress == (PMMPTE)0xFFFFFFFF)
 

Definition at line 830 of file mippc.h.

#define MI_IS_PHYSICAL_ADDRESS Va   )     (((ULONG)Va >= KSEG0_BASE) && ((ULONG)Va < KSEG2_BASE))
 

Definition at line 1863 of file mippc.h.

#define MI_IS_PTE_DIRTY PTE   )     ((PTE).u.Hard.Dirty != MM_PTE_CLEAN)
 

Definition at line 653 of file mippc.h.

#define MI_MAKE_PROTECT_WRITE_COPY PTE   ) 
 

Value:

if ((PTE).u.Long & 0x20) { \ ((PTE).u.Long |= 0x8); \ }

Definition at line 1719 of file mippc.h.

#define MI_MAKE_TRANSITION_PTE OUTPTE,
PAGE,
PROTECT,
PPTE   ) 
 

Value:

(OUTPTE).u.Long = 0; \ (OUTPTE).u.Trans.PageFrameNumber = PAGE; \ (OUTPTE).u.Trans.Transition = 1; \ (OUTPTE).u.Trans.Protection = PROTECT;

Definition at line 551 of file mippc.h.

#define MI_MAKE_TRANSITION_PTE_VALID OUTPTE,
PPTE   ) 
 

Value:

(OUTPTE).u.Long = (((PPTE)->u.Long & 0xFFFFF000) | \ (MmProtectToPteMask[(PPTE)->u.Trans.Protection]) | \ MM_PTE_VALID_MASK);

Definition at line 581 of file mippc.h.

#define MI_MAKE_VALID_PTE OUTPTE,
FRAME,
PMASK,
PPTE   ) 
 

Value:

{ \ (OUTPTE).u.Long = ((FRAME << 12) | \ (MmProtectToPteMask[PMASK]) | \ MM_PTE_VALID_MASK); \ if (((OUTPTE).u.Hard.Write == 1) && \ (((PMMPTE)PPTE) >= MiGetPteAddress(MM_LOWEST_NONPAGED_SYSTEM_START)))\ { \ (OUTPTE).u.Hard.Dirty = MM_PTE_DIRTY; \ } \ }

Definition at line 477 of file mippc.h.

#define MI_MAKE_VALID_PTE_TRANSITION OUTPTE,
PROTECT   ) 
 

Value:

(OUTPTE).u.Trans.Transition = 1; \ (OUTPTE).u.Trans.Valid = 0; \ (OUTPTE).u.Trans.Prototype = 0; \ (OUTPTE).u.Trans.Protection = PROTECT;

Definition at line 514 of file mippc.h.

#define MI_MAKE_VALID_PTE_WRITE_COPY PPTE   ) 
 

Value:

if ((PPTE)->u.Hard.Write == 1) { \ (PPTE)->u.Hard.CopyOnWrite = 1; \ (PPTE)->u.Hard.Dirty = MM_PTE_CLEAN; \ }

Definition at line 1156 of file mippc.h.

#define MI_MAKING_MULTIPLE_PTES_INVALID SYSTEM_WIDE   ) 
 

Definition at line 1710 of file mippc.h.

#define MI_MAKING_VALID_PTE_INVALID SYSTEM_WIDE   ) 
 

Definition at line 1686 of file mippc.h.

#define MI_NO_FAULT_FOUND TEMP,
PPTE,
VA,
PFNHELD   ) 
 

Value:

if (StoreInstruction && ((PPTE)->u.Hard.Dirty == MM_PTE_CLEAN)) { \ MiSetDirtyBit ((VA),(PPTE),(PFNHELD)); \ } else { \ KeFillEntryTb ((PHARDWARE_PTE)PPTE, VA, FALSE); \ }

Definition at line 1789 of file mippc.h.

#define MI_PAGE_COLOR_PTE_PROCESS PTE,
COLOR   ) 
 

Value:

((ULONG)(((*(COLOR)) += MM_COLOR_STRIDE) & \ MmSecondaryColorMask) | \ ((((ULONG)(PTE)) >> 2) & MM_COLOR_MASK))

Definition at line 977 of file mippc.h.

#define MI_PAGE_COLOR_VA_PROCESS ADDRESS,
COLOR   ) 
 

Value:

((ULONG)(((*(COLOR)) += MM_COLOR_STRIDE) & \ MmSecondaryColorMask) | \ ((((ULONG)(ADDRESS)) >> PAGE_SHIFT) & MM_COLOR_MASK))

Definition at line 1005 of file mippc.h.

#define MI_SET_ACCESSED_IN_PTE PPTE,
ACCESSED   ) 
 

Definition at line 1210 of file mippc.h.

#define MI_SET_GLOBAL_BIT_IF_SYSTEM OUTPTE,
PPTE   ) 
 

Definition at line 682 of file mippc.h.

#define MI_SET_GLOBAL_STATE PTE,
STATE   ) 
 

Definition at line 706 of file mippc.h.

#define MI_SET_OWNER_IN_PTE PPTE,
OWNER   ) 
 

Definition at line 1257 of file mippc.h.

#define MI_SET_PAGE_DIRTY PPTE,
VA,
PFNHELD   ) 
 

Value:

if ((PPTE)->u.Hard.Dirty == MM_PTE_CLEAN) { \ MiSetDirtyBit ((VA),(PPTE),(PFNHELD)); \ }

Definition at line 1753 of file mippc.h.

#define MI_SET_PFN_DELETED PPFN   )     ((PPFN)->PteAddress = (PMMPTE)0xFFFFFFFF)
 

Definition at line 806 of file mippc.h.

#define MI_SET_PTE_CLEAN PTE   )     (PTE).u.Hard.Dirty = MM_PTE_CLEAN
 

Definition at line 629 of file mippc.h.

#define MI_SET_PTE_DIRTY PTE   )     (PTE).u.Hard.Dirty = MM_PTE_DIRTY
 

Definition at line 606 of file mippc.h.

#define MiGetPdeAddress va   )     ((PMMPTE)(((((ULONG)(va)) >> 22) << 2) + PDE_BASE))
 

Definition at line 1496 of file mippc.h.

#define MiGetPdeOffset va   )     (((ULONG)(va)) >> 22)
 

Definition at line 1544 of file mippc.h.

#define MiGetPteAddress va   )     ((PMMPTE)(((((ULONG)(va)) >> 12) << 2) + PTE_BASE))
 

Definition at line 1520 of file mippc.h.

#define MiGetPteOffset va   )     ((((ULONG)(va)) << 10) >> 22)
 

Definition at line 1568 of file mippc.h.

#define MiGetSubsectionAddress lpte   ) 
 

Value:

((PSUBSECTION)((ULONG)MM_NONPAGED_POOL_END - \ (((((lpte)->u.Long) >> 8) << 4) | \ ((((lpte)->u.Long) << 2) & 0x8))))

Definition at line 1440 of file mippc.h.

#define MiGetSubsectionAddressForPte VA   ) 
 

Value:

(((((ULONG)MM_NONPAGED_POOL_END - (ULONG)VA) << 4) & (ULONG)0xffffff00) | \ ((((ULONG)MM_NONPAGED_POOL_END - (ULONG)VA) >> 2) & (ULONG)0x2))

Definition at line 1470 of file mippc.h.

#define MiGetVirtualAddressMappedByPte va   )     ((PVOID)((ULONG)(va) << 10))
 

Definition at line 1593 of file mippc.h.

#define MiProtoAddressForKernelPte proto_va   )     MiProtoAddressForPte(proto_va)
 

Definition at line 1411 of file mippc.h.

#define MiProtoAddressForPte proto_va   )     ((ULONG)((((ULONG)proto_va - MmProtopte_Base) << 2) | MM_PTE_PROTOTYPE_MASK))
 

Definition at line 1380 of file mippc.h.

#define MiPteToProto lpte   ) 
 

Value:

((PMMPTE)((((lpte)->u.Long >> 4) << 2) + \ MmProtopte_Base))

Definition at line 1352 of file mippc.h.

#define MM_BOOT_CODE_END   (0x90000000)
 

Definition at line 188 of file mippc.h.

#define MM_BOOT_CODE_PAGEABLE   1
 

Definition at line 185 of file mippc.h.

#define MM_BOOT_CODE_START   (0x80000000)
 

Definition at line 187 of file mippc.h.

#define MM_COLOR_ALIGNMENT   0x2000
 

Definition at line 414 of file mippc.h.

#define MM_COLOR_MASK   1
 

Definition at line 402 of file mippc.h.

#define MM_COLOR_MASK_VIRTUAL   0x1000
 

Definition at line 420 of file mippc.h.

#define MM_COLOR_STRIDE   3
 

Definition at line 408 of file mippc.h.

#define MM_DEFAULT_SYSTEM_PTES   15000
 

Definition at line 225 of file mippc.h.

#define MM_DEMAND_ZERO_WRITE_PTE   (MM_READWRITE << MM_PROTECT_FIELD_SHIFT)
 

Definition at line 348 of file mippc.h.

#define MM_HAL_RESERVED   (0xFFC00000)
 

Definition at line 157 of file mippc.h.

#define MM_KERNEL_DEMAND_ZERO_PTE   (MM_READWRITE << MM_PROTECT_FIELD_SHIFT)
 

Definition at line 354 of file mippc.h.

#define MM_KERNEL_NOACCESS_PTE   (MM_NOACCESS << MM_PROTECT_FIELD_SHIFT)
 

Definition at line 360 of file mippc.h.

#define MM_LOWEST_NONPAGED_SYSTEM_START   ((PVOID)(0xE0000000))
 

Definition at line 209 of file mippc.h.

#define MM_MAX_ADDITIONAL_NONPAGED_POOL   ((ULONG)(192*1024*1024))
 

Definition at line 241 of file mippc.h.

#define MM_MAX_INITIAL_NONPAGED_POOL   ((ULONG)(128*1024*1024))
 

Definition at line 235 of file mippc.h.

#define MM_MAX_PAGED_POOL   ((ULONG)(176*1024*1024))
 

Definition at line 247 of file mippc.h.

#define MM_MAX_TOTAL_POOL   (((ULONG)MM_NONPAGED_POOL_END) - ((ULONG)(MM_PAGED_POOL_START)))
 

Definition at line 249 of file mippc.h.

#define MM_MAXIMUM_NUMBER_OF_COLORS   2
 

Definition at line 396 of file mippc.h.

#define MM_MAXIMUM_SYSTEM_CACHE_SIZE   (((ULONG)MM_SYSTEM_CACHE_END - (ULONG)MM_SYSTEM_CACHE_START) >> PAGE_SHIFT)
 

Definition at line 178 of file mippc.h.

#define MM_MAXIMUM_SYSTEM_PTES   35000
 

Definition at line 223 of file mippc.h.

#define MM_MAXIMUM_WORKING_SET   ((ULONG)((ULONG)2*1024*1024*1024 - 64*1024*1024) >> PAGE_SHIFT)
 

Definition at line 296 of file mippc.h.

#define MM_MINIMUM_SYSTEM_PTES   9000
 

Definition at line 221 of file mippc.h.

#define MM_NONPAGED_POOL_END   ((PVOID)(0xEFC00000))
 

Definition at line 213 of file mippc.h.

#define MM_NUMBER_OF_COLORS   2
 

Definition at line 395 of file mippc.h.

#define MM_PAGED_POOL_START   ((PVOID)(0xD3000000))
 

Definition at line 207 of file mippc.h.

#define MM_PROTECT_FIELD_SHIFT   3
 

Definition at line 329 of file mippc.h.

#define MM_PROTO_PTE_ALIGNMENT   ((ULONG)MM_MAXIMUM_NUMBER_OF_COLORS * (ULONG)PAGE_SIZE)
 

Definition at line 271 of file mippc.h.

#define MM_PTE_CACHE   0x0
 

Definition at line 327 of file mippc.h.

#define MM_PTE_CACHE_DISABLE_MASK   0x28
 

Definition at line 307 of file mippc.h.

#define MM_PTE_CLEAN   3
 

Definition at line 366 of file mippc.h.

#define MM_PTE_COPY_ON_WRITE_MASK   0x400
 

Definition at line 310 of file mippc.h.

#define MM_PTE_DIRTY   0
 

Definition at line 367 of file mippc.h.

#define MM_PTE_EXECUTE   0x3
 

Definition at line 321 of file mippc.h.

#define MM_PTE_EXECUTE_READ   0x3
 

Definition at line 322 of file mippc.h.

#define MM_PTE_EXECUTE_READWRITE   (0x3 | MM_PTE_WRITE_MASK)
 

Definition at line 323 of file mippc.h.

#define MM_PTE_EXECUTE_WRITECOPY   (0x3 | MM_PTE_WRITE_MASK | MM_PTE_COPY_ON_WRITE_MASK)
 

Definition at line 324 of file mippc.h.

#define MM_PTE_GUARD   0x0
 

Definition at line 326 of file mippc.h.

#define MM_PTE_NOACCESS   0x0
 

Definition at line 317 of file mippc.h.

#define MM_PTE_NOCACHE   (MM_PTE_CACHE_DISABLE_MASK)
 

Definition at line 325 of file mippc.h.

#define MM_PTE_PROTOTYPE_MASK   0x1
 

Definition at line 305 of file mippc.h.

#define MM_PTE_READONLY   0x3
 

Definition at line 318 of file mippc.h.

#define MM_PTE_READWRITE   (0x3 | MM_PTE_WRITE_MASK)
 

Definition at line 319 of file mippc.h.

#define MM_PTE_TRANSITION_MASK   0x2
 

Definition at line 308 of file mippc.h.

#define MM_PTE_VALID_MASK   0x4
 

Definition at line 306 of file mippc.h.

#define MM_PTE_WRITE_MASK   0x200
 

Definition at line 309 of file mippc.h.

#define MM_PTE_WRITECOPY   (0x3 | MM_PTE_WRITE_MASK | MM_PTE_COPY_ON_WRITE_MASK)
 

Definition at line 320 of file mippc.h.

#define MM_SECONDARY_COLORS_DEFAULT   ((256*1024) >> PAGE_SHIFT)
 

Definition at line 426 of file mippc.h.

#define MM_SECONDARY_COLORS_MAX   (2048)
 

Definition at line 430 of file mippc.h.

#define MM_SECONDARY_COLORS_MIN   (2)
 

Definition at line 428 of file mippc.h.

#define MM_STACK_ALIGNMENT   0x0
 

Definition at line 374 of file mippc.h.

#define MM_STACK_OFFSET   0x0
 

Definition at line 375 of file mippc.h.

#define MM_SYSTEM_CACHE_AND_POOL_DISJOINT   1
 

Definition at line 196 of file mippc.h.

#define MM_SYSTEM_CACHE_AND_POOL_DISJOINT   1
 

Definition at line 196 of file mippc.h.

#define MM_SYSTEM_CACHE_END   (0xAE000000)
 

Definition at line 176 of file mippc.h.

#define MM_SYSTEM_CACHE_START   (0x90400000)
 

Definition at line 174 of file mippc.h.

#define MM_SYSTEM_CACHE_WORKING_SET   (0x90000000)
 

Definition at line 172 of file mippc.h.

#define MM_SYSTEM_SPACE_END   (0xFFFFFFFF)
 

Definition at line 155 of file mippc.h.

#define MM_SYSTEM_SPACE_START   (0xD0000000)
 

Definition at line 146 of file mippc.h.

#define MM_SYSTEM_VIEW_SIZE   (48*1024*1024)
 

Definition at line 205 of file mippc.h.

#define MM_SYSTEM_VIEW_START   (0xD0000000)
 

Definition at line 203 of file mippc.h.

#define MM_USER_PAGE_TABLE_PAGES   (512)
 

Definition at line 389 of file mippc.h.

#define MM_VA_MAPPED_BY_PDE   (0x400000)
 

Definition at line 258 of file mippc.h.

#define MM_VIRTUAL_PAGE_SHIFT   20
 

Definition at line 136 of file mippc.h.

#define MM_WORKING_SET_END   ((ULONG)0xC07FF000)
 

Definition at line 299 of file mippc.h.

#define MM_ZERO_KERNEL_PTE   0
 

Definition at line 341 of file mippc.h.

#define MM_ZERO_PTE   0
 

Definition at line 335 of file mippc.h.

#define MmProtopte_Base   ((ULONG)0xD3000000)
 

Definition at line 211 of file mippc.h.

#define NON_PAGED_SYSTEM_END   ((ULONG)0xEFFFFFF0)
 

Definition at line 215 of file mippc.h.

#define NUMBER_OF_MAPPING_PTES   255
 

Definition at line 285 of file mippc.h.

#define PAGE_DIRECTORY_MASK   ((ULONG)0x003FFFFF)
 

Definition at line 256 of file mippc.h.

#define PDE_PER_PAGE   ((ULONG)1024)
 

Definition at line 381 of file mippc.h.

#define PDE_TOP   0xC03FFFFF
 

Definition at line 159 of file mippc.h.

#define PHYSICAL_ADDRESS_BITS   (32)
 

Definition at line 269 of file mippc.h.

#define PTE_PER_PAGE   ((ULONG)1024)
 

Definition at line 383 of file mippc.h.

#define PTE_SHIFT   (2)
 

Definition at line 263 of file mippc.h.

#define SET_PAGING_FILE_INFO PTE,
FILEINFO,
OFFSET   ) 
 

Value:

((((PTE).u.Long & CLEAR_FOR_PAGE_FILE) | \ (((FILEINFO) << 8) | \ (OFFSET << 12))))

Definition at line 1315 of file mippc.h.

#define WORKING_SET_LIST   ((PVOID)((ULONG)ZEROING_PAGE_PTE + PAGE_SIZE))
 

Definition at line 294 of file mippc.h.

#define ZEROING_PAGE_PTE   ((PMMPTE)((ULONG)IMAGE_MAPPING_PTE + PAGE_SIZE))
 

Definition at line 292 of file mippc.h.


Typedef Documentation

typedef struct _MMCOLOR_TABLES MMCOLOR_TABLES
 

typedef struct _MMPRIMARY_COLOR_TABLES MMPRIMARY_COLOR_TABLES
 

typedef struct _MMPTE MMPTE
 

typedef struct _MMPTE_LIST MMPTE_LIST
 

typedef struct _MMPTE_PROTOTYPE MMPTE_PROTOTYPE
 

typedef struct _MMPTE_SOFTWARE MMPTE_SOFTWARE
 

typedef struct _MMPTE_SUBSECTION MMPTE_SUBSECTION
 

typedef struct _MMPTE_TRANSITION MMPTE_TRANSITION
 

typedef struct _MMCOLOR_TABLES * PMMCOLOR_TABLES
 

typedef struct _MMPRIMARY_COLOR_TABLES * PMMPRIMARY_COLOR_TABLES
 

typedef MMPTE* PMMPTE
 

Definition at line 1998 of file mippc.h.


Variable Documentation

PMMCOLOR_TABLES MmFreePagesByColor[2]
 

Definition at line 1905 of file mippc.h.

MMPFNLIST MmFreePagesByPrimaryColor[2][MM_MAXIMUM_NUMBER_OF_COLORS]
 

Definition at line 1902 of file mippc.h.

Referenced by MiInitMachineDependent().

ULONG MmSecondaryColorMask
 

Definition at line 436 of file mippc.h.

ULONG MmTotalPagesForPagingFile
 

Definition at line 1907 of file mippc.h.


Generated on Sat May 15 19:44:43 2004 for test by doxygen 1.3.7