◆ Arm64PhysicalMemoryManager()
| Arm64PhysicalMemoryManager::Arm64PhysicalMemoryManager |
( |
| ) |
|
|
private |
◆ allocateContinuousPagesUnlocked()
| physical_uintptr_t Arm64PhysicalMemoryManager::allocateContinuousPagesUnlocked |
( |
size_t |
pages, |
|
|
size_t |
constraints |
|
) |
| |
|
private |
◆ allocatePage()
| physical_uintptr_t Arm64PhysicalMemoryManager::allocatePage |
( |
size_t |
pageConstraints = 0 | ) |
|
|
overridevirtual |
◆ allocatePageUnlocked()
| physical_uintptr_t Arm64PhysicalMemoryManager::allocatePageUnlocked |
( |
size_t |
constraints | ) |
|
|
private |
◆ allocateRegion()
| bool Arm64PhysicalMemoryManager::allocateRegion |
( |
MemoryRegion & |
Region, |
|
|
size_t |
cPages, |
|
|
size_t |
pageConstraints, |
|
|
size_t |
Flags, |
|
|
physical_uintptr_t |
start = -1 |
|
) |
| |
|
overridevirtual |
Allocate a memory-region with specific constraints the pages need to fullfill.
- Parameters
-
| [in] | Region | reference to the MemoryRegion object |
| [in] | cPages | the number of pages to allocate for the MemoryRegion object |
| [in] | pageConstraints | the constraints the pages have to fullfill |
| [in] | Flags | flags from the VirtualAddressSpace class namespace |
| [in] | start | the physical address of the beginning of the region (optional) |
- Returns
- true, if a valid MemoryRegion object is created, false otherwise
Implements PhysicalMemoryManager.
Definition at line 257 of file arm64/PhysicalMemoryManager.cc.
References PhysicalMemoryManager::anonymous, VirtualAddressSpace::CacheDisable, PhysicalMemoryManager::continuous, freePage(), VirtualAddressSpace::getKernelAddressSpace(), VirtualAddressSpace::getMapping(), VirtualAddressSpace::KernelMode, PhysicalMemoryManager::m_MemoryRegions, MemoryRegion::m_PhysicalAddress, MemoryRegion::m_Size, MemoryRegion::m_VirtualAddress, VirtualAddressSpace::map(), PhysicalMemoryManager::nonRamMemory, Vector< T >::pushBack(), VirtualAddressSpace::unmap(), and PhysicalMemoryManager::virtualOnly.
◆ copyPhysicalPageFromBuffer()
| bool Arm64PhysicalMemoryManager::copyPhysicalPageFromBuffer |
( |
physical_uintptr_t |
page, |
|
|
const void * |
buffer |
|
) |
| |
|
overridevirtual |
◆ copyPhysicalPageToBuffer()
| bool Arm64PhysicalMemoryManager::copyPhysicalPageToBuffer |
( |
physical_uintptr_t |
page, |
|
|
void * |
buffer |
|
) |
| |
|
overridevirtual |
◆ freePage()
| void Arm64PhysicalMemoryManager::freePage |
( |
physical_uintptr_t |
page | ) |
|
|
overridevirtual |
◆ freePageCount()
| size_t Arm64PhysicalMemoryManager::freePageCount |
( |
| ) |
const |
|
overridevirtual |
◆ freePageUnlocked()
| void Arm64PhysicalMemoryManager::freePageUnlocked |
( |
physical_uintptr_t |
page | ) |
|
|
overrideprivatevirtual |
◆ initialise()
◆ instance()
◆ markPage()
| void Arm64PhysicalMemoryManager::markPage |
( |
size_t |
page, |
|
|
bool |
available |
|
) |
| |
|
private |
◆ memorySnapshot()
◆ pageAvailable()
| bool Arm64PhysicalMemoryManager::pageAvailable |
( |
size_t |
page | ) |
const |
|
private |
◆ pageLimit()
| size_t Arm64PhysicalMemoryManager::pageLimit |
( |
size_t |
constraints | ) |
const |
|
private |
◆ pin()
| void Arm64PhysicalMemoryManager::pin |
( |
physical_uintptr_t |
page | ) |
|
|
overridevirtual |
"Pin" a page, increasing its refcount.
Every time a pinned page is passed to freePage, its refcount is decreased, and the page is only freed once the refcount hits zero.
Note that an unpin function is not provided, as freePage offers the right semantics.
Implements PhysicalMemoryManager.
Definition at line 221 of file arm64/PhysicalMemoryManager.cc.
References panic().
◆ tryAllocatePage()
| physical_uintptr_t Arm64PhysicalMemoryManager::tryAllocatePage |
( |
| ) |
|
|
overridevirtual |
◆ unmapRegion()
| void Arm64PhysicalMemoryManager::unmapRegion |
( |
MemoryRegion * |
pRegion | ) |
|
|
overrideprivatevirtual |
◆ m_FreeBitmap
| uint8_t* Arm64PhysicalMemoryManager::m_FreeBitmap |
|
private |
◆ m_FreePages
| size_t Arm64PhysicalMemoryManager::m_FreePages |
|
private |
◆ m_Lock
| Spinlock Arm64PhysicalMemoryManager::m_Lock |
|
mutableprivate |
◆ m_MaxPage
| size_t Arm64PhysicalMemoryManager::m_MaxPage |
|
private |
◆ m_NextPage
| size_t Arm64PhysicalMemoryManager::m_NextPage |
|
private |
◆ m_NextRegion
| uintptr_t Arm64PhysicalMemoryManager::m_NextRegion |
|
private |
◆ m_References
| uint16_t* Arm64PhysicalMemoryManager::m_References |
|
private |
◆ m_RegionLock
| Spinlock Arm64PhysicalMemoryManager::m_RegionLock |
|
private |
◆ m_TotalPages
| size_t Arm64PhysicalMemoryManager::m_TotalPages |
|
private |
The documentation for this class was generated from the following files: