From a0a4acb002f051d8a964659cb7aa9cd51740266a Mon Sep 17 00:00:00 2001 From: dzwdz Date: Wed, 11 Aug 2021 17:50:57 +0000 Subject: abstract out iterating over virtual memory most syscalls will have to do this to copy memory around or whatever. it's pretty ugly too, but i can't come up with a better abstraction... --- src/kernel/mem.h | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'src/kernel/mem.h') diff --git a/src/kernel/mem.h b/src/kernel/mem.h index b17ba30..78de8db 100644 --- a/src/kernel/mem.h +++ b/src/kernel/mem.h @@ -1,4 +1,5 @@ #pragma once +#include #include #include @@ -12,3 +13,23 @@ void page_free(void *first, size_t pages); void *kmalloc(size_t len); void kfree(void *ptr); + + +// used for iterating through some part of a process' memory +struct virt_iter { + void *frag; + size_t frag_len; + bool error; + + void *_virt; + size_t _remaining; + struct pagedir *_pages; + bool _user; + bool _writeable; +}; + +void virt_iter_new( + struct virt_iter *iter, void *virt, size_t length, + struct pagedir *pages, bool user, bool writeable); + +bool virt_iter_next(struct virt_iter *); -- cgit v1.2.3