|
The Pedigree Project 0.1
|
#include <VirtualAddressSpace.h>
Inheritance diagram for HostedVirtualAddressSpace:
Collaboration diagram for HostedVirtualAddressSpace:Classes | |
| struct | mapping_t |
Public Member Functions | |
| virtual bool | isAddressValid (void *virtualAddress) |
| virtual bool | isMapped (void *virtualAddress) |
| virtual bool | map (physical_uintptr_t physAddress, void *virtualAddress, size_t flags) |
| bool | tryMapUserPage (physical_uintptr_t physical, void *address, size_t flags, size_t *committedTablePages=nullptr) override |
| bool | tryDetachUserPage (void *address, physical_uintptr_t expected) override |
| virtual bool | getMapping (void *virtualAddress, physical_uintptr_t &physAddress, size_t &flags) |
| virtual bool | handleCopyOnWriteFault (void *virtualAddress, bool userMode) |
| virtual bool | tryWriteUser32 (uintptr_t address, uint32_t value) |
| virtual bool | tryReadUser32 (uintptr_t address, uint32_t &value) |
| virtual bool | tryReadUserPointer (uintptr_t address, uintptr_t &value) |
| virtual bool | tryCompareExchangeUser32 (uintptr_t address, uint32_t &expected, uint32_t desired, bool &exchanged) |
| virtual void | setFlags (void *virtualAddress, size_t newFlags) |
| MUST_USE_RESULT bool | trySetFlags (void *virtualAddress, size_t newFlags) override |
| virtual void | unmap (void *virtualAddress) |
| virtual bool | detachMapping (void *virtualAddress, physical_uintptr_t &physical, size_t &flags, size_t requiredFlags=0) |
| virtual Stack * | allocateStack () |
| virtual Stack * | allocateStack (size_t stackSz) |
| virtual void | freeStack (Stack *pStack) |
| virtual bool | memIsInHeap (void *pMem) |
| virtual void * | getEndOfHeap () |
| virtual bool | memIsInKernelHeap (void *pMem) |
| virtual VirtualAddressSpace * | clone (bool copyOnWrite=true) |
| virtual void | revertToKernelAddressSpace () |
| virtual | ~HostedVirtualAddressSpace () |
| virtual uintptr_t | getKernelStart () const |
| virtual uintptr_t | getUserStart () const |
| virtual uintptr_t | getUserReservedStart () const |
| virtual uintptr_t | getDynamicLinkerAddress () const |
| virtual uintptr_t | getKernelHeapStart () const |
| virtual uintptr_t | getKernelHeapEnd () const |
| virtual uintptr_t | getDynamicStart () const |
| virtual uintptr_t | getDynamicEnd () const |
| virtual uintptr_t | getKernelCacheStart () const |
| virtual uintptr_t | getKernelCacheEnd () const |
| virtual uintptr_t | getKernelEventBlockStart () const |
| virtual uintptr_t | getKernelModulesStart () const |
| virtual uintptr_t | getKernelModulesEnd () const |
| virtual uintptr_t | getKernelVirtualPagestack () const |
Public Member Functions inherited from VirtualAddressSpace | |
| RawUserMemory & | rawUserMemory () |
| virtual size_t | runtimeMappingPages (uintptr_t, size_t) |
| MemoryLockAccount * | memoryLockAccount () const |
| void | setMemoryLockAccount (MemoryLockAccount *account) |
| UserMemoryPolicy * | userMemoryPolicy () const |
| void | setUserMemoryPolicy (UserMemoryPolicy *policy) |
| virtual void * | expandHeap (ssize_t incr, size_t flags) |
| virtual bool | mapHuge (physical_uintptr_t physAddress, void *virtualAddress, size_t count, size_t flags) |
| virtual ResidentCopyStatus | copyResidentUserPage (uintptr_t userAddress, void *kernelBuffer, size_t bytes, bool write) |
| virtual RemapStatus | prepareRemap (const PageRemapRequest &request, UniquePointer< PreparedPageRemap > &plan) |
| virtual void | setRemapPreparationFailureForTest (ssize_t allocations) |
| virtual | ~VirtualAddressSpace () |
| void | setHeap (void *heap, void *heapEnd) |
| virtual uintptr_t | getKernelVirtualPagestackAdd1 () const |
| virtual uintptr_t | getKernelVirtualPagestackAdd2 () const |
| virtual uintptr_t | getGlobalInfoBlock () const |
Private Member Functions | |
| bool | tryAccessUserWord (uintptr_t address, size_t width, uintptr_t &value, const uintptr_t *replacement) |
| HostedVirtualAddressSpace () | |
| HostedVirtualAddressSpace (void *Heap, void *VirtualStack) | |
| HostedVirtualAddressSpace (const HostedVirtualAddressSpace &) | |
| HostedVirtualAddressSpace & | operator= (const HostedVirtualAddressSpace &) |
| uint64_t | toFlags (size_t flags, bool bFinal=false) |
| size_t | fromFlags (uint64_t Flags, bool bFinal=false) |
| Stack * | doAllocateStack (size_t sSize) |
| mapping_t * | findMapping (void *address) |
Static Private Member Functions | |
| static void | switchAddressSpace (VirtualAddressSpace &oldSpace, VirtualAddressSpace &newSpace) |
Private Attributes | |
| void * | m_pStackTop |
| Vector< Stack * > | m_freeStacks |
| bool | m_bKernelSpace |
| Spinlock | m_Lock |
| Spinlock | m_StacksLock |
| mapping_t * | m_pKnownMaps |
| HostedMappingIndex | m_MappingIndex |
| size_t | m_KnownMapsSize |
| size_t | m_numKnownMaps |
| size_t | m_nLastUnmap |
Static Private Attributes | |
| static HostedVirtualAddressSpace | m_KernelSpace |
Friends | |
| class | HostedProcessor |
| class | ProcessorBase |
| class | Multiprocessor |
| VirtualAddressSpace & | VirtualAddressSpace::getKernelAddressSpace () |
| VirtualAddressSpace * | VirtualAddressSpace::create () |
Additional Inherited Members | |
Public Types inherited from VirtualAddressSpace | |
| enum class | ResidentCopyStatus { Success , Inaccessible , Unsupported } |
| enum class | RemapStatus { Success , InvalidRange , Unsupported , NoMemory , Retry } |
| using | RemapAdmission = bool(*)(void *context) |
Static Public Member Functions inherited from VirtualAddressSpace | |
| static EXPORTED_PUBLIC VirtualAddressSpace & | getKernelAddressSpace () |
| static VirtualAddressSpace * | create () |
Public Attributes inherited from VirtualAddressSpace | |
| void * | m_Heap |
| void * | m_HeapEnd |
Static Public Attributes inherited from VirtualAddressSpace | |
| static const size_t | KernelMode = 0x01 |
| static const size_t | Write = 0x02 |
| static const size_t | Execute = 0x04 |
| static const size_t | WriteThrough = 0x08 |
| static const size_t | CacheDisable = 0x10 |
| static const size_t | CopyOnWrite = 0x20 |
| static const size_t | Swapped = 0x40 |
| static const size_t | Shared = 0x200 |
| static const size_t | WriteCombine = 0x400 |
| static const size_t | Accessed = 0x800 |
| static const size_t | Dirty = 0x1000 |
| static const size_t | ClearDirty = 0x2000 |
| static const size_t | NoAccess = 0x4000 |
| static const size_t | WriteProtected = 0x8000 |
| static const size_t | Borrowed = 0x10000 |
| static const size_t | RuntimeMapping = 0x20000 |
| static constexpr size_t | MaximumRemapPages = 65536 |
| static physical_uintptr_t | m_ZeroPage = 0 |
Protected Member Functions inherited from VirtualAddressSpace | |
| bool | admitRawMemoryChange (const PreparedMemoryLock &plan, bool privileged, MemoryLockCharge &charge) const |
| void | commitRawMemoryChange (PreparedMemoryLock &plan, MemoryLockCharge charge) |
| bool | prepareZeroPage () |
| VirtualAddressSpace (void *Heap) | |
Protected Attributes inherited from VirtualAddressSpace | |
| uint64_t | m_HeapRegionId = 0 |
The HostedVirtualAddressSpace implements the VirtualAddressSpace class for the x64 processor architecture, that means it wraps around the processor's paging functionality.
Definition at line 70 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
virtual |
The destructor cleans up the address space
Definition at line 871 of file hosted/VirtualAddressSpace.cc.
References m_pKnownMaps.
|
private |
The default constructor
Definition at line 875 of file hosted/VirtualAddressSpace.cc.
|
private |
The constructor for already present paging structures
| [in] | Heap | virtual address of the beginning of the heap |
| [in] | PhysicalPageDirectory | physical address of the page directory |
| [in] | VirtualStack | virtual address of the top of the next kernel stack |
Definition at line 888 of file hosted/VirtualAddressSpace.cc.
|
private |
The copy-constructor
|
virtual |
Allocates a single stack for a thread. Will use the default kernel thread size.
Implements VirtualAddressSpace.
Definition at line 768 of file hosted/VirtualAddressSpace.cc.
References doAllocateStack(), and VirtualAddressSpace::getKernelAddressSpace.
Referenced by allocateStack().
Here is the caller graph for this function:
|
virtual |
Allocates a single stack of the given size for a thread.
Reimplemented from VirtualAddressSpace.
Definition at line 775 of file hosted/VirtualAddressSpace.cc.
References allocateStack(), and doAllocateStack().
|
virtual |
Clone this VirtualAddressSpace. That means that we copy-on-write-map the application * image. *
| [in] | copyOnWrite | whether the new address space copies pages on write, or shares them with the parent address space. |
Implements VirtualAddressSpace.
Definition at line 614 of file hosted/VirtualAddressSpace.cc.
References Vector< T >::begin(), VirtualAddressSpace::Borrowed, VirtualAddressSpace::CopyOnWrite, VirtualAddressSpace::create(), Dec, LockGuard< T >::disown(), Vector< T >::end(), PhysicalMemoryManager::getPageSize(), Hex, ProcessorBase::information(), PhysicalMemoryManager::instance(), VirtualAddressSpace::isMapped(), VirtualAddressSpace::KernelMode, m_freeStacks, VirtualAddressSpace::m_Heap, VirtualAddressSpace::m_HeapEnd, m_KnownMapsSize, m_Lock, m_nLastUnmap, m_numKnownMaps, m_pKnownMaps, m_pStackTop, m_StacksLock, PhysicalMemoryManager::pin(), Vector< T >::pushBack(), Spinlock::release(), VirtualAddressSpace::Shared, toFlags(), VirtualAddressSpace::getKernelAddressSpace, VirtualAddressSpace::Write, and VirtualAddressSpace::WriteProtected.
|
virtual |
Atomically snapshot and detach a resident mapping. A flags mismatch leaves the mapping intact, but still returns its physical address and flags.
Reimplemented from VirtualAddressSpace.
Definition at line 584 of file hosted/VirtualAddressSpace.cc.
References Dec, VirtualAddressSpace::detachMapping(), PhysicalMemoryManager::getPageSize(), ProcessorBase::information(), isMapped(), m_Lock, m_nLastUnmap, m_pKnownMaps, page_align(), and VirtualAddressSpace::getKernelAddressSpace.
|
private |
Allocates a stack with a given size.
Definition at line 781 of file hosted/VirtualAddressSpace.cc.
References Spinlock::acquire(), PhysicalMemoryManager::allocatePage(), VirtualAddressSpace::CopyOnWrite, Vector< T >::count(), PhysicalMemoryManager::getPageSize(), PhysicalMemoryManager::instance(), VirtualAddressSpace::KernelMode, m_freeStacks, m_Lock, m_pStackTop, m_StacksLock, map(), PhysicalMemoryManager::pin(), Vector< T >::popBack(), Spinlock::release(), and VirtualAddressSpace::Write.
Referenced by allocateStack(), and allocateStack().
Here is the caller graph for this function:
|
private |
Definition at line 118 of file hosted/VirtualAddressSpace.cc.
|
virtual |
Frees a stack allocated with allocateStack.
Implements VirtualAddressSpace.
Definition at line 845 of file hosted/VirtualAddressSpace.cc.
References Spinlock::acquire(), PhysicalMemoryManager::freePage(), getMapping(), PhysicalMemoryManager::getPageSize(), PhysicalMemoryManager::instance(), isMapped(), m_freeStacks, m_StacksLock, Vector< T >::pushBack(), Spinlock::release(), and unmap().
|
private |
Convert processor's representation of the flags to the processor independant representation
| [in] | Flags | the processor specific flag representation |
| [in] | bFinal | whether this is for the actual page or just an intermediate PTE/PDE |
Definition at line 917 of file hosted/VirtualAddressSpace.cc.
Referenced by getMapping().
Here is the caller graph for this function:
|
inlinevirtual |
Gets address of the end of dynamic memory mapping area.
Reimplemented from VirtualAddressSpace.
Definition at line 156 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
inlinevirtual |
Gets address of the dynamic linker in the address space.
Implements VirtualAddressSpace.
Definition at line 136 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
inlinevirtual |
Gets address of the start of dynamic memory mapping area.
Reimplemented from VirtualAddressSpace.
Definition at line 151 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
virtual |
Gets a pointer to the byte after the end of the heap.
Implements VirtualAddressSpace.
Definition at line 86 of file hosted/VirtualAddressSpace.cc.
Referenced by memIsInHeap().
Here is the caller graph for this function:
|
inlinevirtual |
Gets address of the end of the kernel's cache region.
Implements VirtualAddressSpace.
Definition at line 166 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
inlinevirtual |
Gets address of the start of the kernel's cache region.
Implements VirtualAddressSpace.
Definition at line 161 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
inlinevirtual |
Gets address of the start of the kernel's event handling block.
Implements VirtualAddressSpace.
Definition at line 171 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
inlinevirtual |
Gets address of the end of the kernel's heap region.
Implements VirtualAddressSpace.
Definition at line 146 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
inlinevirtual |
Gets address of the start of the kernel's heap region.
Implements VirtualAddressSpace.
Definition at line 141 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
inlinevirtual |
Gets address of the end of the kernel's module region.
Implements VirtualAddressSpace.
Definition at line 181 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
inlinevirtual |
Gets address of the start of the kernel's module region.
Implements VirtualAddressSpace.
Definition at line 176 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
inlinevirtual |
Gets start address of the kernel in the address space.
Implements VirtualAddressSpace.
Definition at line 121 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
Referenced by tryWriteUser32().
Here is the caller graph for this function:
|
inlinevirtual |
Gets address of the physical page stack, if one exists.
Reimplemented from VirtualAddressSpace.
Definition at line 186 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
virtual |
Query the physical address and flags of a mapped or swapped-out page. Returns false without modifying the outputs when no mapping exists. The result does not pin the page; callers must protect its lifetime while using the returned physical address.
Implements VirtualAddressSpace.
Definition at line 212 of file hosted/VirtualAddressSpace.cc.
References fromFlags(), getMapping(), PhysicalMemoryManager::getPageSize(), m_Lock, page_align(), and VirtualAddressSpace::getKernelAddressSpace.
Referenced by freeStack(), and getMapping().
Here is the caller graph for this function:
|
inlinevirtual |
Gets start address of reserved areas of the userpace address space.
Implements VirtualAddressSpace.
Definition at line 131 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
inlinevirtual |
Gets start address of the region usable and cloneable for userspace.
Implements VirtualAddressSpace.
Definition at line 126 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
Referenced by tryWriteUser32().
Here is the caller graph for this function:
|
virtual |
Resolve a write-protection fault on a copy-on-write mapping.
The replacement page is initialised before it becomes visible. Concurrent callers revalidate the mapping and treat an already-writable replacement as a successfully handled stale fault when the faulting privilege level may access it.
| [in] | userMode | true when the faulting access came from user mode. |
Implements VirtualAddressSpace.
Definition at line 238 of file hosted/VirtualAddressSpace.cc.
References PhysicalMemoryManager::allocatePage(), VirtualAddressSpace::Borrowed, VirtualAddressSpace::CopyOnWrite, Dec, PhysicalMemoryManager::freePage(), PhysicalMemoryManager::getPageSize(), VirtualAddressSpace::handleCopyOnWriteFault(), Hex, PhysicalMemoryManager::instance(), HostedPhysicalMemoryManager::instance(), isMapped(), VirtualAddressSpace::KernelMode, m_Lock, VirtualAddressSpace::NoAccess, page_align(), panic(), VirtualAddressSpace::Shared, VirtualAddressSpace::Swapped, toFlags(), VirtualAddressSpace::getKernelAddressSpace, VirtualAddressSpace::Write, and VirtualAddressSpace::WriteProtected.
|
virtual |
Is a particular virtual address valid?
| [in] | virtualAddress | the virtual address to check |
Implements VirtualAddressSpace.
Definition at line 90 of file hosted/VirtualAddressSpace.cc.
|
virtual |
Checks whether a mapping the the specific virtual address exists. Pages marked as swapped out are not considered mapped; retained NoAccess pages are.
| [in] | virtualAddress | the virtual address |
Implements VirtualAddressSpace.
Definition at line 97 of file hosted/VirtualAddressSpace.cc.
References PhysicalMemoryManager::getPageSize(), VirtualAddressSpace::isMapped(), m_Lock, page_align(), and VirtualAddressSpace::getKernelAddressSpace.
Referenced by detachMapping(), freeStack(), handleCopyOnWriteFault(), map(), revertToKernelAddressSpace(), setFlags(), switchAddressSpace(), trySetFlags(), and unmap().
Here is the caller graph for this function:
|
virtual |
Map a specific physical page (of size PhysicalMemoryManager::getPageSize()) at a specific location into the virtual address space.
| [in] | physicalAddress | the address of the physical page that should be mapped into the virtual address space. |
| [in] | virtualAddress | the virtual address at which the page apears within the virtual address space. |
| [in] | flags | flags that describe which accesses should be allowed on the page. |
Implements VirtualAddressSpace.
Definition at line 123 of file hosted/VirtualAddressSpace.cc.
References Dec, PhysicalMemoryManager::getPageSize(), Hex, HostedPhysicalMemoryManager::instance(), isMapped(), VirtualAddressSpace::KernelMode, m_KnownMapsSize, m_Lock, m_nLastUnmap, m_numKnownMaps, m_pKnownMaps, VirtualAddressSpace::map(), page_align(), panic(), toFlags(), UNLIKELY, and VirtualAddressSpace::getKernelAddressSpace.
Referenced by doAllocateStack().
Here is the caller graph for this function:
|
virtual |
Determines if a given point is within the virtual address space region dedicated to the kernel heap.
Implements VirtualAddressSpace.
Definition at line 68 of file hosted/VirtualAddressSpace.cc.
References getEndOfHeap(), and VirtualAddressSpace::m_Heap.
|
virtual |
Determines whether a given address is within the kernel's heap region.
Implements VirtualAddressSpace.
Definition at line 77 of file hosted/VirtualAddressSpace.cc.
|
private |
The copy-constructor
|
virtual |
Undo a clone() - this happens when an application is Exec()'d - we destroy all mappings not in the kernel address space so the space is 'clean'.
Implements VirtualAddressSpace.
Definition at line 740 of file hosted/VirtualAddressSpace.cc.
References VirtualAddressSpace::Borrowed, Dec, PhysicalMemoryManager::freePage(), PhysicalMemoryManager::getPageSize(), PhysicalMemoryManager::instance(), isMapped(), m_KnownMapsSize, m_Lock, m_nLastUnmap, m_pKnownMaps, VirtualAddressSpace::Shared, VirtualAddressSpace::Swapped, and VirtualAddressSpace::getKernelAddressSpace.
|
virtual |
Set the flags of the page at a specific virtual address.
| [in] | virtualAddress | the virtual address |
| [in] | newFlags | the flags |
Implements VirtualAddressSpace.
Definition at line 447 of file hosted/VirtualAddressSpace.cc.
References Dec, PhysicalMemoryManager::getPageSize(), isMapped(), VirtualAddressSpace::KernelMode, m_Lock, page_align(), VirtualAddressSpace::setFlags(), toFlags(), and VirtualAddressSpace::getKernelAddressSpace.
|
staticprivate |
Switch address spaces.
Definition at line 921 of file hosted/VirtualAddressSpace.cc.
References Dec, PhysicalMemoryManager::getPageSize(), HostedPhysicalMemoryManager::instance(), isMapped(), VirtualAddressSpace::isMapped(), VirtualAddressSpace::KernelMode, m_KnownMapsSize, m_pKnownMaps, toFlags(), and VirtualAddressSpace::getKernelAddressSpace.
|
private |
Convert the processor independant flags to the processor's representation of the flags
| [in] | flags | the processor independant flag representation |
| [in] | bFinal | whether this is for the actual page or just an intermediate PTE/PDE |
Definition at line 901 of file hosted/VirtualAddressSpace.cc.
References VirtualAddressSpace::Execute, VirtualAddressSpace::NoAccess, VirtualAddressSpace::Swapped, VirtualAddressSpace::Write, and VirtualAddressSpace::WriteProtected.
Referenced by clone(), handleCopyOnWriteFault(), map(), setFlags(), switchAddressSpace(), and trySetFlags().
Here is the caller graph for this function:
|
private |
Definition at line 366 of file hosted/VirtualAddressSpace.cc.
|
virtual |
A successful access may still report a failed comparison.
Reimplemented from VirtualAddressSpace.
Definition at line 352 of file hosted/VirtualAddressSpace.cc.
|
overridevirtual |
Reimplemented from VirtualAddressSpace.
Definition at line 518 of file hosted/VirtualAddressSpace.cc.
|
overridevirtual |
Reimplemented from VirtualAddressSpace.
Definition at line 473 of file hosted/VirtualAddressSpace.cc.
|
virtual |
Atomic, no-fault accesses through a resident userspace mapping.
Reimplemented from VirtualAddressSpace.
Definition at line 339 of file hosted/VirtualAddressSpace.cc.
|
virtual |
Reimplemented from VirtualAddressSpace.
Definition at line 348 of file hosted/VirtualAddressSpace.cc.
|
overridevirtual |
Changes an existing mapping, returning false without publishing failed protection.
Reimplemented from VirtualAddressSpace.
Definition at line 541 of file hosted/VirtualAddressSpace.cc.
References PhysicalMemoryManager::getPageSize(), isMapped(), m_Lock, page_align(), toFlags(), VirtualAddressSpace::trySetFlags(), and VirtualAddressSpace::getKernelAddressSpace.
|
virtual |
Stores one 32-bit value through a resident userspace mapping without switching into this address space. Implementations reject mappings that could fault or change backing storage while the write is in progress.
Reimplemented from VirtualAddressSpace.
Definition at line 411 of file hosted/VirtualAddressSpace.cc.
References VirtualAddressSpace::CopyOnWrite, getKernelStart(), PhysicalMemoryManager::getPageSize(), getUserStart(), HostedPhysicalMemoryManager::instance(), VirtualAddressSpace::KernelMode, m_Lock, VirtualAddressSpace::NoAccess, VirtualAddressSpace::Swapped, VirtualAddressSpace::Write, and VirtualAddressSpace::WriteProtected.
|
virtual |
Remove the page at the specific virtual address from the virtual address space.
| [in] | virtualAddress | the virtual address |
Implements VirtualAddressSpace.
Definition at line 559 of file hosted/VirtualAddressSpace.cc.
References Dec, PhysicalMemoryManager::getPageSize(), isMapped(), m_Lock, m_nLastUnmap, m_pKnownMaps, page_align(), VirtualAddressSpace::unmap(), and VirtualAddressSpace::getKernelAddressSpace.
Referenced by freeStack().
Here is the caller graph for this function:
|
friend |
Processor::switchAddressSpace() needs access to m_PhysicalPML4
Definition at line 72 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
friend |
Multiprocessor::initialise() needs access to m_PhysicalPML4
Definition at line 75 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
friend |
Definition at line 73 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
friend |
VirtualAddressSpace::create needs access to the constructor
VirtualAddressSpace::getKernelAddressSpace() needs access to m_KernelSpace
Referenced by allocateStack(), clone(), detachMapping(), getMapping(), handleCopyOnWriteFault(), isMapped(), map(), revertToKernelAddressSpace(), setFlags(), switchAddressSpace(), trySetFlags(), and unmap().
|
private |
Is this the kernel space?
Definition at line 244 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
List of free stacks
Definition at line 242 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
Referenced by clone(), doAllocateStack(), and freeStack().
|
staticprivate |
Definition at line 259 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
private |
Tracks the size of the known mappings list.
Definition at line 253 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
Referenced by clone(), map(), revertToKernelAddressSpace(), and switchAddressSpace().
|
private |
Lock to guard against multiprocessor reentrancy.
Definition at line 246 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
Referenced by clone(), detachMapping(), doAllocateStack(), getMapping(), handleCopyOnWriteFault(), isMapped(), map(), revertToKernelAddressSpace(), setFlags(), trySetFlags(), tryWriteUser32(), and unmap().
|
private |
Definition at line 251 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
private |
Last unmap for easier finding of places to fit entries.
Definition at line 257 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
Referenced by clone(), detachMapping(), map(), revertToKernelAddressSpace(), and unmap().
|
private |
Tracks the number of known mappings we have.
Definition at line 255 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
|
private |
Tracks the current mappings made in this address space.
Definition at line 250 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
Referenced by clone(), detachMapping(), map(), revertToKernelAddressSpace(), switchAddressSpace(), unmap(), and ~HostedVirtualAddressSpace().
|
private |
Current top of the stacks
Definition at line 240 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
Referenced by clone(), and doAllocateStack().
|
private |
Lock to guard against multiprocessor reentrancy for stack reuse.
Definition at line 248 of file kernel/core/processor/hosted/VirtualAddressSpace.h.
Referenced by clone(), doAllocateStack(), and freeStack().