vfs: use iovec_iterator for all file read and write, add vfs_read_iovec and vfs_write_iovec

This commit is contained in:
Matheus
2024-09-21 16:56:43 -03:00
parent e8c2f1fbf3
commit f1ee575ed1
13 changed files with 167 additions and 85 deletions
+2 -2
View File
@@ -203,7 +203,7 @@ static int udp_send(socket_t *socket, sockdesc_t *sockdesc) {
socket->state = SOCKET_STATE_BOUND;
}
e = udp_sendpacket(&sockdesc->iovec_iterator, sockdesc->count, sockdesc->addr ? sockdesc->addr->ipv4addr.addr : udpsocket->peeraddress,
e = udp_sendpacket(sockdesc->iovec_iterator, sockdesc->count, sockdesc->addr ? sockdesc->addr->ipv4addr.addr : udpsocket->peeraddress,
udpsocket->port, sockdesc->addr ? sockdesc->addr->ipv4addr.port : udpsocket->peerport, udpsocket->socket.netdev);
sockdesc->donecount = sockdesc->count;
@@ -274,7 +274,7 @@ static int udp_recv(socket_t *socket, sockdesc_t *sockdesc) {
copycount = min(header.length, sockdesc->count);
sockdesc->donecount = iovec_iterator_peek_from_ringbuffer(&sockdesc->iovec_iterator, &udpsocket->ringbuffer, sizeof(header), copycount);
sockdesc->donecount = iovec_iterator_peek_from_ringbuffer(sockdesc->iovec_iterator, &udpsocket->ringbuffer, sizeof(header), copycount);
if (sockdesc->donecount == RINGBUFFER_USER_COPY_FAILED) {
e = EFAULT;
goto cleanup;