Enable syscall restart

This commit is contained in:
Zejun Zhao
2024-12-16 11:32:37 +08:00
committed by Tate, Hongliang Tian
parent ced0023d6b
commit 1b56a8b600
15 changed files with 103 additions and 38 deletions

View File

@ -34,7 +34,13 @@ pub fn sys_sendto(
let vm_space = ctx.process.root_vmar().vm_space();
vm_space.reader(buf, len)?
};
let send_size = socket.sendmsg(&mut reader, message_header, flags)?;
let send_size = socket
.sendmsg(&mut reader, message_header, flags)
.map_err(|err| match err.error() {
// FIXME: `sendto` should not be restarted if a timeout has been set on the socket using `setsockopt`.
Errno::EINTR => Error::new(Errno::ERESTARTSYS),
_ => err,
})?;
Ok(SyscallReturn::Return(send_size as _))
}