Deleted Added
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

--- 810 unchanged lines hidden (view full) ---

819 nxt_event_engine_t *engine;
820
821 engine = data;
822
823 nxt_debug(task, "eventfd handler, times:%ui", engine->u.epoll.neventfd);
824
825 /*
826 * The maximum value after write() to a eventfd() descriptor will
827 * block or return EAGAIN is 0xFFFFFFFFFFFFFFFE, so the descriptor
828 * can be read once per many notifications, for example, once per
829 * 2^32-2 noticifcations. Since the eventfd() file descriptor is
830 * always registered in EPOLLET mode, epoll returns event about
831 * only the latest write() to the descriptor.
832 */
833
834 if (engine->u.epoll.neventfd++ >= 0xFFFFFFFE) {
835 engine->u.epoll.neventfd = 0;
836
837 n = read(engine->u.epoll.eventfd.fd, &events, sizeof(uint64_t));
838
839 nxt_debug(task, "read(%d): %d events:%uL",
840 engine->u.epoll.eventfd.fd, n, events);
841
842 if (n != sizeof(uint64_t)) {

--- 313 unchanged lines hidden ---