Fix timeout handling in _hurd_select
authorRichard Braun <rbraun@sceen.net>
Thu, 12 Mar 2020 22:47:03 +0000 (22:47 +0000)
committerAurelien Jarno <aurel32@debian.org>
Thu, 12 Mar 2020 22:47:03 +0000 (22:47 +0000)
commitb167309e5bd2c16f967c653de8c743e0e76e61ef
tree93cfbc48f214e250cb9e5165efe5e73f6cfd1369
parent217258f33a1eec9503c50f7f574372fcce1208a6
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.

TODO: see XXX

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