• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /freebsd-12-stable/contrib/apr/poll/unix/

Lines Matching refs:pollcb

313 /* Poll method pollcb.
316 static apr_status_t impl_pollcb_create(apr_pollcb_t *pollcb,
324 pollcb->fd = -1;
331 pollcb->pollset.ps = apr_palloc(p, size * sizeof(struct pollfd));
332 pollcb->copyset = apr_palloc(p, size * sizeof(apr_pollfd_t *));
338 static apr_status_t impl_pollcb_add(apr_pollcb_t *pollcb,
341 if (pollcb->nelts == pollcb->nalloc) {
346 pollcb->pollset.ps[pollcb->nelts].fd = descriptor->desc.s->socketdes;
350 pollcb->pollset.ps[pollcb->nelts].fd = descriptor->desc.f->filedes;
356 pollcb->pollset.ps[pollcb->nelts].events =
358 pollcb->copyset[pollcb->nelts] = descriptor;
359 pollcb->nelts++;
364 static apr_status_t impl_pollcb_remove(apr_pollcb_t *pollcb,
369 for (i = 0; i < pollcb->nelts; i++) {
370 if (descriptor->desc.s == pollcb->copyset[i]->desc.s) {
373 apr_uint32_t old_nelts = pollcb->nelts;
374 pollcb->nelts--;
376 if (descriptor->desc.s == pollcb->copyset[i]->desc.s) {
377 pollcb->nelts--;
380 pollcb->pollset.ps[dst] = pollcb->pollset.ps[i];
381 pollcb->copyset[dst] = pollcb->copyset[i];
392 static apr_status_t impl_pollcb_poll(apr_pollcb_t *pollcb,
403 if (pollcb->nelts == 0) {
413 ret = WSAPoll(pollcb->pollset.ps, pollcb->nelts, (int)timeout);
418 ret = poll(pollcb->pollset.ps, pollcb->nelts, timeout);
427 for (i = 0; i < pollcb->nelts; i++) {
428 if (pollcb->pollset.ps[i].revents != 0) {
429 apr_pollfd_t *pollfd = pollcb->copyset[i];
431 if ((pollcb->flags & APR_POLLSET_WAKEABLE) &&
433 pollfd->desc.f == pollcb->wakeup_pipe[0]) {
434 apr_poll_drain_wakeup_pipe(pollcb->wakeup_pipe);
438 pollfd->rtnevents = get_revent(pollcb->pollset.ps[i].revents);