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

mir4000.h File Reference

#include <kxmips.h>

Go to the source code of this file.

Classes

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

Defines

#define HEADER_FILE
#define VLM_SUPPORT   1
#define MM_KSEG0_BASE   KSEG0_BASE64
#define MM_HIGHEST_USER_ADDRESSxx   MM_HIGHEST_USER_ADDRESS64
#define LARGE_PAGES   1
#define MM_VIRTUAL_PAGE_SHIFT   20
#define PDE_BASE64   ((ULONG)0xC0302000)
#define PTE_BASE64   ((ULONG)0xC0800000)
#define MM_SYSTEM_SPACE_START   (0xC2800000)
#define MM_SYSTEM_SPACE_END   (0xFFFFFFFF)
#define MM_NONPAGED_SYSTEM_SPACE_START   (0xF0000000)
#define PDE_TOP   0xC03FFFFF
#define MM_PAGES_IN_KSEG0   (((ULONG)KSEG1_BASE - (ULONG)KSEG0_BASE) >> PAGE_SHIFT)
#define HYPER_SPACE   ((PVOID)0xC0400000)
#define HYPER_SPACE_END   0xC07fffff
#define MM_SYSTEM_CACHE_WORKING_SET   (0xC2800000)
#define MM_SYSTEM_CACHE_START   (0xC2C00000)
#define MM_SYSTEM_CACHE_END   (0xDE000000)
#define MM_MAXIMUM_SYSTEM_CACHE_SIZE   (((ULONG)MM_SYSTEM_CACHE_END - (ULONG)MM_SYSTEM_CACHE_START) >> PAGE_SHIFT)
#define MM_SYSTEM_VIEW_START   (0xDE000000)
#define MM_SYSTEM_VIEW_SIZE   (48*1024*1024)
#define MM_PAGED_POOL_START   ((PVOID)(0xE1000000))
#define MM_LOWEST_NONPAGED_SYSTEM_START   ((PVOID)(0xEB000000))
#define MmProtopte_Base   ((ULONG)0xE1000000)
#define MM_NONPAGED_POOL_END   ((PVOID)(0xFFBE0000))
#define NON_PAGED_SYSTEM_END   ((ULONG)0xFFFFFFF0)
#define MM_MINIMUM_SYSTEM_PTES   9000
#define MM_MAXIMUM_SYSTEM_PTES   50000
#define MM_DEFAULT_SYSTEM_PTES   15000
#define MM_MAX_INITIAL_NONPAGED_POOL   ((ULONG)(128*1024*1024))
#define MM_MAX_ADDITIONAL_NONPAGED_POOL   ((ULONG)(128*1024*1024))
#define MM_MAX_PAGED_POOL   ((ULONG)(192*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   (0x40000000)
#define PTE_SHIFT   (2)
#define MM_HIGHEST_VAD_ADDRESS64   ((PVOID64)(0x800000000))
#define PHYSICAL_ADDRESS_BITS   (36)
#define MM_MAXIMUM_NUMBER_OF_COLORS   (8)
#define MM_PROTO_PTE_ALIGNMENT   ((ULONG)MM_MAXIMUM_NUMBER_OF_COLORS * (ULONG)PAGE_SIZE)
#define MAX_PAGE_FILES   8
#define HYPER_SPACE   ((PVOID)0xC0400000)
#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_GLOBAL_MASK   0x1
#define MM_PTE_PROTOTYPE_MASK   0x4
#define MM_PTE_VALID_MASK   0x2
#define MM_PTE_DIRTY_MASK   0x4
#define MM_PTE_CACHE_DISABLE_MASK   0x10
#define MM_PTE_TRANSITION_MASK   0x100
#define MM_PTE_WRITE_MASK   0x40000000
#define MM_PTE_COPY_ON_WRITE_MASK   0x80000000
#define MM_PTE_CACHE_ENABLE_MASK   0x0
#define MM_PTE_NOACCESS   0x0
#define MM_PTE_READONLY   0x0
#define MM_PTE_READWRITE   MM_PTE_WRITE_MASK
#define MM_PTE_WRITECOPY   (MM_PTE_WRITE_MASK | MM_PTE_COPY_ON_WRITE_MASK)
#define MM_PTE_EXECUTE   0x0
#define MM_PTE_EXECUTE_READ   0x0
#define MM_PTE_EXECUTE_READWRITE   MM_PTE_WRITE_MASK
#define MM_PTE_EXECUTE_WRITECOPY   (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   MM_PTE_CACHE_ENABLE_MASK
#define MM_PROTECT_FIELD_SHIFT   3
#define MM_ZERO_PTE   0
#define MM_ZERO_KERNEL_PTE   MM_PTE_GLOBAL_MASK
#define MM_DEMAND_ZERO_WRITE_PTE   (MM_READWRITE << MM_PROTECT_FIELD_SHIFT)
#define MM_KERNEL_DEMAND_ZERO_PTE   ((MM_READWRITE << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK)
#define MM_KERNEL_NOACCESS_PTE   ((MM_NOACCESS << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK)
#define MM_PTE_CLEAN   0
#define MM_PTE_DIRTY   1
#define MM_STACK_ALIGNMENT   0x2000
#define MM_STACK_OFFSET   0x1000
#define PDE_PER_PAGE   ((ULONG)1024)
#define PTE_PER_PAGE   ((ULONG)1024)
#define MM_USER_PAGE_TABLE_PAGES   (512)
#define MM_NUMBER_OF_COLORS   8
#define MM_COLOR_MASK   7
#define MM_COLOR_STRIDE   11
#define MM_COLOR_ALIGNMENT   0x8000
#define MM_COLOR_MASK_VIRTUAL   0x7000
#define MM_SECONDARY_COLORS_DEFAULT   (256)
#define MM_SECONDARY_COLORS_MIN   (2)
#define MM_SECONDARY_COLORS_MAX   (2048)
#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_GLOBAL_BIT_IF_SYSTEM(OUTPTE, PPTE)
#define MI_SET_PTE_DIRTY(PTE)   (PTE).u.Long |= HARDWARE_PTE_DIRTY_MASK
#define MI_SET_PTE_CLEAN(PTE)   (PTE).u.Long &= ~HARDWARE_PTE_DIRTY_MASK
#define MI_IS_PTE_DIRTY(PTE)   ((PTE).u.Hard.Dirty != 0)
#define MI_SET_GLOBAL_STATE(PTE, STATE)   (PTE).u.Hard.Global = STATE;
#define MI_ENABLE_CACHING(PTE)   ((PTE).u.Hard.CachePolicy = PCR->CachePolicy)
#define MI_DISABLE_CACHING(PTE)   ((PTE).u.Hard.CachePolicy = UNCACHED_POLICY)
#define MI_IS_CACHING_DISABLED(PPTE)   ((PPTE)->u.Hard.CachePolicy == UNCACHED_POLICY)
#define MI_IS_PTE_DIRTY(PTE)   ((PTE).u.Hard.Dirty != 0)
#define MI_SET_PFN_DELETED(PPFN)   (((ULONG)(PPFN)->PteAddress &= 0x7FFFFFFF ))
#define MI_IS_PFN_DELETED(PPFN)   (((ULONG)(PPFN)->PteAddress & 0x80000000) == 0)
#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_COLOR_FROM_SECONDARY(COLOR)   ((COLOR) & MM_COLOR_MASK)
#define MI_GET_SECONDARY_COLOR(PAGE, PFN)   ((((ULONG)(PAGE) & MmSecondaryColorMask)) | (PFN)->u3.e1.PageColor)
#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_PROTO_PTE_ADDRESS   ((ULONG)0xf)
#define CLEAR_FOR_PAGE_FILE   ((ULONG)(0x0F9))
#define SET_PAGING_FILE_INFO(PTE, FILEINFO, OFFSET)
#define MiPteToProto(lpte)
#define MiProtoAddressForPte(proto_va)   ((ULONG)((((ULONG)proto_va - MmProtopte_Base) << 1) | MM_PTE_PROTOTYPE_MASK))
#define MiProtoAddressForKernelPte(proto_va)
#define MM_SUBSECTION_MAP   (128*1024*1024)
#define MiGetSubsectionAddress(lpte)
#define MiGetSubsectionAddressForPte(VA)
#define MiGetPdeAddress(va)   ((PMMPTE)(((((ULONG)(va)) >> 22) << 2) + PDE_BASE))
#define MiGetPdeAddress64(va)   ((PMMPTE)((ULONG)((((ULONGLONG)(va)) >> 22) << 2) + PDE_BASE64))
#define MiGetPteAddress(va)   ((PMMPTE)(((((ULONG)(va)) >> 12) << 2) + PTE_BASE))
#define MiGetPteAddress64(va)   ((PMMPTE)((ULONG)((((ULONGLONG)(va)) >> 12) << 2) + PTE_BASE64))
#define MiGetPdeOffset(va)   (((ULONG)(va)) >> 22)
#define MiGetPteOffset(va)   ((((ULONG)(va)) << 10) >> 22)
#define MiGetVirtualAddressMappedByPte(PTE)   ((PVOID)((ULONG)(PTE) << 10))
#define MiGetVirtualAddressMappedByPte64(PTE)   ((PVOID64)(((ULONGLONG)((ULONG)(PTE) - PTE_BASE64)) << 10))
#define MiGetVirtualPageNumberMappedByPte64(PTE)   (((ULONG)(PTE) - PTE_BASE64) >> 2)
#define GET_PAGING_FILE_NUMBER(PTE)   ((((PTE).u.Long) >> 9) & 0x7)
#define GET_PAGING_FILE_OFFSET(PTE)   ((((PTE).u.Long) >> 12) & 0x000FFFFF)
#define IS_PTE_NOT_DEMAND_ZERO(PTE)   ((PTE).u.Long & (ULONG)0xFFFFF107)
#define MM_DEMAND_ZERO_WRITE_PTE   (MM_READWRITE << MM_PROTECT_FIELD_SHIFT)
#define MM_KERNEL_DEMAND_ZERO_PTE   ((MM_READWRITE << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK)
#define MM_KERNEL_NOACCESS_PTE   ((MM_NOACCESS << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK)
#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 << 3) >> 15)

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_SOFTWARE MMPTE_SOFTWARE
typedef _MMPTE_TRANSITION MMPTE_TRANSITION
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)(0x0F9))
 

Definition at line 1318 of file mir4000.h.

#define CLEAR_FOR_PROTO_PTE_ADDRESS   ((ULONG)0xf)
 

Definition at line 1313 of file mir4000.h.

#define FIRST_MAPPING_PTE   ((ULONG)0xC0400000)
 

Definition at line 263 of file mir4000.h.

#define GET_PAGING_FILE_NUMBER PTE   )     ((((PTE).u.Long) >> 9) & 0x7)
 

Definition at line 1675 of file mir4000.h.

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

Definition at line 1698 of file mir4000.h.

#define HEADER_FILE
 

Definition at line 25 of file mir4000.h.

#define HYPER_SPACE   ((PVOID)0xC0400000)
 

Definition at line 262 of file mir4000.h.

#define HYPER_SPACE   ((PVOID)0xC0400000)
 

Definition at line 262 of file mir4000.h.

#define HYPER_SPACE_END   0xC07fffff
 

Definition at line 155 of file mir4000.h.

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

Definition at line 277 of file mir4000.h.

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

Definition at line 1720 of file mir4000.h.

#define LARGE_PAGES   1
 

Definition at line 50 of file mir4000.h.

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

Definition at line 270 of file mir4000.h.

#define LOWEST_IO_ADDRESS   (0x40000000)
 

Definition at line 232 of file mir4000.h.

#define MAX_PAGE_FILES   8
 

Definition at line 256 of file mir4000.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 1897 of file mir4000.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) { \ KeChangeColorPage((PVOID)((ULONG)(COLOR) << PAGE_SHIFT), \ (PVOID)((ULONG)(OldColor << PAGE_SHIFT)), \ Page); \ PPFN->u3.e1.PageColor = COLOR; \ } \ }

Definition at line 862 of file mir4000.h.

#define MI_CONVERT_PHYSICAL_TO_PFN Va   )     (((ULONG)Va << 3) >> 15)
 

Definition at line 1958 of file mir4000.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 1206 of file mir4000.h.

#define MI_DISABLE_CACHING PTE   )     ((PTE).u.Hard.CachePolicy = UNCACHED_POLICY)
 

Definition at line 739 of file mir4000.h.

#define MI_ENABLE_CACHING PTE   )     ((PTE).u.Hard.CachePolicy = PCR->CachePolicy)
 

Definition at line 714 of file mir4000.h.

#define MI_GET_ACCESSED_IN_PTE PPTE   )     0
 

Definition at line 1256 of file mir4000.h.

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

Definition at line 1071 of file mir4000.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 1142 of file mir4000.h.

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

Definition at line 1110 of file mir4000.h.

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

Definition at line 1046 of file mir4000.h.

#define MI_GET_OWNER_IN_PTE PPTE   )     KernelMode
 

Definition at line 1307 of file mir4000.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 938 of file mir4000.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 964 of file mir4000.h.

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

Definition at line 1069 of file mir4000.h.

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

Definition at line 1079 of file mir4000.h.

#define MI_INITIALIZE_HYPERSPACE_MAP HYPER_PAGE   ) 
 

Value:

{ \ PMMPTE NextPte; \ ULONG LastEntry; \ PMMPTE Base; \ ULONG i; \ KIRQL OldIrql; \ Base = MiMapPageInHyperSpace (HYPER_PAGE, &OldIrql); \ LastEntry = NUMBER_OF_MAPPING_PTES - MM_COLOR_MASK; \ NextPte = (PMMPTE)((PCHAR)Base + BYTE_OFFSET(MmFirstReservedMappingPte));\ for (i = 0; i < MM_NUMBER_OF_COLORS; i++ ) { \ NextPte->u.Hard.PageFrameNumber = LastEntry; \ NextPte += 1; \ } \ MiUnmapPageInHyperSpace (OldIrql); \ }

Definition at line 898 of file mir4000.h.

#define MI_IS_CACHING_DISABLED PPTE   )     ((PPTE)->u.Hard.CachePolicy == UNCACHED_POLICY)
 

Definition at line 762 of file mir4000.h.

#define MI_IS_PFN_DELETED PPFN   )     (((ULONG)(PPFN)->PteAddress & 0x80000000) == 0)
 

Definition at line 833 of file mir4000.h.

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

Definition at line 1931 of file mir4000.h.

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

Definition at line 785 of file mir4000.h.

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

Definition at line 785 of file mir4000.h.

#define MI_MAKE_PROTECT_WRITE_COPY PTE   ) 
 

Value:

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

Definition at line 1785 of file mir4000.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; \ if (((PMMPTE)PPTE) >= MiGetPteAddress(MM_SYSTEM_SPACE_START)) {\ (OUTPTE).u.Hard.Global = 1; \ }

Definition at line 525 of file mir4000.h.

#define MI_MAKE_TRANSITION_PTE_VALID OUTPTE,
PPTE   ) 
 

Value:

(OUTPTE).u.Long = ((((PPTE)->u.Long >> 3) & 0xffffffc0) | \ (MmProtectToPteMask[(PPTE)->u.Trans.Protection]) | \ MM_PTE_VALID_MASK); \ if (((PMMPTE)PPTE) >= MiGetPteAddress(MM_SYSTEM_SPACE_START)) { \ (OUTPTE).u.Hard.Global = 1; \ }

Definition at line 558 of file mir4000.h.

#define MI_MAKE_VALID_PTE OUTPTE,
FRAME,
PMASK,
PPTE   ) 
 

Value:

{ \ (OUTPTE).u.Long = ((FRAME << 6) | \ (MmProtectToPteMask[PMASK]) | \ MM_PTE_VALID_MASK); \ if (((PMMPTE)PPTE) >= MiGetPteAddress(MM_SYSTEM_SPACE_START)) { \ (OUTPTE).u.Hard.Global = 1; \ } \ }

Definition at line 454 of file mir4000.h.

#define MI_MAKE_VALID_PTE_TRANSITION OUTPTE,
PROTECT   ) 
 

Value:

(OUTPTE).u.Long = ((((OUTPTE).u.Long & 0xffffffc0) << 3) | \ (((PROTECT) << MM_PROTECT_FIELD_SHIFT)) | \ ((OUTPTE).u.Long & MM_PTE_GLOBAL_MASK) | \ MM_PTE_TRANSITION_MASK);

Definition at line 488 of file mir4000.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 1178 of file mir4000.h.

#define MI_MAKING_MULTIPLE_PTES_INVALID SYSTEM_WIDE   ) 
 

Definition at line 1777 of file mir4000.h.

#define MI_MAKING_VALID_PTE_INVALID SYSTEM_WIDE   ) 
 

Definition at line 1751 of file mir4000.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 1856 of file mir4000.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 992 of file mir4000.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 1020 of file mir4000.h.

#define MI_SET_ACCESSED_IN_PTE PPTE,
ACCESSED   ) 
 

Definition at line 1233 of file mir4000.h.

#define MI_SET_GLOBAL_BIT_IF_SYSTEM OUTPTE,
PPTE   ) 
 

Value:

if (((PMMPTE)PPTE) >= MiGetPteAddress(MM_SYSTEM_SPACE_START)) { \ (OUTPTE).u.Hard.Global = 1; \ }

Definition at line 591 of file mir4000.h.

#define MI_SET_GLOBAL_STATE PTE,
STATE   )     (PTE).u.Hard.Global = STATE;
 

Definition at line 688 of file mir4000.h.

#define MI_SET_OWNER_IN_PTE PPTE,
OWNER   ) 
 

Definition at line 1282 of file mir4000.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 1819 of file mir4000.h.

#define MI_SET_PFN_DELETED PPFN   )     (((ULONG)(PPFN)->PteAddress &= 0x7FFFFFFF ))
 

Definition at line 809 of file mir4000.h.

#define MI_SET_PTE_CLEAN PTE   )     (PTE).u.Long &= ~HARDWARE_PTE_DIRTY_MASK
 

Definition at line 640 of file mir4000.h.

#define MI_SET_PTE_DIRTY PTE   )     (PTE).u.Long |= HARDWARE_PTE_DIRTY_MASK
 

Definition at line 617 of file mir4000.h.

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

Definition at line 1545 of file mir4000.h.

#define MiGetPdeAddress64 va   )     ((PMMPTE)((ULONG)((((ULONGLONG)(va)) >> 22) << 2) + PDE_BASE64))
 

Definition at line 1547 of file mir4000.h.

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

Definition at line 1598 of file mir4000.h.

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

Definition at line 1572 of file mir4000.h.

#define MiGetPteAddress64 va   )     ((PMMPTE)((ULONG)((((ULONGLONG)(va)) >> 12) << 2) + PTE_BASE64))
 

Definition at line 1574 of file mir4000.h.

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

Definition at line 1622 of file mir4000.h.

#define MiGetSubsectionAddress lpte   ) 
 

Value:

(((lpte)->u.Long & 0x1) ? \ ((PSUBSECTION)(((((lpte)->u.Long >> 8) << 3) + (ULONG)MmSubsectionBase))) \ : ((PSUBSECTION)((ULONG)MM_NONPAGED_POOL_END - ((((lpte)->u.Long) >> 8) << 3))))

Definition at line 1486 of file mir4000.h.

#define MiGetSubsectionAddressForPte VA   ) 
 

Value:

(((ULONG)(VA) < (ULONG)KSEG1_BASE) ? \ ((((ULONG)(VA) - (ULONG)MmSubsectionBase) << 5) | 0x1) \ : (((ULONG)MM_NONPAGED_POOL_END - (ULONG)VA) << 5))

Definition at line 1517 of file mir4000.h.

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

Definition at line 1646 of file mir4000.h.

#define MiGetVirtualAddressMappedByPte64 PTE   )     ((PVOID64)(((ULONGLONG)((ULONG)(PTE) - PTE_BASE64)) << 10))
 

Definition at line 1648 of file mir4000.h.

#define MiGetVirtualPageNumberMappedByPte64 PTE   )     (((ULONG)(PTE) - PTE_BASE64) >> 2)
 

Definition at line 1651 of file mir4000.h.

#define MiProtoAddressForKernelPte proto_va   ) 
 

Value:

(((ULONG)(proto_va) < (ULONG)KSEG1_BASE) ? \ ((ULONG)((((ULONG)proto_va - (ULONG)MmNonPagedPoolStart) << 1) | MM_PTE_PROTOTYPE_MASK | \ 0x40000000 | MM_PTE_GLOBAL_MASK)) \ : ((ULONG)((((ULONG)proto_va - MmProtopte_Base) << 1) | MM_PTE_PROTOTYPE_MASK | \ MM_PTE_GLOBAL_MASK)))

Definition at line 1448 of file mir4000.h.

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

Definition at line 1416 of file mir4000.h.

#define MiPteToProto lpte   ) 
 

Value:

((PMMPTE)((((lpte)->u.Long >> 1) & 0x3FFFFFFC) + \ MmProtopte_Base))

Definition at line 1387 of file mir4000.h.

#define MM_COLOR_ALIGNMENT   0x8000
 

Definition at line 397 of file mir4000.h.

#define MM_COLOR_MASK   7
 

Definition at line 385 of file mir4000.h.

#define MM_COLOR_MASK_VIRTUAL   0x7000
 

Definition at line 403 of file mir4000.h.

#define MM_COLOR_STRIDE   11
 

Definition at line 391 of file mir4000.h.

#define MM_DEFAULT_SYSTEM_PTES   15000
 

Definition at line 197 of file mir4000.h.

#define MM_DEMAND_ZERO_WRITE_PTE   (MM_READWRITE << MM_PROTECT_FIELD_SHIFT)
 

Definition at line 1721 of file mir4000.h.

#define MM_DEMAND_ZERO_WRITE_PTE   (MM_READWRITE << MM_PROTECT_FIELD_SHIFT)
 

Definition at line 1721 of file mir4000.h.

#define MM_HIGHEST_USER_ADDRESSxx   MM_HIGHEST_USER_ADDRESS64
 

Definition at line 36 of file mir4000.h.

#define MM_HIGHEST_VAD_ADDRESS64   ((PVOID64)(0x800000000))
 

Definition at line 240 of file mir4000.h.

#define MM_KERNEL_DEMAND_ZERO_PTE   ((MM_READWRITE << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK)
 

Definition at line 1723 of file mir4000.h.

#define MM_KERNEL_DEMAND_ZERO_PTE   ((MM_READWRITE << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK)
 

Definition at line 1723 of file mir4000.h.

#define MM_KERNEL_NOACCESS_PTE   ((MM_NOACCESS << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK)
 

Definition at line 1725 of file mir4000.h.

#define MM_KERNEL_NOACCESS_PTE   ((MM_NOACCESS << MM_PROTECT_FIELD_SHIFT) | MM_PTE_GLOBAL_MASK)
 

Definition at line 1725 of file mir4000.h.

#define MM_KSEG0_BASE   KSEG0_BASE64
 

Definition at line 35 of file mir4000.h.

#define MM_LOWEST_NONPAGED_SYSTEM_START   ((PVOID)(0xEB000000))
 

Definition at line 181 of file mir4000.h.

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

Definition at line 213 of file mir4000.h.

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

Definition at line 207 of file mir4000.h.

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

Definition at line 219 of file mir4000.h.

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

Definition at line 221 of file mir4000.h.

#define MM_MAXIMUM_NUMBER_OF_COLORS   (8)
 

Definition at line 248 of file mir4000.h.

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

Definition at line 168 of file mir4000.h.

#define MM_MAXIMUM_SYSTEM_PTES   50000
 

Definition at line 195 of file mir4000.h.

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

Definition at line 283 of file mir4000.h.

#define MM_MINIMUM_SYSTEM_PTES   9000
 

Definition at line 193 of file mir4000.h.

#define MM_NONPAGED_POOL_END   ((PVOID)(0xFFBE0000))
 

Definition at line 185 of file mir4000.h.

#define MM_NONPAGED_SYSTEM_SPACE_START   (0xF0000000)
 

Definition at line 147 of file mir4000.h.

#define MM_NUMBER_OF_COLORS   8
 

Definition at line 379 of file mir4000.h.

#define MM_PAGED_POOL_START   ((PVOID)(0xE1000000))
 

Definition at line 179 of file mir4000.h.

#define MM_PAGES_IN_KSEG0   (((ULONG)KSEG1_BASE - (ULONG)KSEG0_BASE) >> PAGE_SHIFT)
 

Definition at line 151 of file mir4000.h.

#define MM_PROTECT_FIELD_SHIFT   3
 

Definition at line 315 of file mir4000.h.

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

Definition at line 250 of file mir4000.h.

#define MM_PTE_CACHE   MM_PTE_CACHE_ENABLE_MASK
 

Definition at line 313 of file mir4000.h.

#define MM_PTE_CACHE_DISABLE_MASK   0x10
 

Definition at line 292 of file mir4000.h.

#define MM_PTE_CACHE_ENABLE_MASK   0x0
 

Definition at line 296 of file mir4000.h.

#define MM_PTE_CLEAN   0
 

Definition at line 352 of file mir4000.h.

#define MM_PTE_COPY_ON_WRITE_MASK   0x80000000
 

Definition at line 295 of file mir4000.h.

#define MM_PTE_DIRTY   1
 

Definition at line 354 of file mir4000.h.

#define MM_PTE_DIRTY_MASK   0x4
 

Definition at line 291 of file mir4000.h.

#define MM_PTE_EXECUTE   0x0
 

Definition at line 307 of file mir4000.h.

#define MM_PTE_EXECUTE_READ   0x0
 

Definition at line 308 of file mir4000.h.

#define MM_PTE_EXECUTE_READWRITE   MM_PTE_WRITE_MASK
 

Definition at line 309 of file mir4000.h.

#define MM_PTE_EXECUTE_WRITECOPY   (MM_PTE_WRITE_MASK | MM_PTE_COPY_ON_WRITE_MASK)
 

Definition at line 310 of file mir4000.h.

#define MM_PTE_GLOBAL_MASK   0x1
 

Definition at line 288 of file mir4000.h.

#define MM_PTE_GUARD   0x0
 

Definition at line 312 of file mir4000.h.

#define MM_PTE_NOACCESS   0x0
 

Definition at line 303 of file mir4000.h.

#define MM_PTE_NOCACHE   (MM_PTE_CACHE_DISABLE_MASK)
 

Definition at line 311 of file mir4000.h.

#define MM_PTE_PROTOTYPE_MASK   0x4
 

Definition at line 289 of file mir4000.h.

#define MM_PTE_READONLY   0x0
 

Definition at line 304 of file mir4000.h.

#define MM_PTE_READWRITE   MM_PTE_WRITE_MASK
 

Definition at line 305 of file mir4000.h.

#define MM_PTE_TRANSITION_MASK   0x100
 

Definition at line 293 of file mir4000.h.

#define MM_PTE_VALID_MASK   0x2
 

Definition at line 290 of file mir4000.h.

#define MM_PTE_WRITE_MASK   0x40000000
 

Definition at line 294 of file mir4000.h.

#define MM_PTE_WRITECOPY   (MM_PTE_WRITE_MASK | MM_PTE_COPY_ON_WRITE_MASK)
 

Definition at line 306 of file mir4000.h.

#define MM_SECONDARY_COLORS_DEFAULT   (256)
 

Definition at line 409 of file mir4000.h.

#define MM_SECONDARY_COLORS_MAX   (2048)
 

Definition at line 413 of file mir4000.h.

#define MM_SECONDARY_COLORS_MIN   (2)
 

Definition at line 411 of file mir4000.h.

#define MM_STACK_ALIGNMENT   0x2000
 

Definition at line 358 of file mir4000.h.

#define MM_STACK_OFFSET   0x1000
 

Definition at line 359 of file mir4000.h.

#define MM_SUBSECTION_MAP   (128*1024*1024)
 

Definition at line 1457 of file mir4000.h.

#define MM_SYSTEM_CACHE_END   (0xDE000000)
 

Definition at line 166 of file mir4000.h.

#define MM_SYSTEM_CACHE_START   (0xC2C00000)
 

Definition at line 164 of file mir4000.h.

#define MM_SYSTEM_CACHE_WORKING_SET   (0xC2800000)
 

Definition at line 162 of file mir4000.h.

#define MM_SYSTEM_SPACE_END   (0xFFFFFFFF)
 

Definition at line 145 of file mir4000.h.

#define MM_SYSTEM_SPACE_START   (0xC2800000)
 

Definition at line 143 of file mir4000.h.

#define MM_SYSTEM_VIEW_SIZE   (48*1024*1024)
 

Definition at line 177 of file mir4000.h.

#define MM_SYSTEM_VIEW_START   (0xDE000000)
 

Definition at line 175 of file mir4000.h.

#define MM_USER_PAGE_TABLE_PAGES   (512)
 

Definition at line 373 of file mir4000.h.

#define MM_VA_MAPPED_BY_PDE   (0x400000)
 

Definition at line 230 of file mir4000.h.

#define MM_VIRTUAL_PAGE_SHIFT   20
 

Definition at line 131 of file mir4000.h.

#define MM_WORKING_SET_END   ((ULONG)0xC07FF000)
 

Definition at line 286 of file mir4000.h.

#define MM_ZERO_KERNEL_PTE   MM_PTE_GLOBAL_MASK
 

Definition at line 327 of file mir4000.h.

#define MM_ZERO_PTE   0
 

Definition at line 321 of file mir4000.h.

#define MmProtopte_Base   ((ULONG)0xE1000000)
 

Definition at line 183 of file mir4000.h.

#define NON_PAGED_SYSTEM_END   ((ULONG)0xFFFFFFF0)
 

Definition at line 187 of file mir4000.h.

#define NUMBER_OF_MAPPING_PTES   255
 

Definition at line 269 of file mir4000.h.

#define PAGE_DIRECTORY_MASK   ((ULONG)0x003FFFFF)
 

Definition at line 228 of file mir4000.h.

#define PDE_BASE64   ((ULONG)0xC0302000)
 

Definition at line 138 of file mir4000.h.

#define PDE_PER_PAGE   ((ULONG)1024)
 

Definition at line 365 of file mir4000.h.

#define PDE_TOP   0xC03FFFFF
 

Definition at line 149 of file mir4000.h.

#define PHYSICAL_ADDRESS_BITS   (36)
 

Definition at line 246 of file mir4000.h.

#define PTE_BASE64   ((ULONG)0xC0800000)
 

Definition at line 141 of file mir4000.h.

#define PTE_PER_PAGE   ((ULONG)1024)
 

Definition at line 367 of file mir4000.h.

#define PTE_SHIFT   (2)
 

Definition at line 234 of file mir4000.h.

#define SET_PAGING_FILE_INFO PTE,
FILEINFO,
OFFSET   ) 
 

Value:

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

Definition at line 1347 of file mir4000.h.

#define VLM_SUPPORT   1
 

Definition at line 28 of file mir4000.h.

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

Definition at line 281 of file mir4000.h.

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

Definition at line 279 of file mir4000.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 2065 of file mir4000.h.


Variable Documentation

PMMCOLOR_TABLES MmFreePagesByColor[2]
 

Definition at line 1977 of file mir4000.h.

MMPFNLIST MmFreePagesByPrimaryColor[2][MM_MAXIMUM_NUMBER_OF_COLORS]
 

Definition at line 1974 of file mir4000.h.

ULONG MmSecondaryColorMask
 

Definition at line 419 of file mir4000.h.

ULONG MmTotalPagesForPagingFile
 

Definition at line 1979 of file mir4000.h.


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