std_ev 64 lib/tevent/tevent_standard.c static void epoll_fallback_to_select(struct std_event_context *std_ev, const char *reason) std_ev 66 lib/tevent/tevent_standard.c tevent_debug(std_ev->ev, TEVENT_DEBUG_FATAL, std_ev 69 lib/tevent/tevent_standard.c close(std_ev->epoll_fd); std_ev 70 lib/tevent/tevent_standard.c std_ev->epoll_fd = -1; std_ev 71 lib/tevent/tevent_standard.c talloc_set_destructor(std_ev, NULL); std_ev 88 lib/tevent/tevent_standard.c static int epoll_ctx_destructor(struct std_event_context *std_ev) std_ev 90 lib/tevent/tevent_standard.c if (std_ev->epoll_fd != -1) { std_ev 91 lib/tevent/tevent_standard.c close(std_ev->epoll_fd); std_ev 93 lib/tevent/tevent_standard.c std_ev->epoll_fd = -1; std_ev 100 lib/tevent/tevent_standard.c static void epoll_init_ctx(struct std_event_context *std_ev) std_ev 102 lib/tevent/tevent_standard.c std_ev->epoll_fd = epoll_create(64); std_ev 103 lib/tevent/tevent_standard.c std_ev->pid = getpid(); std_ev 104 lib/tevent/tevent_standard.c talloc_set_destructor(std_ev, epoll_ctx_destructor); std_ev 107 lib/tevent/tevent_standard.c static void epoll_add_event(struct std_event_context *std_ev, struct tevent_fd *fde); std_ev 114 lib/tevent/tevent_standard.c static void epoll_check_reopen(struct std_event_context *std_ev) std_ev 118 lib/tevent/tevent_standard.c if (std_ev->pid == getpid()) { std_ev 122 lib/tevent/tevent_standard.c close(std_ev->epoll_fd); std_ev 123 lib/tevent/tevent_standard.c std_ev->epoll_fd = epoll_create(64); std_ev 124 lib/tevent/tevent_standard.c if (std_ev->epoll_fd == -1) { std_ev 125 lib/tevent/tevent_standard.c tevent_debug(std_ev->ev, TEVENT_DEBUG_FATAL, std_ev 129 lib/tevent/tevent_standard.c std_ev->pid = getpid(); std_ev 130 lib/tevent/tevent_standard.c for (fde=std_ev->ev->fd_events;fde;fde=fde->next) { std_ev 131 lib/tevent/tevent_standard.c epoll_add_event(std_ev, fde); std_ev 142 lib/tevent/tevent_standard.c static void epoll_add_event(struct std_event_context *std_ev, struct tevent_fd *fde) std_ev 145 lib/tevent/tevent_standard.c if (std_ev->epoll_fd == -1) return; std_ev 155 lib/tevent/tevent_standard.c if (epoll_ctl(std_ev->epoll_fd, EPOLL_CTL_ADD, fde->fd, &event) != 0) { std_ev 156 lib/tevent/tevent_standard.c epoll_fallback_to_select(std_ev, "EPOLL_CTL_ADD failed"); std_ev 169 lib/tevent/tevent_standard.c static void epoll_del_event(struct std_event_context *std_ev, struct tevent_fd *fde) std_ev 172 lib/tevent/tevent_standard.c if (std_ev->epoll_fd == -1) return; std_ev 182 lib/tevent/tevent_standard.c epoll_ctl(std_ev->epoll_fd, EPOLL_CTL_DEL, fde->fd, &event); std_ev 189 lib/tevent/tevent_standard.c static void epoll_mod_event(struct std_event_context *std_ev, struct tevent_fd *fde) std_ev 192 lib/tevent/tevent_standard.c if (std_ev->epoll_fd == -1) return; std_ev 199 lib/tevent/tevent_standard.c if (epoll_ctl(std_ev->epoll_fd, EPOLL_CTL_MOD, fde->fd, &event) != 0) { std_ev 200 lib/tevent/tevent_standard.c epoll_fallback_to_select(std_ev, "EPOLL_CTL_MOD failed"); std_ev 209 lib/tevent/tevent_standard.c static void epoll_change_event(struct std_event_context *std_ev, struct tevent_fd *fde) std_ev 215 lib/tevent/tevent_standard.c if (std_ev->epoll_fd == -1) return; std_ev 222 lib/tevent/tevent_standard.c epoll_mod_event(std_ev, fde); std_ev 231 lib/tevent/tevent_standard.c epoll_del_event(std_ev, fde); std_ev 237 lib/tevent/tevent_standard.c epoll_add_event(std_ev, fde); std_ev 245 lib/tevent/tevent_standard.c static int epoll_event_loop(struct std_event_context *std_ev, struct timeval *tvalp) std_ev 252 lib/tevent/tevent_standard.c if (std_ev->epoll_fd == -1) return -1; std_ev 259 lib/tevent/tevent_standard.c if (std_ev->ev->signal_events && std_ev 260 lib/tevent/tevent_standard.c tevent_common_check_signal(std_ev->ev)) { std_ev 264 lib/tevent/tevent_standard.c ret = epoll_wait(std_ev->epoll_fd, events, MAXEVENTS, timeout); std_ev 266 lib/tevent/tevent_standard.c if (ret == -1 && errno == EINTR && std_ev->ev->signal_events) { std_ev 267 lib/tevent/tevent_standard.c if (tevent_common_check_signal(std_ev->ev)) { std_ev 273 lib/tevent/tevent_standard.c epoll_fallback_to_select(std_ev, "epoll_wait() failed"); std_ev 279 lib/tevent/tevent_standard.c tevent_common_loop_timer_delay(std_ev->ev); std_ev 289 lib/tevent/tevent_standard.c epoll_fallback_to_select(std_ev, "epoll_wait() gave bad data"); std_ev 301 lib/tevent/tevent_standard.c epoll_del_event(std_ev, fde); std_ev 309 lib/tevent/tevent_standard.c fde->handler(std_ev->ev, fde, flags, fde->private_data); std_ev 317 lib/tevent/tevent_standard.c #define epoll_init_ctx(std_ev) std_ev 318 lib/tevent/tevent_standard.c #define epoll_add_event(std_ev,fde) std_ev 319 lib/tevent/tevent_standard.c #define epoll_del_event(std_ev,fde) std_ev 320 lib/tevent/tevent_standard.c #define epoll_change_event(std_ev,fde) std_ev 321 lib/tevent/tevent_standard.c #define epoll_event_loop(std_ev,tvalp) (-1) std_ev 322 lib/tevent/tevent_standard.c #define epoll_check_reopen(std_ev) std_ev 330 lib/tevent/tevent_standard.c struct std_event_context *std_ev; std_ev 332 lib/tevent/tevent_standard.c std_ev = talloc_zero(ev, struct std_event_context); std_ev 333 lib/tevent/tevent_standard.c if (!std_ev) return -1; std_ev 334 lib/tevent/tevent_standard.c std_ev->ev = ev; std_ev 335 lib/tevent/tevent_standard.c std_ev->epoll_fd = -1; std_ev 337 lib/tevent/tevent_standard.c epoll_init_ctx(std_ev); std_ev 339 lib/tevent/tevent_standard.c ev->additional_data = std_ev; std_ev 346 lib/tevent/tevent_standard.c static void calc_maxfd(struct std_event_context *std_ev) std_ev 350 lib/tevent/tevent_standard.c std_ev->maxfd = 0; std_ev 351 lib/tevent/tevent_standard.c for (fde = std_ev->ev->fd_events; fde; fde = fde->next) { std_ev 352 lib/tevent/tevent_standard.c if (fde->fd > std_ev->maxfd) { std_ev 353 lib/tevent/tevent_standard.c std_ev->maxfd = fde->fd; std_ev 370 lib/tevent/tevent_standard.c struct std_event_context *std_ev = NULL; std_ev 373 lib/tevent/tevent_standard.c std_ev = talloc_get_type(ev->additional_data, std_ev 376 lib/tevent/tevent_standard.c epoll_check_reopen(std_ev); std_ev 378 lib/tevent/tevent_standard.c if (std_ev->maxfd == fde->fd) { std_ev 379 lib/tevent/tevent_standard.c std_ev->maxfd = EVENT_INVALID_MAXFD; std_ev 382 lib/tevent/tevent_standard.c epoll_del_event(std_ev, fde); std_ev 399 lib/tevent/tevent_standard.c struct std_event_context *std_ev = talloc_get_type(ev->additional_data, std_ev 403 lib/tevent/tevent_standard.c epoll_check_reopen(std_ev); std_ev 410 lib/tevent/tevent_standard.c if ((std_ev->maxfd != EVENT_INVALID_MAXFD) std_ev 411 lib/tevent/tevent_standard.c && (fde->fd > std_ev->maxfd)) { std_ev 412 lib/tevent/tevent_standard.c std_ev->maxfd = fde->fd; std_ev 416 lib/tevent/tevent_standard.c epoll_add_event(std_ev, fde); std_ev 427 lib/tevent/tevent_standard.c struct std_event_context *std_ev; std_ev 432 lib/tevent/tevent_standard.c std_ev = talloc_get_type(ev->additional_data, struct std_event_context); std_ev 436 lib/tevent/tevent_standard.c epoll_check_reopen(std_ev); std_ev 438 lib/tevent/tevent_standard.c epoll_change_event(std_ev, fde); std_ev 444 lib/tevent/tevent_standard.c static int std_event_loop_select(struct std_event_context *std_ev, struct timeval *tvalp) std_ev 451 lib/tevent/tevent_standard.c if (std_ev->maxfd == EVENT_INVALID_MAXFD) { std_ev 452 lib/tevent/tevent_standard.c calc_maxfd(std_ev); std_ev 459 lib/tevent/tevent_standard.c for (fde = std_ev->ev->fd_events; fde; fde = fde->next) { std_ev 468 lib/tevent/tevent_standard.c if (std_ev->ev->signal_events && std_ev 469 lib/tevent/tevent_standard.c tevent_common_check_signal(std_ev->ev)) { std_ev 473 lib/tevent/tevent_standard.c selrtn = select(std_ev->maxfd+1, &r_fds, &w_fds, NULL, tvalp); std_ev 476 lib/tevent/tevent_standard.c std_ev->ev->signal_events) { std_ev 477 lib/tevent/tevent_standard.c tevent_common_check_signal(std_ev->ev); std_ev 487 lib/tevent/tevent_standard.c tevent_debug(std_ev->ev, TEVENT_DEBUG_FATAL, std_ev 489 lib/tevent/tevent_standard.c std_ev->exit_code = EBADF; std_ev 495 lib/tevent/tevent_standard.c tevent_common_loop_timer_delay(std_ev->ev); std_ev 503 lib/tevent/tevent_standard.c for (fde = std_ev->ev->fd_events; fde; fde = fde->next) { std_ev 509 lib/tevent/tevent_standard.c fde->handler(std_ev->ev, fde, flags, fde->private_data); std_ev 523 lib/tevent/tevent_standard.c struct std_event_context *std_ev = talloc_get_type(ev->additional_data, std_ev 542 lib/tevent/tevent_standard.c epoll_check_reopen(std_ev); std_ev 544 lib/tevent/tevent_standard.c if (epoll_event_loop(std_ev, &tval) == 0) { std_ev 548 lib/tevent/tevent_standard.c return std_event_loop_select(std_ev, &tval);