aboutsummaryrefslogtreecommitdiff
path: root/src/vmem.c
diff options
context:
space:
mode:
authorKimplul <kimi.h.kuparinen@gmail.com>2026-01-25 17:14:53 +0200
committerKimplul <kimi.h.kuparinen@gmail.com>2026-01-25 17:14:53 +0200
commitcd41ed1758f4842d7b78870385e16b579cc89c38 (patch)
tree271e1b437ec5a1511f4ffa400da447122576b94b /src/vmem.c
parente8a7fe3bd5c40168d531a6a4f00a7417a278d58c (diff)
downloadkmi-master.tar.gz
kmi-master.zip
implement dmem semi-properlyHEADmaster
+ Add tests and fix virtual mapping, this is enough to start writing proper userspace drivers
Diffstat (limited to 'src/vmem.c')
-rw-r--r--src/vmem.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/vmem.c b/src/vmem.c
index 76e0ece..afdac95 100644
--- a/src/vmem.c
+++ b/src/vmem.c
@@ -12,6 +12,7 @@
#include <kmi/panic.h>
#include <kmi/debug.h>
#include <kmi/bits.h>
+#include <kmi/dmem.h>
#include <kmi/vmem.h>
#include <arch/vmem.h>
@@ -197,6 +198,14 @@ static void __free_mapping(struct tcb *t, struct mem_region *m)
if (is_set(m->flags, MR_NONBACKED))
return;
+ if (is_set(m->flags, MR_DEV)) {
+ stat_t ret = free_known_devmem(t, m);
+ MAYBE_UNUSED(ret);
+
+ assert(ret == OK);
+ return;
+ }
+
pm_t start = __addr(m->start);
pm_t end = __addr(m->end);
size_t size = end - start;