/** * PROJECT: ExectOS * COPYRIGHT: See COPYING.md in the top level directory * FILE: xtoskrnl/mm/data.cc * DESCRIPTION: Memory Manager global and static data * DEVELOPERS: Aiken Harris */ #include /* Array of free page lists segregated by cache color */ PMMCOLOR_TABLES MM::Colors::FreePages[FreePageList + 1]; /* Number of supported page colors */ ULONG MM::Colors::PagingColors; /* Bitmask used to calculate the cache color index */ ULONG MM::Colors::PagingColorsMask; /* Allocation descriptors dedicated for hardware layer */ LOADER_MEMORY_DESCRIPTOR MM::HardwarePool::HardwareAllocationDescriptors[MM_HARDWARE_ALLOCATION_DESCRIPTORS]; /* Live address of kernel's hardware heap */ PVOID MM::HardwarePool::HardwareHeapStart = MM_HARDWARE_HEAP_START_ADDRESS; /* Number of used hardware allocation descriptors */ ULONG MM::HardwarePool::UsedHardwareAllocationDescriptors = 0; /* Processor structures data (THIS IS A TEMPORARY HACK) */ UCHAR MM::KernelPool::ProcessorStructuresData[MAXIMUM_PROCESSORS][KPROCESSOR_STRUCTURES_SIZE] = {{0}}; /* Memory layout */ MMMEMORY_LAYOUT MM::Manager::MemoryLayout; /* Number of system PTEs */ PFN_NUMBER MM::Manager::NumberOfSystemPtes; /* Instance of the page map routines for the current PML level */ MM::PPAGEMAP MM::Paging::PmlRoutines; /* Biggest free memory descriptor */ PLOADER_MEMORY_DESCRIPTOR MM::Pfn::FreeDescriptor; /* Highest physical page number */ ULONG_PTR MM::Pfn::HighestPhysicalPage; /* Lowest physical page number */ ULONG_PTR MM::Pfn::LowestPhysicalPage = -1; /* Number of physical pages */ ULONGLONG MM::Pfn::NumberOfPhysicalPages; /* Old biggest free memory descriptor */ LOADER_MEMORY_DESCRIPTOR MM::Pfn::OriginalFreeDescriptor; /* Size of the PFN database in pages */ PFN_NUMBER MM::Pfn::PfnDatabaseSize; /* Array of lists for available System PTEs, separated by pool type */ MMPTE MM::Pte::FirstSystemFreePte[MaximumPtePoolTypes]; /* Virtual base address of the System PTE space */ PMMPTE MM::Pte::SystemPteBase; /* End addresses for the System PTE ranges */ PMMPTE MM::Pte::SystemPtesEnd[MaximumPtePoolTypes]; /* Start addresses for the System PTE ranges */ PMMPTE MM::Pte::SystemPtesStart[MaximumPtePoolTypes]; /* Total count of available System PTEs */ ULONG MM::Pte::TotalSystemFreePtes[MaximumPtePoolTypes]; /* Template PTE entry containing standard flags for a valid, present kernel page */ MMPTE MM::Pte::ValidPte = {MM_PTE_VALID|MM_PTE_EXECUTE_READWRITE|MM_PTE_DIRTY|MM_PTE_ACCESSED};