wip on ipc send (copy last page)
This commit is contained in:
@@ -253,9 +253,10 @@ int receive(Vault& v, void* buffer, size_t size) {
|
|||||||
for(uint32_t i=0; i<num_pages; i++){
|
for(uint32_t i=0; i<num_pages; i++){
|
||||||
uintptr_t offset = i==0?Page::offset(ipc->ptr):0; //apply offset only on first page
|
uintptr_t offset = i==0?Page::offset(ipc->ptr):0; //apply offset only on first page
|
||||||
uintptr_t paddr = isMapped((ipc->ptr)+(i*4096), v.thread_list[ipc->pid]->paging_tree->l4);
|
uintptr_t paddr = isMapped((ipc->ptr)+(i*4096), v.thread_list[ipc->pid]->paging_tree->l4);
|
||||||
if (!copy_from_phys(v, paddr+offset, buffer, 4096-offset)) {
|
if(total_len - (i*4096) > 4096)
|
||||||
return -3;
|
copy_from_phys(v, paddr+offset, buffer, 4096-offset);
|
||||||
}
|
else
|
||||||
|
copy_from_phys(v, paddr, buffer, total_len - (i*4096));
|
||||||
}
|
}
|
||||||
|
|
||||||
return ipc->pid;
|
return ipc->pid;
|
||||||
|
|||||||
Reference in New Issue
Block a user