Fix timeout handling in _hurd_select
authorRichard Braun <rbraun@sceen.net>
Fri, 5 Jan 2018 18:09:39 +0000 (18:09 +0000)
committerAurelien Jarno <aurel32@debian.org>
Fri, 5 Jan 2018 18:09:39 +0000 (18:09 +0000)
commit4c5837ff1d74e3b0152a69b95e9b663959f94501
tree28a1542f7bf1be644a0f6f04c2a8d2dc24e63e97
parent5e4c473fdbf5cf1f46ec84301fbe676332ed9f15
Fix timeout handling in _hurd_select

Rely on servers to implement timeouts, so that very short values (including
0) don't make mach_msg return before valid replies can be received. The
purpose of this scheme is to guarantee a full client-server round-trip,
whatever the timeout value.

This change depends on the new io_select_timeout RPC being implemented by
servers.

* hurd/Makefile (user-interfaces): Add io_reply and io_request.
* hurd/hurdselect.c: Include <sys/time.h>, <hurd/io_request.h> and <limits.h>.
(_hurd_select): Replace the call to __io_select with either __io_select_request
or __io_select_timeout_request, depending on the timeout. Count the number of
ready descriptors (replies for which at least one type bit is set). Implement
the timeout locally when there is no file descriptor.

Gbp-Pq: Topic hurd-i386
Gbp-Pq: Name tg-io_select_timeout.diff
hurd/Makefile
hurd/hurdselect.c