40#include "apr_arch_inherit.h"
41#include "apr_arch_file_io.h"
42#include "apr_arch_networkio.h"
119#define DBG_BUFF char dbg_msg_buff[256];
121#define DBG_TEST(lvl) if (lvl <= DEBUG) {
123#define DBG_CORE(msg) sprintf(dbg_msg_buff, "% 8d " __FUNCTION__ \
124 " " msg, getpid()), \
125 fprintf(stderr, "%s", dbg_msg_buff);
126#define DBG_CORE1(msg, var1) sprintf(dbg_msg_buff, "% 8d " __FUNCTION__ \
127 " " msg, getpid(), var1), \
128 fprintf(stderr, "%s", dbg_msg_buff);
129#define DBG_CORE2(msg, var1, var2) sprintf(dbg_msg_buff, "% 8d " __FUNCTION__ \
130 " " msg, getpid(), var1, var2), \
131 fprintf(stderr, "%s", dbg_msg_buff);
132#define DBG_CORE3(msg, var1, var2, var3) \
133 sprintf(dbg_msg_buff, "% 8d " __FUNCTION__ \
134 " " msg, getpid(), var1, var2, var3), \
135 fprintf(stderr, "%s", dbg_msg_buff);
136#define DBG_CORE4(msg, var1, var2, var3, var4) \
137 sprintf(dbg_msg_buff, "% 8d " __FUNCTION__ \
138 " " msg, getpid(), var1, var2, var3, var4),\
139 fprintf(stderr, "%s", dbg_msg_buff);
143#define DBG(lvl, msg) DBG_TEST(lvl) \
147#define DBG1(lvl, msg, var1) DBG_TEST(lvl) \
148 DBG_CORE1(msg, var1) \
151#define DBG2(lvl, msg, var1, var2) DBG_TEST(lvl) \
152 DBG_CORE2(msg, var1, var2) \
155#define DBG3(lvl, msg, var1, var2, var3) \
157 DBG_CORE3(msg, var1, var2, var3) \
160#define DBG4(lvl, msg, var1, var2, var3, var4) \
162 DBG_CORE4(msg, var1, var2, var3, var4) \
167#define DBG(lvl, msg) ((void)0)
168#define DBG1(lvl, msg, var1) ((void)0)
169#define DBG2(lvl, msg, var1, var2) ((void)0)
170#define DBG3(lvl, msg, var1, var2, var3) ((void)0)
171#define DBG4(lvl, msg, var1, var2, var3, var4) ((void)0)
187 DBG2(4,
"BPX4AIO aiocb %p rv %d\n",
191 DBG2(4,
"errno %d errnojr %08x\n",
252 DBG1(4,
"asio_pollset_cleanup: msgctl(IPC_RMID) returned %d\n", rv);
276 DBG1(1,
"apr_thread_mutex_create returned %d\n", rv);
289 DBG2(4,
"pollset %p msgget was OK, rv=%d\n",
pollset, rv);
308 if ((!priv->pollset) || (!priv->
query_set)) {
327 DBG2(2,
"exiting, pollset: %p, type: %s\n",
365 DBG2(4,
"exiting, fd %d added to pollset %p\n",
fd,
pollset);
387 DBG1(3,
"used recycled memory at %08p\n",
elem);
389 elem->
a.aio_cflags = 0;
393 DBG1(3,
"alloced new memory at %08p\n",
elem);
396 elem->
a.aio_msgev_qid = priv->msg_q;
397 DBG1(5,
"aio_msgev_quid = %d \n",
elem->
a.aio_msgev_qid);
399 elem->
a.aio_msgev_flag = 0;
402 elem->
a.aio_nbytes = 1;
403 elem->msg.msg_type = 1;
418 DBG3(4,
"pollset %p asio failed fd %d, errno %p\n",
425 DBG2(4,
"good asio call, adding fd %d to pollset %p\n",
440 DBG1(2,
"exiting, rv = %d\n", rv);
464 priv->pollset[
dst] = priv->pollset[
i];
469 DBG(4,
"returning OK\n");
474 DBG(1,
"returning APR_NOTFOUND\n");
507 DBG1(1,
"couldn't find fd %d\n",
fd);
510 DBG1(5,
"hash found fd %d\n",
fd);
527 DBG1(4,
"asyncio returned %d\n", rv);
537 DBG1(2,
"exiting, rv: %d\n", rv);
569 if (priv->pollset[
i].revents != 0) {
579 DBG(4,
"exiting ok\n");
589 switch(
elem->state) {
591 DBG2(5,
"for cancelled elem, recycling memory - elem %08p, fd %d\n",
597 DBG2(4,
"adding to ready ring: elem %08p, fd %d\n",
604 DBG3(1,
"unexpected state: elem %08p, fd %d, state %d\n",
636 DBG3(5,
"pollset %p elem %p fd %d on prior ready ring\n",
669 DBG(4,
"asyncio() completed inline\n");
676 DBG2(1,
"asyncio() failed, ret: %d, errno: %d\n",
682 DBG1(4,
"asyncio() completed rc %d\n",
ret);
685 DBG(6,
"after prior ready loop\n");
704 DBG2(6,
"nothing on the ready ring "
705 "- blocking for %d seconds %d ns\n",
706 tv.tv_sec,
tv.tv_nsec);
714 DBG(6,
"__msgrcv_timed timed out\n");
717 DBG(1,
"__msgrcv_timed failed!\n");
738 DBG2(5,
"ready ring: elem %08p, fd %d\n",
elem,
elem->os_pfd.fd);
749 DBG(5,
"end of ready ring reached\n");
765 DBG1(2,
"exiting, rv = %d\n", rv);
APR Portability Routines.
apr_bucket apr_bucket_brigade * a
const char apr_ssize_t int flags
#define DBG3(f, a1, a2, a3)
#define apr_get_netos_error()
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_RING_ENTRY(elem)
#define APR_RING_INSERT_TAIL(hp, nep, elem, link)
#define APR_RING_INIT(hp, elem, link)
#define APR_RING_HEAD(head, elem)
#define APR_RING_CONCAT(h1, h2, elem, link)
#define APR_RING_SENTINEL(hp, elem, link)
#define APR_RING_EMPTY(hp, elem, link)
#define APR_RING_REMOVE(ep, link)
#define APR_RING_FIRST(hp)
#define APR_RING_NEXT(ep, link)
#define APR_RING_ELEM_INIT(ep, link)
apr_int64_t apr_interval_time_t
#define apr_time_sec(time)
#define apr_time_usec(time)
#define APR_POLLSET_THREADSAFE
static md_http_impl_t impl
apr_pollfd_t * result_set
apr_pollset_private_t * p
static apr_pollset_t * pollset