diff mbox series

[for-3.2,12/41] slirp: remove the disabled readv()/writev() code path

Message ID 20181114123643.24091-13-marcandre.lureau@redhat.com
State New
Headers show
Series RFC: slirp: make it again a standalone project | expand

Commit Message

Marc-André Lureau Nov. 14, 2018, 12:36 p.m. UTC
The soread() function may be used on datagram sockets, and would
provide different behaviour if HAVE_READV was set, on empty datagrams.
This looks like a minor optimization, that never has been a strong
goal for slirp.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 slirp/slirp_config.h |  3 ---
 slirp/socket.c       | 15 ---------------
 2 files changed, 18 deletions(-)

Comments

Daniel P. Berrangé Nov. 14, 2018, 1:46 p.m. UTC | #1
On Wed, Nov 14, 2018 at 04:36:14PM +0400, Marc-André Lureau wrote:
> The soread() function may be used on datagram sockets, and would
> provide different behaviour if HAVE_READV was set, on empty datagrams.
> This looks like a minor optimization, that never has been a strong
> goal for slirp.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  slirp/slirp_config.h |  3 ---
>  slirp/socket.c       | 15 ---------------
>  2 files changed, 18 deletions(-)

Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

Regards,
Daniel
Samuel Thibault Nov. 19, 2018, 11:19 p.m. UTC | #2
Daniel P. Berrangé, le mer. 14 nov. 2018 13:46:46 +0000, a ecrit:
> On Wed, Nov 14, 2018 at 04:36:14PM +0400, Marc-André Lureau wrote:
> > The soread() function may be used on datagram sockets, and would
> > provide different behaviour if HAVE_READV was set, on empty datagrams.
> > This looks like a minor optimization, that never has been a strong
> > goal for slirp.
> > 
> > Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> > ---
> >  slirp/slirp_config.h |  3 ---
> >  slirp/socket.c       | 15 ---------------
> >  2 files changed, 18 deletions(-)
> 
> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>

Applied to my tree, thanks!
diff mbox series

Patch

diff --git a/slirp/slirp_config.h b/slirp/slirp_config.h
index f0cc1c781b..3ce64e088e 100644
--- a/slirp/slirp_config.h
+++ b/slirp/slirp_config.h
@@ -29,9 +29,6 @@ 
 /* Define if the machine is big endian */
 //#undef HOST_WORDS_BIGENDIAN
 
-/* Define if you have readv */
-#undef HAVE_READV
-
 /* Define if iovec needs to be declared */
 #undef DECLARE_IOVEC
 #ifdef _WIN32
diff --git a/slirp/socket.c b/slirp/socket.c
index 041ec5061a..7012c7c07d 100644
--- a/slirp/socket.c
+++ b/slirp/socket.c
@@ -187,12 +187,7 @@  soread(struct socket *so)
 	 */
 	sopreprbuf(so, iov, &n);
 
-#ifdef HAVE_READV
-	nn = readv(so->s, (struct iovec *)iov, n);
-	DEBUG_MISC((dfd, " ... read nn = %d bytes\n", nn));
-#else
 	nn = qemu_recv(so->s, iov[0].iov_base, iov[0].iov_len,0);
-#endif
 	if (nn <= 0) {
 		if (nn < 0 && (errno == EINTR || errno == EAGAIN))
 			return 0;
@@ -226,7 +221,6 @@  soread(struct socket *so)
 		}
 	}
 
-#ifndef HAVE_READV
 	/*
 	 * If there was no error, try and read the second time round
 	 * We read again if n = 2 (ie, there's another part of the buffer)
@@ -244,7 +238,6 @@  soread(struct socket *so)
         }
 
 	DEBUG_MISC((dfd, " ... read nn = %d bytes\n", nn));
-#endif
 
 	/* Update fields */
 	sb->sb_cc += nn;
@@ -452,13 +445,7 @@  sowrite(struct socket *so)
 	}
 	/* Check if there's urgent data to send, and if so, send it */
 
-#ifdef HAVE_READV
-	nn = writev(so->s, (const struct iovec *)iov, n);
-
-	DEBUG_MISC((dfd, "  ... wrote nn = %d bytes\n", nn));
-#else
 	nn = slirp_send(so, iov[0].iov_base, iov[0].iov_len,0);
-#endif
 	/* This should never happen, but people tell me it does *shrug* */
 	if (nn < 0 && (errno == EAGAIN || errno == EINTR))
 		return 0;
@@ -467,7 +454,6 @@  sowrite(struct socket *so)
 		goto err_disconnected;
 	}
 
-#ifndef HAVE_READV
 	if (n == 2 && nn == iov[0].iov_len) {
             int ret;
             ret = slirp_send(so, iov[1].iov_base, iov[1].iov_len,0);
@@ -475,7 +461,6 @@  sowrite(struct socket *so)
                 nn += ret;
         }
         DEBUG_MISC((dfd, "  ... wrote nn = %d bytes\n", nn));
-#endif
 
 	/* Update sbuf */
 	sb->sb_cc -= nn;