Waits for activity on a group of channels.
80{
81#ifdef __linux__
82 return select(nfds, (fd_set *) rfds, (fd_set *) wfds, (fd_set *) efds, tvp);
83#else
84 int save_errno = 0;
85 if (tvp) {
86 struct timeval tv, tvstart, tvend, tvlen;
87 int res;
88
89 tv = *tvp;
90 gettimeofday(&tvstart,
NULL);
91 res = select(nfds, (fd_set *) rfds, (fd_set *) wfds, (fd_set *) efds, tvp);
93 gettimeofday(&tvend,
NULL);
96 if (tvp->tv_sec < 0 || (tvp->tv_sec == 0 && tvp->tv_usec < 0)) {
97 tvp->tv_sec = 0;
98 tvp->tv_usec = 0;
99 }
101 return res;
102 }
103 else
104 return select(nfds, (fd_set *) rfds, (fd_set *) wfds, (fd_set *) efds,
NULL);
105#endif
106}
void timersub(struct timeval *tvend, struct timeval *tvstart, struct timeval *tvdiff)