19 #if !defined(_MSC_VER)
20 #include <sys/select.h>
31 typedef struct as_poll_s {
32 #if !defined(_MSC_VER)
44 #if !defined(_MSC_VER)
46 #define AS_STACK_LIMIT (16 * 1024)
57 #define as_poll_init(_poll, _fd)\
58 (_poll)->size = (((_fd) / FD_SETSIZE) + 1) * FD_SETSIZE / 8;\
59 (_poll)->set = ((_poll)->size > AS_STACK_LIMIT)? cf_malloc((_poll)->size) : alloca((_poll)->size);
70 memset(poll->
set, 0, poll->
size);
71 FD_SET(fd % FD_SETSIZE, &poll->
set[fd / FD_SETSIZE]);
78 tv.tv_sec = timeout / 1000;
79 tv.tv_usec = (timeout % 1000) * 1000;
87 rv = select(fd + 1, poll->
set , 0 , 0, tvp);
90 rv = select(fd + 1, 0 , poll->
set , 0, tvp);
97 if (! FD_ISSET(fd % FD_SETSIZE, &poll->
set[fd / FD_SETSIZE])) {
113 #define as_poll_init(_poll, _fd)
119 FD_SET(fd, &poll->
set);
126 tv.tv_sec = timeout / 1000;
127 tv.tv_usec = (timeout % 1000) * 1000;
135 rv = select(0, &poll->
set , 0 , 0, tvp);
138 rv = select(0, 0 , &poll->
set , 0, tvp);
145 if (! FD_ISSET(fd, &poll->
set)) {
151 #define as_poll_destroy(_poll)
static void as_poll_destroy(as_poll *poll)
static int as_poll_socket(as_poll *poll, as_socket_fd fd, uint32_t timeout, bool read)