|
| static void | vmm_cpu_init (vmm_cpu_t *ctx) |
| |
| | PERCPU_DEFINE_CTOR (static vmm_cpu_t, pcpu_vmm) |
| |
| void | vmm_init (void) |
| | Initializes the Virtual Memory Manager.
|
| |
| void | vmm_kernel_space_load (void) |
| | Loads the kernel's address space into the current CPU.
|
| |
| space_t * | vmm_kernel_space_get (void) |
| | Retrieves the kernel's address space.
|
| |
| pml_flags_t | vmm_prot_to_flags (prot_t prot) |
| | Converts the user space memory protection flags to page table entry flags.
|
| |
| static void | vmm_page_table_unmap_with_shootdown (space_t *space, void *virtAddr, uint64_t pageAmount) |
| |
| void * | vmm_alloc (space_t *space, void *virtAddr, size_t length, size_t alignment, pml_flags_t pmlFlags, vmm_alloc_flags_t allocFlags) |
| | Allocates and maps virtual memory in a given address space.
|
| |
| void * | vmm_map (space_t *space, void *virtAddr, phys_addr_t physAddr, size_t length, pml_flags_t flags, space_callback_func_t func, void *data) |
| | Maps physical memory to virtual memory in a given address space.
|
| |
| void * | vmm_map_pages (space_t *space, void *virtAddr, pfn_t *pfns, size_t amount, pml_flags_t flags, space_callback_func_t func, void *data) |
| | Maps an array of physical pages to virtual memory in a given address space.
|
| |
| void * | vmm_unmap (space_t *space, void *virtAddr, size_t length) |
| | Unmaps virtual memory from a given address space.
|
| |
| | SYSCALL_DEFINE (SYS_MUNMAP, void *, void *address, size_t length) |
| |
| void * | vmm_protect (space_t *space, void *virtAddr, size_t length, pml_flags_t flags) |
| | Changes memory protection flags for a virtual memory region in a given address space.
|
| |
| void | vmm_load (space_t *space) |
| | Loads a virtual address space.
|
| |
| static void | vmm_tlb_shootdown_ipi (ipi_func_data_t *data) |
| |
| void | vmm_tlb_shootdown (space_t *space, void *virtAddr, size_t pageAmount) |
| | Performs a TLB shootdown for a region of the address space, and wait for acknowledgements.
|
| |
| | SYSCALL_DEFINE (SYS_MPROTECT, void *, void *address, size_t length, prot_t prot) |
| |