From 6668e412cc683d692f5a3b4667b94e87ec357517 Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Sat, 28 Feb 2026 23:44:10 +0100 Subject: [PATCH] wip multipage ipc send/recv --- kernel/syscall/skeleton.cc | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/kernel/syscall/skeleton.cc b/kernel/syscall/skeleton.cc index d8708ac..7cd8b02 100644 --- a/kernel/syscall/skeleton.cc +++ b/kernel/syscall/skeleton.cc @@ -247,11 +247,13 @@ int receive(Vault& v, void* buffer, size_t size) { if (ipc == nullptr) return -1; size_t copy_len = (size < ipc->size) ? size:ipc->size; - // Buffer holen + size_t total_len = (Page::offset(ipc->ptr)+copy_len); + uint8_t num_pages = (total_len/4096)+1; - for(uint32_t i=0; i<(copy_len/4096)+1; i++){ + for(uint32_t i=0; iptr):0; //apply offset only on first page uintptr_t paddr = isMapped((ipc->ptr)+(i*4096), v.thread_list[ipc->pid]->paging_tree->l4); - if (!copy_from_phys(v, paddr, buffer, copy_len)) { + if (!copy_from_phys(v, paddr+offset, buffer, 4096-offset)) { return -3; } }