diff options
author | Nick Mathewson <nickm@torproject.org> | 2010-07-29 18:12:05 -0400 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2010-07-29 18:12:04 -0400 |
commit | 9e725f72e72cb9b37b39915a260f9aee265f2c59 (patch) | |
tree | 8abf4a0bd3460f121fc748a1e0aa5457237a1a61 /epoll.c | |
parent | cc2379d2642d2b9d0cbb1098ce1b3095e14551b3 (diff) | |
download | libevent-9e725f72e72cb9b37b39915a260f9aee265f2c59.tar.gz |
Improve error message for failed epoll to make debugging easier.
Diffstat (limited to 'epoll.c')
-rw-r--r-- | epoll.c | 43 |
1 files changed, 33 insertions, 10 deletions
@@ -120,6 +120,30 @@ epoll_init(struct event_base *base) return (epollop); } +static const char * +change_to_string(int change) +{ + change &= (EV_CHANGE_ADD|EV_CHANGE_DEL); + if (change == EV_CHANGE_ADD) { + return "add"; + } else if (change == EV_CHANGE_DEL) { + return "del"; + } else if (change == 0) { + return "none"; + } else { + return "???"; + } +} + +static const char * +epoll_op_to_string(int op) +{ + return op == EPOLL_CTL_ADD?"ADD": + op == EPOLL_CTL_DEL?"DEL": + op == EPOLL_CTL_MOD?"MOD": + "???"; +} + static int epoll_apply_changes(struct event_base *base) { @@ -242,24 +266,23 @@ epoll_apply_changes(struct event_base *base) * got around to calling epoll_dispatch. */ event_debug((" DEL was unnecessary.")); } else { - event_warn("Epoll %s on fd %d failed. Old events were %d; read change was %d; write change was %d.", - op == EPOLL_CTL_ADD?"ADD": - op == EPOLL_CTL_DEL?"DEL": - op == EPOLL_CTL_MOD?"MOD":"???", + event_warn("Epoll %s on fd %d failed. Old events were %d; read change was %d (%s); write change was %d (%s).", + epoll_op_to_string(op), ch->fd, ch->old_events, - ch->read_change, ch->write_change - ); + ch->read_change, + change_to_string(ch->read_change), + ch->write_change, + change_to_string(ch->write_change)); } } else { event_debug(("Epoll %s(%d) on fd %d okay. [old events were %d; read change was %d; write change was %d]", - op == EPOLL_CTL_ADD?"ADD": - op == EPOLL_CTL_DEL?"DEL": - op == EPOLL_CTL_MOD?"MOD":"???", + epoll_op_to_string(op), (int)epev.events, (int)ch->fd, ch->old_events, - ch->read_change, ch->write_change)); + ch->read_change, + ch->write_change)); } } |