From 7237d673904d8568a2f9c290a0247c9d1a07c5d2 Mon Sep 17 00:00:00 2001 From: Kimplul Date: Mon, 11 Oct 2021 23:18:47 +0300 Subject: Start designing vmem framework --- include/apos/vmem.h | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 include/apos/vmem.h (limited to 'include/apos/vmem.h') diff --git a/include/apos/vmem.h b/include/apos/vmem.h new file mode 100644 index 0000000..589e814 --- /dev/null +++ b/include/apos/vmem.h @@ -0,0 +1,32 @@ +#ifndef APOS_VMEM_H +#define APOS_VMEM_H + +/* arch-specific data */ +#include + +/* general overview of the different functions: + * (un)map_vmem: map one known page of physical memory to one known page of + * virtual memory + * + * (un)map_vregion: map known physical region to unknown virtual region within + * start and end + * + * (un)map_vsize: map unknown physical region to unknown virtual region + */ + +void map_vmem(struct vm_branch_t *branch, + pm_t paddr, vm_t vaddr, + uint8_t flags, enum mm_order_t order); + +void unmap_vmem(struct vm_branch_t *branch, vm_t vaddr, enum mm_order_t order); + +#define map_kvregion(b, pb, pt) map_vregion(b, pb, pt, VMEM_BASE, VMEM_TOP); +#define map_uvregion(b, pb, pt) map_vregion(b, pb, pt, UMEM_BASE, UMEM_TOP); + +vm_t map_vregion(struct vm_branch_t *branch, pm_t base, pm_t top, vm_t start, vm_t end); +void unmap_vregion(struct vm_branch_t *branch, pm_t base, pm_t top); + +vm_t map_vsize(struct vm_branch_t *branch, size_t size); +void unmap_vsize(struct vm_branch_t *branch, size_t size); + +#endif /* APOS_VMEM_H */ -- cgit v1.3