summaryrefslogtreecommitdiff
path: root/mem/vmap.c
diff options
context:
space:
mode:
authorAlejandro Sior <aho@sior.be>2022-07-26 14:06:40 +0200
committerAlejandro Sior <aho@sior.be>2022-07-26 14:06:40 +0200
commite0fbf5ca9599cb7599731fe48573e97d05fa38da (patch)
tree2c3b3925c49fd2da68086c6cb4b06a891e823bd5 /mem/vmap.c
parentc4e9a8ba15391ae5f1c820744ff1b03544d63467 (diff)
mem/vmap: add basic virtual memory management abstraction
Diffstat (limited to 'mem/vmap.c')
-rw-r--r--mem/vmap.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/mem/vmap.c b/mem/vmap.c
new file mode 100644
index 0000000..618b19e
--- /dev/null
+++ b/mem/vmap.c
@@ -0,0 +1,26 @@
+#include "vmap.h"
+#include "errors.h"
+
+usize mem_vmap_translate(MemVmap *inner, usize virt) {
+ if (inner->translate)
+ return inner->translate(inner, virt);
+
+ return 0;
+}
+
+int mem_vmap_map(MemVmap *inner, usize phys, usize virt, usize len, int flags) {
+ if (inner->map)
+ return inner->map(inner, phys, virt, len, flags);
+
+ return MEM_VMAP_UNSUPPORTED;
+}
+
+void mem_vmap_unmap(MemVmap *inner, usize virt, usize len) {
+ if (inner->unmap)
+ inner->unmap(inner, virt, len);
+}
+
+void mem_vmap_switch_to(MemVmap *inner) {
+ if (inner->switch_to)
+ inner->switch_to(inner);
+} \ No newline at end of file