61 #ifndef HAVE_SYS_POLL_H 64 #include <sys/types.h> 69 struct timeval tv, *tvp;
72 fd_set readfds, *rfdp;
73 fd_set writefds, *wfdp;
74 fd_set exceptfds, *xfdp;
93 tv.tv_sec = timeout / 1000;
94 tv.tv_usec = (timeout % 1000) * 1000;
99 for (i = 0; i < numfds; i++) {
100 int fd = fdarray[i].
fd;
101 int events = fdarray[i].
events;
105 FD_SET(fd, &readfds);
109 FD_SET(fd, &writefds);
113 FD_SET(fd, &exceptfds);
120 ret = select(maxfd + 1, rfdp, wfdp, xfdp, tvp);
129 for (i = 0; i < numfds; i++) {
130 if (fdarray[i].fd < 0) {
135 if (rfdp && FD_ISSET(fdarray[i].fd, &readfds))
137 if (wfdp && FD_ISSET(fdarray[i].fd, &writefds))
139 if (xfdp && FD_ISSET(fdarray[i].fd, &exceptfds))
141 if (fdarray[i].revents != 0)
int gw_poll(struct pollfd *fdarray, unsigned int numfds, int timeout)