diff options
author | dzwdz | 2021-08-22 16:08:17 +0200 |
---|---|---|
committer | dzwdz | 2021-08-22 16:08:17 +0200 |
commit | 6d0a0443fecef518e4a01af5d6dad5a098999560 (patch) | |
tree | 1541d8fd7020804551345cec85f5164e3bb16efd /src/kernel/mem.c | |
parent | e2075e56f875e077cd5c3d6e3c85368c1087654f (diff) |
virt_iter: count bytes that were already iterated over
Diffstat (limited to 'src/kernel/mem.c')
-rw-r--r-- | src/kernel/mem.c | 3 |
1 files changed, 3 insertions, 0 deletions
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 |