diff options
author | Ian Moffett <ian@osmora.org> | 2025-09-17 17:45:24 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-09-17 17:53:00 -0400 |
commit | bccb4fec8a3ad8a46e08124c9adf1aa54a87c9cb (patch) | |
tree | 10922baf0008dbab8f6954be0c87fb7b89d7b801 | |
parent | 11d266ffd822bfa55c1d272557662b0c18f03f0f (diff) |
kern/amd64: mmu: Add mmu_free_vas() to cleanup VAS
Introduce a new resource deallocation function that destroys a specified
virtual address space.
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r-- | src/sys/arch/amd64/cpu/mmu.c | 11 | ||||
-rw-r--r-- | src/sys/include/vm/mmu.h | 10 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/sys/arch/amd64/cpu/mmu.c b/src/sys/arch/amd64/cpu/mmu.c index face548..2b98d78 100644 --- a/src/sys/arch/amd64/cpu/mmu.c +++ b/src/sys/arch/amd64/cpu/mmu.c @@ -394,6 +394,17 @@ mmu_write_vas(struct vm_vas *vas) } /* + * Allocate the frame used for a VAS + */ +int +mmu_free_vas(struct vm_vas *vas) +{ + vm_free_frame(vas->cr3, 1); + vas->cr3 = 0; + return 0; +} + +/* * Verify that we are in a known state */ int diff --git a/src/sys/include/vm/mmu.h b/src/sys/include/vm/mmu.h index 820b24d..be0678e 100644 --- a/src/sys/include/vm/mmu.h +++ b/src/sys/include/vm/mmu.h @@ -117,4 +117,14 @@ int mmu_new_vas(struct vm_vas *res); */ int mmu_write_vas(struct vm_vas *vas); +/* + * Destroy a virtual address space + * + * @vas: VAS to destroy + * + * Returns zero on success, otherwise a less than + * zero value to indicate error. + */ +int mmu_free_vas(struct vm_vas *vas); + #endif /* !_MACHINE_MMU_H_ */ |