26#include "arch/unix/apr_private.h"
28#ifndef HAVE_EPOLL_WAIT_RELIABLE_TIMEOUT
29#define HAVE_EPOLL_WAIT_RELIABLE_TIMEOUT 0
32#define SMALL_NUM_SOCKETS 3
37#define LARGE_NUM_SOCKETS 50
47#ifdef OLD_POLL_INTERFACE
72#ifdef OLD_POLL_INTERFACE
137#ifdef OLD_POLL_INTERFACE
330 ABTS_ASSERT(tc,
"either or both of APR_POLLIN, APR_POLLOUT returned",
344 ABTS_ASSERT(tc,
"either one or two events returned",
432 ABTS_ASSERT(tc,
"either one or two events returned",
439 ((
descs[0].desc.s ==
s[2]) && (
descs[1].desc.s ==
s[5])) ||
440 ((
descs[0].desc.s ==
s[5]) && (
descs[1].desc.s ==
s[2])));
570 ABTS_ASSERT(tc,
"Incorrect client data in result set",
571 ((
hot_files[0].client_data == (
void *)1) &&
572 (
hot_files[1].client_data == (
void *)4)) ||
573 ((
hot_files[0].client_data == (
void *)4) &&
574 (
hot_files[1].client_data == (
void *)1)));
577#define POLLCB_PREREQ \
579 if (pollcb == NULL) { \
580 ABTS_NOT_IMPL(tc, "pollcb interface not supported"); \
723 "failure using APR_POLLSET_NODEFAULT with unsupported method",
771 "failure using APR_POLLSET_NODEFAULT with unsupported method",
808 for (
i = 0;
i < 2; ++
i) {
839 ABTS_FAIL(tc,
"pollcb callback invoked on apr_pollcb_wakeup()");
864#define JUSTSLEEP_DELAY apr_time_from_msec(200)
865#if HAVE_EPOLL_WAIT_RELIABLE_TIMEOUT
866#define JUSTSLEEP_ENOUGH(ts, te) \
867 ((te) - (ts) >= JUSTSLEEP_DELAY)
869#define JUSTSLEEP_JIFFY apr_time_from_msec(10)
870#define JUSTSLEEP_ENOUGH(ts, te) \
871 ((te) - (ts) >= JUSTSLEEP_DELAY - JUSTSLEEP_JIFFY)
897 "apr_poll() didn't sleep",
912 "apr_pollset_poll() didn't sleep",
928 "apr_pollcb_poll() didn't sleep",
942#ifdef OLD_POLL_INTERFACE
const char apr_size_t len
void abts_run_test(abts_suite *ts, test_func f, void *value)
#define ABTS_SIZE_EQUAL(a, b, c)
#define ABTS_PTR_EQUAL(a, b, c)
#define ABTS_PTR_NOTNULL(a, b)
#define ABTS_NOT_IMPL(a, b)
#define ABTS_STR_EQUAL(a, b, c)
#define ABTS_ASSERT(a, b, c)
#define ABTS_INT_EQUAL(a, b, c)
APR Miscellaneous library routines.
APR general purpose library routines.
const char apr_port_t port
ap_vhost_iterate_conn_cb void * baton
#define APR_STATUS_IS_TIMEUP(s)
apr_int32_t apr_int32_t * nsds
apr_interval_time_t apr_int32_t const apr_pollfd_t ** descriptors
apr_interval_time_t apr_int32_t * num
const apr_pollfd_t * descriptor
#define apr_pcalloc(p, size)
#define APR_POLLSET_WAKEABLE
#define APR_POLLSET_NODEFAULT
static void nomessage_pollset(abts_case *tc, void *data)
static void send_msg(apr_socket_t **sockarray, apr_sockaddr_t **sas, int which, abts_case *tc)
static void pollcb_wakeup(abts_case *tc, void *data)
static void create_all_sockets(abts_case *tc, void *data)
static apr_pollcb_t * pollcb
static void multi_event_pollset(abts_case *tc, void *data)
static void add_sockets_pollset(abts_case *tc, void *data)
static void setup_pollcb(abts_case *tc, void *data)
static void make_socket(apr_socket_t **sock, apr_sockaddr_t **sa, apr_port_t port, apr_pool_t *p, abts_case *tc)
static void justsleep(abts_case *tc, void *data)
static apr_status_t wakeup_pollcb_cb(void *baton, apr_pollfd_t *descriptor)
static void send0_pollset(abts_case *tc, void *data)
#define JUSTSLEEP_ENOUGH(ts, te)
abts_suite * testpoll(abts_suite *suite)
static void send_last_pollset(abts_case *tc, void *data)
static void send_middle_pollset(abts_case *tc, void *data)
static void close_all_sockets(abts_case *tc, void *data)
static void pollcb_default(abts_case *tc, void *data)
static void pollset_wakeup(abts_case *tc, void *data)
static void recv_msg(apr_socket_t **sockarray, int which, apr_pool_t *p, abts_case *tc)
#define LARGE_NUM_SOCKETS
static void timeout_pollin_pollcb(abts_case *tc, void *data)
static apr_socket_t * s[50]
static void pollset_default(abts_case *tc, void *data)
static void clear_middle_pollset(abts_case *tc, void *data)
static void pollset_remove(abts_case *tc, void *data)
static void clear_last_pollset(abts_case *tc, void *data)
static apr_status_t trigger_pollcb_cb(void *baton, apr_pollfd_t *descriptor)
static void setup_pollset(abts_case *tc, void *data)
static apr_sockaddr_t * sa[50]
static apr_pollset_t * pollset
static void timeout_pollcb(abts_case *tc, void *data)
static void recv0_pollset(abts_case *tc, void *data)
#define SMALL_NUM_SOCKETS
static int default_pollset_impl
static void trigger_pollcb(abts_case *tc, void *data)
apr_status_t apr_socket_sendto(apr_socket_t *sock, apr_sockaddr_t *where, apr_int32_t flags, const char *buf, apr_size_t *len)
apr_status_t apr_socket_recvfrom(apr_sockaddr_t *from, apr_socket_t *sock, apr_int32_t flags, char *buf, apr_size_t *len)
apr_status_t apr_socket_bind(apr_socket_t *sock, apr_sockaddr_t *sa)
apr_status_t apr_socket_close(apr_socket_t *thesocket)
apr_status_t apr_socket_create(apr_socket_t **new, int ofamily, int type, int protocol, apr_pool_t *cont)