

Go to the source code of this file.
Defines | |
| #define | ast_poll(a, b, c) poll(a, b, c) |
Functions | |
| int | ast_poll2 (struct pollfd *pArray, unsigned long n_fds, struct timeval *tv) |
| Same as poll(2), except the time is specified in microseconds and the tv argument is modified to indicate the time remaining. | |
| static int | ast_poll_fd_index (struct pollfd *haystack, int nfds, int needle) |
| Shortcut for conversion of FD_ISSET to poll(2)-based. | |
| #define ast_poll | ( | a, | |
| b, | |||
| c | |||
| ) | poll(a, b, c) |
Definition at line 88 of file poll-compat.h.
Referenced by _sip_tcp_helper_thread(), aji_io_recv(), ast_el_read_char(), ast_io_wait(), ast_remotecontrol(), ast_stun_request(), ast_wait_for_input(), ast_wait_for_output(), ast_waitfor_nandfds(), cb_events(), dispatch_thread_handler(), do_monitor(), do_parking_thread(), do_pktccops(), get_input(), hidthread(), launch_netscript(), listener(), misdn_read(), monitor_sig_flags(), monmp3thread(), netconsole(), read_pipe(), shaun_of_the_dead(), timed_read(), and timing_test().
| int ast_poll2 | ( | struct pollfd * | pArray, |
| unsigned long | n_fds, | ||
| struct timeval * | tv | ||
| ) |
Same as poll(2), except the time is specified in microseconds and the tv argument is modified to indicate the time remaining.
Definition at line 268 of file poll.c.
References ast_select(), ast_tv(), ast_tvadd(), ast_tvdiff_ms(), ast_tvnow(), ast_tvsub(), and FD_ZERO.
Referenced by do_monitor().
{
#if !defined(AST_POLL_COMPAT)
struct timeval start = ast_tvnow();
#if defined(HAVE_PPOLL)
struct timespec ts = { tv ? tv->tv_sec : 0, tv ? tv->tv_usec * 1000 : 0 };
int res = ppoll(pArray, n_fds, tv ? &ts : NULL, NULL);
#else
int res = poll(pArray, n_fds, tv ? tv->tv_sec * 1000 + tv->tv_usec / 1000 : -1);
#endif
struct timeval after = ast_tvnow();
if (res > 0 && tv && ast_tvdiff_ms(ast_tvadd(*tv, start), after) > 0) {
*tv = ast_tvsub(*tv, ast_tvsub(after, start));
} else if (res > 0 && tv) {
*tv = ast_tv(0, 0);
}
return res;
#else
ast_fdset read_descs, write_descs, except_descs;
int ready_descriptors, max_fd = 0;
FD_ZERO(&read_descs);
FD_ZERO(&write_descs);
FD_ZERO(&except_descs);
if (pArray) {
max_fd = map_poll_spec(pArray, n_fds, &read_descs, &write_descs, &except_descs);
}
ready_descriptors = ast_select(max_fd + 1, &read_descs, &write_descs, &except_descs, tv);
if (ready_descriptors >= 0) {
map_select_results(pArray, n_fds, &read_descs, &write_descs, &except_descs);
}
return ready_descriptors;
#endif
}
| static int ast_poll_fd_index | ( | struct pollfd * | haystack, |
| int | nfds, | ||
| int | needle | ||
| ) | [inline, static] |
Shortcut for conversion of FD_ISSET to poll(2)-based.
Definition at line 128 of file poll-compat.h.
Referenced by do_pktccops().
{
int i;
for (i = 0; i < nfds; i++) {
if (haystack[i].fd == needle) {
return i;
}
}
return -1;
}