* \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 upper bound on the amount of time elapsed before select()
- * returns
+ * \param timeout_tv upper bound on the amount of time elapsed before select()
+ * returns
*
* \return The return value of the underlying select() call.
*
* \sa select(2) select_tut(2)
*/
int para_select(int n, fd_set *readfds, fd_set *writefds,
- struct timeval *timeout)
+ struct timeval *timeout_tv)
{
int ret, err;
do {
- ret = select(n, readfds, writefds, NULL, timeout);
+ ret = select(n, readfds, writefds, NULL, timeout_tv);
err = errno;
} while (ret < 0 && err == EINTR);
if (ret < 0)
*/
void para_fd_set(int fd, fd_set *fds, int *max_fileno)
{
+
if (fd < 0 || fd >= FD_SETSIZE) {
PARA_EMERG_LOG("fatal: tried to add invalid fd %d\n", fd);
exit(EXIT_FAILURE);
}
+#if 0
+ {
+ int flags = fcntl(fd, F_GETFL);
+ if (!(flags & O_NONBLOCK)) {
+ PARA_EMERG_LOG("fd %d is a blocking file descriptor\n", fd);
+ exit(EXIT_FAILURE);
+ }
+ }
+#endif
FD_SET(fd, fds);
*max_fileno = PARA_MAX(*max_fileno, fd);
}