Lines Matching defs:fgrp

65 spdk_fd_group_get_fd(struct spdk_fd_group *fgrp)
67 return fgrp->epfd;
186 fd_group_get_root(struct spdk_fd_group *fgrp)
188 while (fgrp->parent != NULL) {
189 fgrp = fgrp->parent;
192 return fgrp;
196 fd_group_change_parent(struct spdk_fd_group *fgrp, struct spdk_fd_group *old,
202 TAILQ_FOREACH(child, &fgrp->children, link) {
209 ret = _fd_group_del_all(old->epfd, fgrp);
217 ret = _fd_group_add_all(new->epfd, fgrp);
229 rc = _fd_group_add_all(old->epfd, fgrp);
237 TAILQ_FOREACH(tmp, &fgrp->children, link) {
376 spdk_fd_group_add(struct spdk_fd_group *fgrp, int efd, spdk_fd_fn fn,
379 return spdk_fd_group_add_for_events(fgrp, efd, EPOLLIN, fn, arg, name);
383 spdk_fd_group_add_for_events(struct spdk_fd_group *fgrp, int efd, uint32_t events,
392 return spdk_fd_group_add_ext(fgrp, efd, fn, arg, name, &opts);
396 spdk_fd_group_add_ext(struct spdk_fd_group *fgrp, int efd, spdk_fd_fn fn, void *arg,
406 if (fgrp == NULL || efd < 0 || fn == NULL) {
416 TAILQ_FOREACH(ehdlr, &fgrp->event_handlers, next) {
434 ehdlr->owner = fgrp;
437 root = fd_group_get_root(fgrp);
443 efd, fgrp, strerror(errno));
448 TAILQ_INSERT_TAIL(&fgrp->event_handlers, ehdlr, next);
455 spdk_fd_group_remove(struct spdk_fd_group *fgrp, int efd)
461 if (fgrp == NULL || efd < 0) {
462 SPDK_ERRLOG("Cannot remove fd: %d from fd group(%p)\n", efd, fgrp);
468 TAILQ_FOREACH(ehdlr, &fgrp->event_handlers, next) {
475 SPDK_ERRLOG("fd: %d doesn't exist in fd group(%p)\n", efd, fgrp);
480 root = fd_group_get_root(fgrp);
485 ehdlr->fd, fgrp, strerror(errno));
491 TAILQ_REMOVE(&fgrp->event_handlers, ehdlr, next);
493 /* Delay ehdlr's free in case it is waiting for execution in fgrp wait loop */
502 spdk_fd_group_event_modify(struct spdk_fd_group *fgrp,
508 if (fgrp == NULL || efd < 0) {
512 TAILQ_FOREACH(ehdlr, &fgrp->event_handlers, next) {
529 return epoll_ctl(fd_group_get_root(fgrp)->epfd, EPOLL_CTL_MOD, ehdlr->fd, &epevent);
535 struct spdk_fd_group *fgrp;
541 fgrp = calloc(1, sizeof(*fgrp));
542 if (fgrp == NULL) {
547 TAILQ_INIT(&fgrp->event_handlers);
548 TAILQ_INIT(&fgrp->children);
550 fgrp->num_fds = 0;
551 fgrp->epfd = epoll_create1(EPOLL_CLOEXEC);
552 if (fgrp->epfd < 0) {
553 free(fgrp);
557 *_egrp = fgrp;
563 spdk_fd_group_destroy(struct spdk_fd_group *fgrp)
565 if (fgrp == NULL || fgrp->num_fds > 0) {
566 if (!fgrp) {
570 fgrp, fgrp->num_fds);
577 if (!TAILQ_EMPTY(&fgrp->event_handlers)) {
583 assert(fgrp->parent == NULL);
584 assert(TAILQ_EMPTY(&fgrp->children));
585 close(fgrp->epfd);
586 free(fgrp);
592 spdk_fd_group_wait(struct spdk_fd_group *fgrp, int timeout)
595 uint32_t totalfds = fgrp->num_fds;
604 if (fgrp->parent != NULL) {
615 nfds = epoll_wait(fgrp->epfd, events, totalfds, timeout);
619 fgrp, strerror(errno));
703 spdk_fd_group_set_wrapper(struct spdk_fd_group *fgrp, spdk_fd_group_wrapper_fn fn, void *ctx)
705 if (fgrp->wrapper_fn != NULL && fn != NULL) {
709 if (!TAILQ_EMPTY(&fgrp->children)) {
713 fgrp->wrapper_fn = fn;
714 fgrp->wrapper_arg = ctx;
728 spdk_fd_group_add(struct spdk_fd_group *fgrp, int efd, spdk_fd_fn fn,
735 spdk_fd_group_add_for_events(struct spdk_fd_group *fgrp, int efd, uint32_t events, spdk_fd_fn fn,
742 spdk_fd_group_add_ext(struct spdk_fd_group *fgrp, int efd, spdk_fd_fn fn, void *arg,
756 spdk_fd_group_remove(struct spdk_fd_group *fgrp, int efd)
761 spdk_fd_group_event_modify(struct spdk_fd_group *fgrp,
768 spdk_fd_group_create(struct spdk_fd_group **fgrp)
774 spdk_fd_group_destroy(struct spdk_fd_group *fgrp)
779 spdk_fd_group_wait(struct spdk_fd_group *fgrp, int timeout)
797 spdk_fd_group_set_wrapper(struct spdk_fd_group *fgrp, spdk_fd_group_wrapper_fn fn, void *ctx)