From 6d0a0443fecef518e4a01af5d6dad5a098999560 Mon Sep 17 00:00:00 2001 From: dzwdz Date: Sun, 22 Aug 2021 16:08:17 +0200 Subject: virt_iter: count bytes that were already iterated over --- src/kernel/mem.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src/kernel/mem.c') diff --git a/src/kernel/mem.c b/src/kernel/mem.c index 7c1c640..aed2ff9 100644 --- a/src/kernel/mem.c +++ b/src/kernel/mem.c @@ -44,6 +44,8 @@ void virt_iter_new( struct pagedir *pages, bool user, bool writeable) { iter->frag = 0; + iter->frag_len = 0; + iter->prior = 0; iter->error = false; iter->_virt = virt; iter->_remaining = length; @@ -60,6 +62,7 @@ bool virt_iter_next(struct virt_iter *iter) { uintptr_t virt = (uintptr_t) iter->_virt; size_t partial = iter->_remaining; + iter->prior += iter->frag_len; if (partial <= 0) return false; // don't read past the page -- cgit v1.2.3