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); |