hurd: Fix _hurd_select for single fd sets

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.
This commit is contained in:
Richard Braun 2019-08-30 00:58:14 +02:00 committed by Samuel Thibault
parent 23c1c256ae
commit 4b068090a0
2 changed files with 6 additions and 4 deletions

View File

@ -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

View File

@ -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: