77 lines
2.5 KiB
C++
77 lines
2.5 KiB
C++
/**
|
|
* 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 <harraiken91@gmail.com>
|
|
*/
|
|
|
|
#include <xtos.hh>
|
|
|
|
|
|
/* 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};
|