unsigned int poll_io; // number of times poll() reported I/O events
unsigned int poll_exp; // number of times poll() sees an expired timeout (includes wake_*)
unsigned int poll_drop_fd; // poller dropped a dead FD from the update list
- unsigned int poll_dead_fd; // poller woke up with a dead FD
unsigned int poll_skip_fd; // poller skipped another thread's FD
unsigned int conn_dead; // conn_fd_handler woke up on an FD indicating a dead connection
unsigned int stream_calls; // calls to process_stream()
/* FD update status after fd_update_events() */
enum {
FD_UPDT_DONE = 0, // update done, nothing else to be done
- FD_UPDT_DEAD, // FD was already dead, ignore it
FD_UPDT_CLOSED, // FD was closed
FD_UPDT_MIGRATED, // FD was migrated, ignore it now
};
chunk_appendf(&trash, "poll_io:"); SHOW_TOT(thr, activity[thr].poll_io);
chunk_appendf(&trash, "poll_exp:"); SHOW_TOT(thr, activity[thr].poll_exp);
chunk_appendf(&trash, "poll_drop_fd:"); SHOW_TOT(thr, activity[thr].poll_drop_fd);
- chunk_appendf(&trash, "poll_dead_fd:"); SHOW_TOT(thr, activity[thr].poll_dead_fd);
chunk_appendf(&trash, "poll_skip_fd:"); SHOW_TOT(thr, activity[thr].poll_skip_fd);
chunk_appendf(&trash, "conn_dead:"); SHOW_TOT(thr, activity[thr].conn_dead);
chunk_appendf(&trash, "stream_calls:"); SHOW_TOT(thr, activity[thr].stream_calls);
ti->flags &= ~TI_FL_STUCK; // this thread is still running
- /* do nothing on remains of an old dead FD */
- if (!fdtab[fd].owner) {
- activity[tid].poll_dead_fd++;
- return FD_UPDT_DEAD;
- }
-
/* do nothing if the FD was taken over under us */
if (fd_set_running(fd) == -1) {
activity[tid].poll_skip_fd++;