… | |
… | |
148 | int want = anfds [fd].events; |
148 | int want = anfds [fd].events; |
149 | int got = (ev->events & (EPOLLOUT | EPOLLERR | EPOLLHUP) ? EV_WRITE : 0) |
149 | int got = (ev->events & (EPOLLOUT | EPOLLERR | EPOLLHUP) ? EV_WRITE : 0) |
150 | | (ev->events & (EPOLLIN | EPOLLERR | EPOLLHUP) ? EV_READ : 0); |
150 | | (ev->events & (EPOLLIN | EPOLLERR | EPOLLHUP) ? EV_READ : 0); |
151 | |
151 | |
152 | /* check for spurious notification */ |
152 | /* check for spurious notification */ |
|
|
153 | /* we assume that fd is always in range, as we never shrink the anfds array */ |
153 | if (expect_false ((uint32_t)anfds [fd].egen != (uint32_t)(ev->data.u64 >> 32))) |
154 | if (expect_false ((uint32_t)anfds [fd].egen != (uint32_t)(ev->data.u64 >> 32))) |
154 | { |
155 | { |
155 | /* recreate kernel state */ |
156 | /* recreate kernel state */ |
156 | postfork = 1; |
157 | postfork = 1; |
157 | continue; |
158 | continue; |