* \param n The highest-numbered descriptor in any of the two sets, plus 1.
* \param readfds fds that should be checked for readability.
* \param writefds fds that should be checked for writablility.
- * \param timeout_tv upper bound on the amount of time elapsed before select()
- * returns.
+ * \param timeout Upper bound in milliseconds.
*
* \return The return value of the underlying select() call on success, the
* negative system error code on errors.
* All arguments are passed verbatim to select(2).
* \sa select(2) select_tut(2).
*/
-int para_select(int n, fd_set *readfds, fd_set *writefds,
- struct timeval *timeout_tv)
+int para_select(int n, fd_set *readfds, fd_set *writefds, int timeout)
{
int ret;
+ struct timeval tv;
+
+ ms2tv(timeout, &tv);
do
- ret = select(n, readfds, writefds, NULL, timeout_tv);
+ ret = select(n, readfds, writefds, NULL, &tv);
while (ret < 0 && errno == EINTR);
if (ret < 0)
return -ERRNO_TO_PARA_ERROR(errno);
int write_ok(int fd)
{
- struct timeval tv;
fd_set wfds;
FD_ZERO(&wfds);
FD_SET(fd, &wfds);
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- return para_select(fd + 1, NULL, &wfds, &tv);
+ return para_select(fd + 1, NULL, &wfds, 0);
}
/**