Lines Matching defs:ehdlr

30 /* Taking "ehdlr" as short name for file descriptor handler of the interrupt event. */
87 struct event_handler *ehdlr = NULL;
92 TAILQ_FOREACH(ehdlr, &grp->event_handlers, next) {
93 rc = epoll_ctl(epfd, EPOLL_CTL_DEL, ehdlr->fd, NULL);
104 ehdlr->fd, strerror(errno));
115 TAILQ_FOREACH(ehdlr, &grp->event_handlers, next) {
116 epevent.events = ehdlr->events;
117 epevent.data.ptr = ehdlr;
118 rc = epoll_ctl(epfd, EPOLL_CTL_ADD, ehdlr->fd, &epevent);
138 struct event_handler *ehdlr = NULL;
144 TAILQ_FOREACH(ehdlr, &grp->event_handlers, next) {
145 epevent.events = ehdlr->events;
146 epevent.data.ptr = ehdlr;
147 rc = epoll_ctl(epfd, EPOLL_CTL_ADD, ehdlr->fd, &epevent);
156 ehdlr->fd, strerror(errno));
166 TAILQ_FOREACH(ehdlr, &grp->event_handlers, next) {
167 rc = epoll_ctl(epfd, EPOLL_CTL_DEL, ehdlr->fd, NULL);
399 struct event_handler *ehdlr = NULL;
416 TAILQ_FOREACH(ehdlr, &fgrp->event_handlers, next) {
417 if (ehdlr->fd == efd) {
423 ehdlr = calloc(1, sizeof(*ehdlr));
424 if (ehdlr == NULL) {
428 ehdlr->fd = efd;
429 ehdlr->fn = fn;
430 ehdlr->fn_arg = arg;
431 ehdlr->state = EVENT_HANDLER_STATE_WAITING;
432 ehdlr->events = eh_opts.events;
433 ehdlr->fd_type = eh_opts.fd_type;
434 ehdlr->owner = fgrp;
435 snprintf(ehdlr->name, sizeof(ehdlr->name), "%s", name);
438 epevent.events = ehdlr->events;
439 epevent.data.ptr = ehdlr;
444 free(ehdlr);
448 TAILQ_INSERT_TAIL(&fgrp->event_handlers, ehdlr, next);
457 struct event_handler *ehdlr;
468 TAILQ_FOREACH(ehdlr, &fgrp->event_handlers, next) {
469 if (ehdlr->fd == efd) {
474 if (ehdlr == NULL) {
479 assert(ehdlr->state != EVENT_HANDLER_STATE_REMOVED);
482 rc = epoll_ctl(root->epfd, EPOLL_CTL_DEL, ehdlr->fd, NULL);
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 */
494 if (ehdlr->state == EVENT_HANDLER_STATE_RUNNING) {
495 ehdlr->state = EVENT_HANDLER_STATE_REMOVED;
497 free(ehdlr);
506 struct event_handler *ehdlr;
512 TAILQ_FOREACH(ehdlr, &fgrp->event_handlers, next) {
513 if (ehdlr->fd == efd) {
518 if (ehdlr == NULL) {
522 assert(ehdlr->state != EVENT_HANDLER_STATE_REMOVED);
524 ehdlr->events = event_types;
526 epevent.events = ehdlr->events;
527 epevent.data.ptr = ehdlr;
529 return epoll_ctl(fd_group_get_root(fgrp)->epfd, EPOLL_CTL_MOD, ehdlr->fd, &epevent);
597 struct event_handler *ehdlr;
629 ehdlr = events[n].data.ptr;
631 if (ehdlr == NULL) {
635 /* Tag ehdlr as running state in case that it is removed
638 assert(ehdlr->state == EVENT_HANDLER_STATE_WAITING);
639 ehdlr->state = EVENT_HANDLER_STATE_RUNNING;
644 ehdlr = events[n].data.ptr;
646 if (ehdlr == NULL || ehdlr->fn == NULL) {
650 /* It is possible that the ehdlr was removed
653 if (ehdlr->state == EVENT_HANDLER_STATE_REMOVED) {
654 free(ehdlr);
661 if (ehdlr->fd_type == SPDK_FD_TYPE_EVENTFD) {
662 bytes_read = read(ehdlr->fd, &count, sizeof(count));
671 ehdlr->fd, strerror(errno));
674 SPDK_ERRLOG("Read nothing from fd (%d)\n", ehdlr->fd);
681 owner = ehdlr->owner;
683 owner->wrapper_fn(owner->wrapper_arg, ehdlr->fn, ehdlr->fn_arg);
685 ehdlr->fn(ehdlr->fn_arg);
689 /* It is possible that the ehdlr was removed
692 if (ehdlr->state == EVENT_HANDLER_STATE_REMOVED) {
693 free(ehdlr);
695 ehdlr->state = EVENT_HANDLER_STATE_WAITING;