Lines Matching defs:pollset

21  * socket is added to the pollset, an async poll is issued for that individual
24 * that is part of the pollset. apr_pollset_poll waits on the arrival of IPC
74 struct pollfd *pollset;
244 static apr_status_t asio_pollset_cleanup(apr_pollset_t *pollset)
250 rv = msgctl(pollset->p->msg_q, IPC_RMID, NULL);
256 static apr_status_t asio_pollset_create(apr_pollset_t *pollset,
267 priv = pollset->p = apr_palloc(p, sizeof(*priv));
275 pollset = NULL;
283 pollset = NULL;
287 DBG2(4, "pollset %p msgget was OK, rv=%d\n", pollset, rv);
294 #else /* APR doesn't have threads but caller wants a threadsafe pollset */
295 pollset = NULL;
300 * init fields only needed in old style pollset
303 priv->pollset = apr_palloc(p, size * sizeof(struct pollfd));
306 if ((!priv->pollset) || (!priv->query_set)) {
311 pollset->nelts = 0;
312 pollset->flags = flags;
313 pollset->pool = p;
320 DBG2(2, "exiting, pollset: %p, type: %s\n",
321 pollset,
329 static apr_status_t posix_add(apr_pollset_t *pollset,
334 apr_pool_t *p = pollset->pool;
335 apr_pollset_private_t *priv = pollset->p;
339 if (pollset->nelts == priv->size) {
343 priv->query_set[pollset->nelts] = *descriptor;
351 priv->pollset[pollset->nelts].fd = fd;
353 priv->pollset[pollset->nelts].events =
356 pollset->nelts++;
358 DBG2(4, "exiting, fd %d added to pollset %p\n", fd, pollset);
364 static apr_status_t asio_pollset_add(apr_pollset_t *pollset,
370 apr_pollset_private_t *priv = pollset->p;
375 if (pollset->flags & APR_POLLSET_THREADSAFE) {
384 elem = (asio_elem_t *) apr_pcalloc(pollset->pool, sizeof(asio_elem_t));
410 DBG3(4, "pollset %p asio failed fd %d, errno %p\n",
411 pollset, elem->os_pfd.fd, rv);
417 DBG2(4, "good asio call, adding fd %d to pollset %p\n",
418 elem->os_pfd.fd, pollset);
420 pollset->nelts++;
426 * pipes or files are used with this pollset
429 rv = posix_add(pollset, descriptor);
438 static posix_remove(apr_pollset_t *pollset, const apr_pollfd_t *descriptor)
442 apr_pollset_private_t *priv = pollset->p;
445 for (i = 0; i < pollset->nelts; i++) {
449 apr_uint32_t old_nelts = pollset->nelts;
450 pollset->nelts--;
453 pollset->nelts--;
456 priv->pollset[dst] = priv->pollset[i];
471 static apr_status_t asio_pollset_remove(apr_pollset_t *pollset,
477 apr_pollset_private_t *priv = pollset->p;
484 if (!(pollset->flags & APR_POLLSET_THREADSAFE)) {
485 return posix_remove(pollset, descriptor);
513 /* we want the original aiocb to show up on the pollset message queue
535 static posix_poll(apr_pollset_t *pollset,
543 apr_pollset_private_t *priv = pollset->p;
550 rv = poll(priv->pollset, pollset->nelts, timeout);
559 for (i = 0; i < pollset->nelts; i++) {
560 if (priv->pollset[i].revents != 0) {
563 get_revent(priv->pollset[i].revents);
575 static process_msg(apr_pollset_t *pollset, struct asio_msgbuf_t *msg)
584 APR_RING_INSERT_TAIL(&(pollset->p->free_ring), elem,
591 APR_RING_INSERT_TAIL(&(pollset->p->ready_ring), elem,
603 static apr_status_t asio_pollset_poll(apr_pollset_t *pollset,
614 apr_pollset_private_t *priv = pollset->p;
618 if ((pollset->flags & APR_POLLSET_THREADSAFE) == 0 ) {
619 return posix_poll(pollset, timeout, num, descriptors);
627 DBG3(5, "pollset %p elem %p fd %d on prior ready ring\n",
628 pollset,
635 * since USS does not remember what's in our pollset, we have
680 process_msg(pollset, &msg_buff);
714 process_msg(pollset, &msg_buff);