|
|
| version 1.1.1.1, 2012/02/21 23:02:54 | version 1.1.1.1.2.1, 2013/07/22 01:09:34 |
|---|---|
| Line 67 struct event_base *evsignal_base = NULL; | Line 67 struct event_base *evsignal_base = NULL; |
| static void evsignal_handler(int sig); | static void evsignal_handler(int sig); |
| #ifdef WIN32 | |
| #define error_is_eagain(err) \ | |
| ((err) == EAGAIN || (err) == WSAEWOULDBLOCK) | |
| #else | |
| #define error_is_eagain(err) ((err) == EAGAIN) | |
| #endif | |
| /* Callback for when the signal handler write a byte to our signaling socket */ | /* Callback for when the signal handler write a byte to our signaling socket */ |
| static void | static void |
| evsignal_cb(int fd, short what, void *arg) | evsignal_cb(int fd, short what, void *arg) |
| Line 79 evsignal_cb(int fd, short what, void *arg) | Line 86 evsignal_cb(int fd, short what, void *arg) |
| #endif | #endif |
| n = recv(fd, signals, sizeof(signals), 0); | n = recv(fd, signals, sizeof(signals), 0); |
| if (n == -1) | if (n == -1) { |
| event_err(1, "%s: read", __func__); | int err = EVUTIL_SOCKET_ERROR(); |
| if (! error_is_eagain(err)) | |
| event_err(1, "%s: read", __func__); | |
| } | |
| } | } |
| #ifdef HAVE_SETFD | #ifdef HAVE_SETFD |
| Line 125 evsignal_init(struct event_base *base) | Line 135 evsignal_init(struct event_base *base) |
| TAILQ_INIT(&base->sig.evsigevents[i]); | TAILQ_INIT(&base->sig.evsigevents[i]); |
| evutil_make_socket_nonblocking(base->sig.ev_signal_pair[0]); | evutil_make_socket_nonblocking(base->sig.ev_signal_pair[0]); |
| evutil_make_socket_nonblocking(base->sig.ev_signal_pair[1]); | |
| event_set(&base->sig.ev_signal, base->sig.ev_signal_pair[1], | event_set(&base->sig.ev_signal, base->sig.ev_signal_pair[1], |
| EV_READ | EV_PERSIST, evsignal_cb, &base->sig.ev_signal); | EV_READ | EV_PERSIST, evsignal_cb, &base->sig.ev_signal); |