#include <VirtualAddressSpace.h>
|
virtual bool | isAddressValid (void *virtualAddress) |
|
virtual bool | isMapped (void *virtualAddress) |
|
virtual bool | map (physical_uintptr_t physicalAddress, void *virtualAddress, size_t flags) |
|
virtual void | getMapping (void *virtualAddress, physical_uintptr_t &physicalAddress, size_t &flags) |
|
virtual void | setFlags (void *virtualAddress, size_t newFlags) |
|
virtual void | unmap (void *virtualAddress) |
|
virtual void * | allocateStack () |
|
virtual void | freeStack (void *pStack) |
|
bool | mapPageStructures (physical_uintptr_t physicalAddress, void *virtualAddress, size_t flags) |
|
virtual VirtualAddressSpace * | clone () |
|
virtual void | revertToKernelAddressSpace () |
|
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 Stack * | allocateStack (size_t stackSz) |
|
virtual void | freeStack (Stack *pStack)=0 |
|
virtual VirtualAddressSpace * | clone (bool copyOnWrite=true)=0 |
|
virtual | ~VirtualAddressSpace () |
|
void | setHeap (void *heap, void *heapEnd) |
|
virtual bool | memIsInKernelHeap (void *pMem)=0 |
|
virtual bool | memIsInHeap (void *pMem)=0 |
|
virtual void * | getEndOfHeap ()=0 |
|
virtual uintptr_t | getKernelStart () const =0 |
|
virtual uintptr_t | getUserStart () const =0 |
|
virtual uintptr_t | getUserReservedStart () const =0 |
|
virtual uintptr_t | getDynamicLinkerAddress () const =0 |
|
virtual uintptr_t | getKernelHeapStart () const =0 |
|
virtual uintptr_t | getKernelHeapEnd () const =0 |
|
virtual uintptr_t | getKernelCacheStart () const =0 |
|
virtual uintptr_t | getKernelCacheEnd () const =0 |
|
virtual uintptr_t | getKernelEventBlockStart () const =0 |
|
virtual uintptr_t | getKernelModulesStart () const =0 |
|
virtual uintptr_t | getKernelModulesEnd () const =0 |
|
virtual uintptr_t | getDynamicStart () const |
|
virtual uintptr_t | getDynamicEnd () const |
|
virtual uintptr_t | getGlobalInfoBlock () const |
|
The Arm926EVirtualAddressSpace implements the VirtualAddressSpace class for the mip32 processor, which means it encompasses paging (KUSEG) and KSEG0, KSEG1, KSEG2.
Definition at line 32 of file kernel/core/processor/arm_926e/VirtualAddressSpace.h.
Arm926EVirtualAddressSpace::~Arm926EVirtualAddressSpace |
( |
| ) |
|
|
protectedvirtual |
Arm926EVirtualAddressSpace::Arm926EVirtualAddressSpace |
( |
void * |
Heap, |
|
|
physical_uintptr_t |
PhysicalPageDirectory, |
|
|
void * |
VirtualPageDirectory, |
|
|
void * |
VirtualPageTables |
|
) |
| |
|
private |
The constructor for already present paging structures
- Parameters
-
[in] | Heap | virtual address of the beginning of the heap |
[in] | PhysicalPageDirectory | physical address of the page directory |
[in] | VirtualPageDirectory | virtual address of the page directory |
[in] | VirtualPageTables | virtual address of the page tables |
Arm926EVirtualAddressSpace::Arm926EVirtualAddressSpace |
( |
| ) |
|
|
private |
The copy-constructor
- Note
- NOT implemented
void * Arm926EVirtualAddressSpace::allocateStack |
( |
| ) |
|
|
virtual |
size_t Arm926EVirtualAddressSpace::fromFlags |
( |
uint32_t |
Flags | ) |
|
|
private |
Convert processor's representation of the flags to the processor independant representation
- Parameters
-
[in] | Flags | the processor specific flag representation |
- Returns
- the proessor independant flag representation
void Arm926EVirtualAddressSpace::getMapping |
( |
void * |
virtualAddress, |
|
|
physical_uintptr_t & |
physicalAddress, |
|
|
size_t & |
flags |
|
) |
| |
|
virtual |
Get the physical address and the flags associated with the specific virtual address.
- Note
- This function is only valid on memory that was mapped with VirtualAddressSpace::map() and that is still mapped or marked as swapped out.
- Parameters
-
[in] | virtualAddress | the address in the virtual address space |
[out] | flags | the flags |
[out] | physicalAddress | the physical address |
Implements VirtualAddressSpace.
Definition at line 72 of file arm_926e/VirtualAddressSpace.cc.
bool Arm926EVirtualAddressSpace::getPageTableEntry |
( |
void * |
virtualAddress, |
|
|
uint32_t *& |
pageTableEntry |
|
) |
| |
|
private |
Get the page table entry, if it exists and check whether a page is mapped or marked as swapped out.
- Parameters
-
[in] | virtualAddress | the virtual address |
[out] | pageTableEntry | pointer to the page table entry |
- Returns
- true, if the page table is present and the page mapped or marked swapped out, false otherwise
bool Arm926EVirtualAddressSpace::initialise |
( |
| ) |
|
|
private |
bool Arm926EVirtualAddressSpace::isAddressValid |
( |
void * |
virtualAddress | ) |
|
|
virtual |
bool Arm926EVirtualAddressSpace::isMapped |
( |
void * |
virtualAddress | ) |
|
|
virtual |
Checks whether a mapping the the specific virtual address exists. Pages marked as swapped out are not considered mapped.
- Note
- This function must be valid on all the valid addresses within the virtual address space.
- Parameters
-
[in] | virtualAddress | the virtual address |
- Returns
- true, if a mapping exists, false otherwise
Implements VirtualAddressSpace.
Definition at line 61 of file arm_926e/VirtualAddressSpace.cc.
bool Arm926EVirtualAddressSpace::map |
( |
physical_uintptr_t |
physicalAddress, |
|
|
void * |
virtualAddress, |
|
|
size_t |
flags |
|
) |
| |
|
virtual |
Map a specific physical page (of size PhysicalMemoryManager::getPageSize()) at a specific location into the virtual address space.
- Note
- This function must also work on pages marked as swapped out.
- Parameters
-
[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. |
- Returns
- true, if successfull, false otherwise
Implements VirtualAddressSpace.
Definition at line 66 of file arm_926e/VirtualAddressSpace.cc.
bool Arm926EVirtualAddressSpace::mapPageStructures |
( |
physical_uintptr_t |
physicalAddress, |
|
|
void * |
virtualAddress, |
|
|
size_t |
flags |
|
) |
| |
Map the page table or the page frame if none is currently present
- Note
- This should only be used from the PhysicalMemoryManager
- Parameters
-
[in] | physicalAddress | the physical page that should be used as page table or page frame |
[in] | virtualAddress | the virtual address that should be checked for the existance of a page table and page frame |
[in] | flags | the flags used for the mapping |
- Returns
- true, if a page table/frame is already mapped for that address, false if the physicalAddress has been used as a page table or as a page frame.
The copy-constructor
- Note
- Not implemented
virtual void Arm926EVirtualAddressSpace::revertToKernelAddressSpace |
( |
| ) |
|
|
inlinevirtual |
void Arm926EVirtualAddressSpace::setFlags |
( |
void * |
virtualAddress, |
|
|
size_t |
newFlags |
|
) |
| |
|
virtual |
uint32_t Arm926EVirtualAddressSpace::toFlags |
( |
size_t |
flags | ) |
|
|
private |
Convert the processor independant flags to the processor's representation of the flags
- Parameters
-
[in] | flags | the processor independant flag representation |
- Returns
- the proessor specific flag representation
void Arm926EVirtualAddressSpace::unmap |
( |
void * |
virtualAddress | ) |
|
|
virtual |
physical_uintptr_t Arm926EVirtualAddressSpace::m_PhysicalPageDirectory |
|
private |
void* Arm926EVirtualAddressSpace::m_VirtualPageDirectory |
|
private |
void* Arm926EVirtualAddressSpace::m_VirtualPageTables |
|
private |
The documentation for this class was generated from the following files: