|
PatchworkOS
da8a090
A non-POSIX operating system.
|
Virtual address space structure. More...
#include <space.h>
Data Fields | |
| page_table_t | pageTable |
| The page table associated with the address space. | |
| map_t | pinnedPages |
| Map of pages with a pin depth greater than 1. | |
| uintptr_t | startAddress |
| The start address for allocations in this address space. | |
| uintptr_t | endAddress |
| The end address for allocations in this address space. | |
| uintptr_t | freeAddress |
| The next available free virtual address in this address space. | |
| space_flags_t | flags |
| space_callback_t * | callbacks |
| uint64_t | callbacksLength |
Length of the callbacks array. | |
| bitmap_t | callbackBitmap |
| Bitmap to track available callback IDs. | |
| uint64_t | bitmapBuffer [BITMAP_BITS_TO_QWORDS(PML_MAX_CALLBACK)] |
| list_t | cpus |
| List of CPUs using this address space. | |
| atomic_uint16_t | shootdownAcks |
| lock_t | lock |
Virtual address space structure.
The space_t structure represents a virtual address space.
Note that the actual pin depth, if its is greater than 1, is tracked in the pinnedPages map, the page table only tracks if a page is pinned or not for faster access and to avoid having to access the map even when just pinning a page once.
| page_table_t space_t::pageTable |
| map_t space_t::pinnedPages |
| uintptr_t space_t::startAddress |
| uintptr_t space_t::endAddress |
| uintptr_t space_t::freeAddress |
| space_flags_t space_t::flags |
| space_callback_t* space_t::callbacks |
| uint64_t space_t::callbacksLength |
| bitmap_t space_t::callbackBitmap |
| uint64_t space_t::bitmapBuffer[BITMAP_BITS_TO_QWORDS(PML_MAX_CALLBACK)] |