diff mbox series

[hurd,commited] hurd: Fix _hurd_select for single fd sets

Message ID 20190829230146.11323-1-samuel.thibault@ens-lyon.org
State New
Headers show
Series [hurd,commited] hurd: Fix _hurd_select for single fd sets | expand

Commit Message

Samuel Thibault Aug. 29, 2019, 11:01 p.m. UTC
From: Richard Braun <rbraun@sceen.net>

The function attempts to optimize this case by performing one IPC system
call with the timeout included among the parameters, but in the absence
of a reply, it will call mach_msg again with the same timeout later,
effectively doubling the total timeout of the select/poll call.

Remove this optimization for the time being.

	* hurd/hurdselect.c (_hurd_select): Always call __io_select with no
	timeout.
---
 ChangeLog         | 5 +++++
 hurd/hurdselect.c | 5 +----
 2 files changed, 6 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/ChangeLog b/ChangeLog
index 87d43d425e..06c8852c95 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@ 
+2019-08-30  Richard Braun <rbraun@sceen.net>
+
+	* hurd/hurdselect.c (_hurd_select): Always call __io_select with no
+	timeout.
+
 2019-08-29  Mihailo Stojanovic  <mihailo.stojanovic@rt-rk.com>
 
 	* elf/dl-addr.c (determine_info): Calculate the symbol index
diff --git a/hurd/hurdselect.c b/hurd/hurdselect.c
index 6997b2b73b..a5e6e26b9a 100644
--- a/hurd/hurdselect.c
+++ b/hurd/hurdselect.c
@@ -236,10 +236,7 @@  _hurd_select (int nfds,
 	  {
 	    int type = d[i].type;
 	    d[i].reply_port = __mach_reply_port ();
-	    err = __io_select (d[i].io_port, d[i].reply_port,
-			       /* Poll only if there's a single descriptor.  */
-			       (firstfd == lastfd) ? to : 0,
-			       &type);
+	    err = __io_select (d[i].io_port, d[i].reply_port, 0, &type);
 	    switch (err)
 	      {
 	      case MACH_RCV_TIMED_OUT: