summaryrefslogtreecommitdiff
path: root/hurd/hurdselect.c
diff options
context:
space:
mode:
authorSamuel Thibault <samuel.thibault@ens-lyon.org>2013-02-11 00:05:11 +0100
committerSamuel Thibault <samuel.thibault@ens-lyon.org>2013-02-11 00:05:11 +0100
commitc7d393224edd7c9b87fbececed363ab473d27786 (patch)
tree93eabae167b36dac9692cba2271d55fb29f76840 /hurd/hurdselect.c
parent4a7fa7e43dfa3910664c02af588955137524c6ea (diff)
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.
Diffstat (limited to 'hurd/hurdselect.c')
-rw-r--r--hurd/hurdselect.c5
1 files changed, 1 insertions, 4 deletions
diff --git a/hurd/hurdselect.c b/hurd/hurdselect.c
index 21ba5f42a4..a02c7bed97 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: