25 #ifndef _DWORD_DEFINED
26 #define _DWORD_DEFINED
27 typedef unsigned long DWORD;
28 #endif // !_DWORD_DEFINED
44 int poll_input (
struct pollfd *fds, nfds_t nfds,
int& elapsed_time,
int timeout)
47 dwNewTickCount = GetTickCount();
61 dwOldTickCount = dwNewTickCount;
63 for (loop=0; loop<nfds; loop++)
64 fds[loop].revents = 0;
66 for (loop=0; (loop<nfds && !
error); loop++)
68 if (!(fds[loop].events & ev_mask))
70 long pos = _tell(fds[loop].fd);
92 if (fds[loop].events & POLLRDNORM)
94 if (fds[loop].events & POLLRDBAND)
96 if (fds[loop].events & POLLPRI)
100 if ((fds[loop].events &
POLLIN) ||
101 (fds[loop].events &
POLLPRI) ||
102 (fds[loop].events & POLLRDNORM) ||
112 dwNewTickCount = GetTickCount();
113 elapsed_time += (dwNewTickCount-dwOldTickCount);
120 }
while ((!
error) && ((timeout == (-1)) || (elapsed_time < timeout)));
124 errno = ERROR_BAD_ARGUMENTS;
131 int poll_output (
struct pollfd *fds, nfds_t nfds,
int& elapsed_time,
int timeout)
143 for (nfds_t loop=0; loop<nfds; loop++)
145 if (fds[loop].events & ev_mask)
148 errno = ERROR_INVALID_ACCESS;
155 errno = ERROR_BAD_ARGUMENTS;
176 poll (
struct pollfd *fds, nfds_t nfds,
int timeout)
178 int elapsed_time = 0;
188 if ((nfds > OPEN_MAX) || (nfds >
NPOLLFILE))
190 errno = ERROR_TOO_MANY_OPEN_FILES;
196 for (nfds_t loop=0; loop<nfds; loop++)
198 if (fds[loop].events & ev_mask)
200 ret = poll_output(fds, nfds, elapsed_time, timeout);
208 ret = poll_input(fds, nfds, elapsed_time, timeout);
215 #endif //COMPILER_MSVC
LIBPBD_API Transmitter error