◆ Armv7PhysicalMemoryManager()
| Armv7PhysicalMemoryManager::Armv7PhysicalMemoryManager |
( |
| ) |
|
|
private |
◆ allocateAlignedPages()
| physical_uintptr_t Armv7PhysicalMemoryManager::allocateAlignedPages |
( |
size_t |
pages | ) |
|
◆ allocateContinuousPagesUnlocked()
| physical_uintptr_t Armv7PhysicalMemoryManager::allocateContinuousPagesUnlocked |
( |
size_t |
pages, |
|
|
size_t |
constraints |
|
) |
| |
|
private |
◆ allocatePage()
| physical_uintptr_t Armv7PhysicalMemoryManager::allocatePage |
( |
size_t |
pageConstraints = 0 | ) |
|
|
overridevirtual |
◆ allocatePageUnlocked()
| physical_uintptr_t Armv7PhysicalMemoryManager::allocatePageUnlocked |
( |
size_t |
constraints | ) |
|
|
private |
◆ allocateRegion()
| bool Armv7PhysicalMemoryManager::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 303 of file armv7/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 Armv7PhysicalMemoryManager::copyPhysicalPageFromBuffer |
( |
physical_uintptr_t |
page, |
|
|
const void * |
buffer |
|
) |
| |
|
overridevirtual |
◆ copyPhysicalPageToBuffer()
| bool Armv7PhysicalMemoryManager::copyPhysicalPageToBuffer |
( |
physical_uintptr_t |
page, |
|
|
void * |
buffer |
|
) |
| |
|
overridevirtual |
◆ freePage()
| void Armv7PhysicalMemoryManager::freePage |
( |
physical_uintptr_t |
page | ) |
|
|
overridevirtual |
◆ freePageCount()
| size_t Armv7PhysicalMemoryManager::freePageCount |
( |
| ) |
const |
|
overridevirtual |
◆ freePageUnlocked()
| void Armv7PhysicalMemoryManager::freePageUnlocked |
( |
physical_uintptr_t |
page | ) |
|
|
overrideprivatevirtual |
◆ initialise()
◆ instance()
◆ markPage()
| void Armv7PhysicalMemoryManager::markPage |
( |
size_t |
page, |
|
|
bool |
available |
|
) |
| |
|
private |
◆ memorySnapshot()
◆ pageAvailable()
| bool Armv7PhysicalMemoryManager::pageAvailable |
( |
size_t |
page | ) |
const |
|
private |
◆ pageLimit()
| size_t Armv7PhysicalMemoryManager::pageLimit |
( |
size_t |
constraints | ) |
const |
|
private |
◆ pin()
| void Armv7PhysicalMemoryManager::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 267 of file armv7/PhysicalMemoryManager.cc.
References panic().
◆ tryAllocatePage()
| physical_uintptr_t Armv7PhysicalMemoryManager::tryAllocatePage |
( |
| ) |
|
|
overridevirtual |
◆ unmapRegion()
| void Armv7PhysicalMemoryManager::unmapRegion |
( |
MemoryRegion * |
pRegion | ) |
|
|
overrideprivatevirtual |
◆ m_FreeBitmap
| uint8_t* Armv7PhysicalMemoryManager::m_FreeBitmap |
|
private |
◆ m_FreePages
| size_t Armv7PhysicalMemoryManager::m_FreePages |
|
private |
◆ m_Lock
| Spinlock Armv7PhysicalMemoryManager::m_Lock |
|
mutableprivate |
◆ m_MaxPage
| size_t Armv7PhysicalMemoryManager::m_MaxPage |
|
private |
◆ m_NextPage
| size_t Armv7PhysicalMemoryManager::m_NextPage |
|
private |
◆ m_NextRegion
| uintptr_t Armv7PhysicalMemoryManager::m_NextRegion |
|
private |
◆ m_References
| uint16_t* Armv7PhysicalMemoryManager::m_References |
|
private |
◆ m_RegionLock
| Spinlock Armv7PhysicalMemoryManager::m_RegionLock |
|
private |
◆ m_TotalPages
| size_t Armv7PhysicalMemoryManager::m_TotalPages |
|
private |
The documentation for this class was generated from the following files: