unix: use POLL{IN,OUT,etc} constants directly
Remove the UV__POLL defines and use POLL{IN,OUT,etc} directly.
On Linux, we lean on the fact that the POLL constants correspond
one-to-one to their EPOLL counterparts.
Fixes: https://github.com/libuv/libuv/issues/816
PR-URL: https://github.com/libuv/libuv/pull/817
Reviewed-By: Saúl Ibarra Corretgé <saghul@gmail.com>
This commit is contained in:
parent
3819e48277
commit
375ba2d76d
@ -845,7 +845,7 @@ int uv_fs_event_start(uv_fs_event_t* handle,
|
||||
handle->path = uv__strdup(filename);
|
||||
handle->cb = cb;
|
||||
|
||||
uv__io_start(handle->loop, &handle->event_watcher, UV__POLLIN);
|
||||
uv__io_start(handle->loop, &handle->event_watcher, POLLIN);
|
||||
|
||||
return 0;
|
||||
#else
|
||||
|
||||
@ -223,7 +223,7 @@ int uv__async_start(uv_loop_t* loop, struct uv__async* wa, uv__async_cb cb) {
|
||||
return err;
|
||||
|
||||
uv__io_init(&wa->io_watcher, uv__async_io, pipefd[0]);
|
||||
uv__io_start(loop, &wa->io_watcher, UV__POLLIN);
|
||||
uv__io_start(loop, &wa->io_watcher, POLLIN);
|
||||
wa->wfd = pipefd[1];
|
||||
wa->cb = cb;
|
||||
|
||||
@ -241,7 +241,7 @@ void uv__async_stop(uv_loop_t* loop, struct uv__async* wa) {
|
||||
wa->wfd = -1;
|
||||
}
|
||||
|
||||
uv__io_stop(loop, &wa->io_watcher, UV__POLLIN);
|
||||
uv__io_stop(loop, &wa->io_watcher, POLLIN);
|
||||
uv__close(wa->io_watcher.fd);
|
||||
wa->io_watcher.fd = -1;
|
||||
}
|
||||
|
||||
@ -762,7 +762,7 @@ static int uv__run_pending(uv_loop_t* loop) {
|
||||
QUEUE_REMOVE(q);
|
||||
QUEUE_INIT(q);
|
||||
w = QUEUE_DATA(q, uv__io_t, pending_queue);
|
||||
w->cb(loop, w, UV__POLLOUT);
|
||||
w->cb(loop, w, POLLOUT);
|
||||
}
|
||||
|
||||
return 1;
|
||||
@ -833,7 +833,7 @@ void uv__io_init(uv__io_t* w, uv__io_cb cb, int fd) {
|
||||
|
||||
|
||||
void uv__io_start(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
||||
assert(0 == (events & ~(UV__POLLIN | UV__POLLOUT | UV__POLLRDHUP)));
|
||||
assert(0 == (events & ~(POLLIN | POLLOUT | UV__POLLRDHUP)));
|
||||
assert(0 != events);
|
||||
assert(w->fd >= 0);
|
||||
assert(w->fd < INT_MAX);
|
||||
@ -866,7 +866,7 @@ void uv__io_start(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
||||
|
||||
|
||||
void uv__io_stop(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
||||
assert(0 == (events & ~(UV__POLLIN | UV__POLLOUT | UV__POLLRDHUP)));
|
||||
assert(0 == (events & ~(POLLIN | POLLOUT | UV__POLLRDHUP)));
|
||||
assert(0 != events);
|
||||
|
||||
if (w->fd == -1)
|
||||
@ -898,7 +898,7 @@ void uv__io_stop(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
||||
|
||||
|
||||
void uv__io_close(uv_loop_t* loop, uv__io_t* w) {
|
||||
uv__io_stop(loop, w, UV__POLLIN | UV__POLLOUT | UV__POLLRDHUP);
|
||||
uv__io_stop(loop, w, POLLIN | POLLOUT | UV__POLLRDHUP);
|
||||
QUEUE_REMOVE(&w->pending_queue);
|
||||
|
||||
/* Remove stale events for this file descriptor */
|
||||
@ -913,7 +913,7 @@ void uv__io_feed(uv_loop_t* loop, uv__io_t* w) {
|
||||
|
||||
|
||||
int uv__io_active(const uv__io_t* w, unsigned int events) {
|
||||
assert(0 == (events & ~(UV__POLLIN | UV__POLLOUT | UV__POLLRDHUP)));
|
||||
assert(0 == (events & ~(POLLIN | POLLOUT | UV__POLLRDHUP)));
|
||||
assert(0 != events);
|
||||
return 0 != (w->pevents & events);
|
||||
}
|
||||
|
||||
@ -44,9 +44,11 @@
|
||||
#endif /* __sun */
|
||||
|
||||
#if defined(_AIX)
|
||||
#define reqevents events
|
||||
#define rtnevents revents
|
||||
#include <sys/poll.h>
|
||||
# define reqevents events
|
||||
# define rtnevents revents
|
||||
# include <sys/poll.h>
|
||||
#else
|
||||
# include <poll.h>
|
||||
#endif /* _AIX */
|
||||
|
||||
#if defined(__APPLE__) && !TARGET_OS_IPHONE
|
||||
@ -89,43 +91,11 @@
|
||||
# define UV_UNUSED(declaration) declaration
|
||||
#endif
|
||||
|
||||
#if defined(__linux__)
|
||||
# define UV__POLLIN UV__EPOLLIN
|
||||
# define UV__POLLOUT UV__EPOLLOUT
|
||||
# define UV__POLLERR UV__EPOLLERR
|
||||
# define UV__POLLHUP UV__EPOLLHUP
|
||||
# define UV__POLLRDHUP UV__EPOLLRDHUP
|
||||
#endif
|
||||
|
||||
#if defined(__sun) || defined(_AIX)
|
||||
# define UV__POLLIN POLLIN
|
||||
# define UV__POLLOUT POLLOUT
|
||||
# define UV__POLLERR POLLERR
|
||||
# define UV__POLLHUP POLLHUP
|
||||
#endif
|
||||
|
||||
#ifndef UV__POLLIN
|
||||
# define UV__POLLIN 1
|
||||
#endif
|
||||
|
||||
#ifndef UV__POLLOUT
|
||||
# define UV__POLLOUT 2
|
||||
#endif
|
||||
|
||||
#ifndef UV__POLLERR
|
||||
# define UV__POLLERR 4
|
||||
#endif
|
||||
|
||||
#ifndef UV__POLLHUP
|
||||
# define UV__POLLHUP 8
|
||||
#endif
|
||||
|
||||
#ifndef UV__POLLRDHUP
|
||||
# ifdef POLLRDHUP
|
||||
# define UV__POLLRDHUP POLLRDHUP
|
||||
# else
|
||||
# define UV__POLLRDHUP 0x200
|
||||
# endif
|
||||
/* Leans on the fact that, on Linux, POLLRDHUP == EPOLLRDHUP. */
|
||||
#ifdef POLLRDHUP
|
||||
# define UV__POLLRDHUP POLLRDHUP
|
||||
#else
|
||||
# define UV__POLLRDHUP 0x2000
|
||||
#endif
|
||||
|
||||
#if !defined(O_CLOEXEC) && defined(__FreeBSD__)
|
||||
|
||||
@ -103,7 +103,7 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
||||
assert(w->fd >= 0);
|
||||
assert(w->fd < (int) loop->nwatchers);
|
||||
|
||||
if ((w->events & UV__POLLIN) == 0 && (w->pevents & UV__POLLIN) != 0) {
|
||||
if ((w->events & POLLIN) == 0 && (w->pevents & POLLIN) != 0) {
|
||||
filter = EVFILT_READ;
|
||||
fflags = 0;
|
||||
op = EV_ADD;
|
||||
@ -124,7 +124,7 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
||||
}
|
||||
}
|
||||
|
||||
if ((w->events & UV__POLLOUT) == 0 && (w->pevents & UV__POLLOUT) != 0) {
|
||||
if ((w->events & POLLOUT) == 0 && (w->pevents & POLLOUT) != 0) {
|
||||
EV_SET(events + nevents, w->fd, EVFILT_WRITE, EV_ADD, 0, 0, 0);
|
||||
|
||||
if (++nevents == ARRAY_SIZE(events)) {
|
||||
@ -219,8 +219,8 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
||||
}
|
||||
|
||||
if (ev->filter == EVFILT_VNODE) {
|
||||
assert(w->events == UV__POLLIN);
|
||||
assert(w->pevents == UV__POLLIN);
|
||||
assert(w->events == POLLIN);
|
||||
assert(w->pevents == POLLIN);
|
||||
w->cb(loop, w, ev->fflags); /* XXX always uv__fs_event() */
|
||||
nevents++;
|
||||
continue;
|
||||
@ -229,8 +229,8 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
||||
revents = 0;
|
||||
|
||||
if (ev->filter == EVFILT_READ) {
|
||||
if (w->pevents & UV__POLLIN) {
|
||||
revents |= UV__POLLIN;
|
||||
if (w->pevents & POLLIN) {
|
||||
revents |= POLLIN;
|
||||
w->rcount = ev->data;
|
||||
} else {
|
||||
/* TODO batch up */
|
||||
@ -243,8 +243,8 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
||||
}
|
||||
|
||||
if (ev->filter == EVFILT_WRITE) {
|
||||
if (w->pevents & UV__POLLOUT) {
|
||||
revents |= UV__POLLOUT;
|
||||
if (w->pevents & POLLOUT) {
|
||||
revents |= POLLOUT;
|
||||
w->wcount = ev->data;
|
||||
} else {
|
||||
/* TODO batch up */
|
||||
@ -257,7 +257,7 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
||||
}
|
||||
|
||||
if (ev->flags & EV_ERROR)
|
||||
revents |= UV__POLLERR;
|
||||
revents |= POLLERR;
|
||||
|
||||
if ((ev->flags & EV_EOF) && (w->pevents & UV__POLLRDHUP))
|
||||
revents |= UV__POLLRDHUP;
|
||||
@ -409,7 +409,7 @@ int uv_fs_event_start(uv_fs_event_t* handle,
|
||||
fallback:
|
||||
#endif /* defined(__APPLE__) */
|
||||
|
||||
uv__io_start(handle->loop, &handle->event_watcher, UV__POLLIN);
|
||||
uv__io_start(handle->loop, &handle->event_watcher, POLLIN);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -18,6 +18,11 @@
|
||||
* IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* We lean on the fact that POLL{IN,OUT,ERR,HUP} correspond with their
|
||||
* EPOLL* counterparts. We use the POLL* variants in this file because that
|
||||
* is what libuv uses elsewhere and it avoids a dependency on <sys/epoll.h>.
|
||||
*/
|
||||
|
||||
#include "uv.h"
|
||||
#include "internal.h"
|
||||
|
||||
@ -102,7 +107,7 @@ int uv__platform_loop_init(uv_loop_t* loop) {
|
||||
|
||||
void uv__platform_loop_delete(uv_loop_t* loop) {
|
||||
if (loop->inotify_fd == -1) return;
|
||||
uv__io_stop(loop, &loop->inotify_read_watcher, UV__POLLIN);
|
||||
uv__io_stop(loop, &loop->inotify_read_watcher, POLLIN);
|
||||
uv__close(loop->inotify_fd);
|
||||
loop->inotify_fd = -1;
|
||||
}
|
||||
@ -144,7 +149,7 @@ int uv__io_check_fd(uv_loop_t* loop, int fd) {
|
||||
struct uv__epoll_event e;
|
||||
int rc;
|
||||
|
||||
e.events = UV__EPOLLIN;
|
||||
e.events = POLLIN;
|
||||
e.data = -1;
|
||||
|
||||
rc = 0;
|
||||
@ -341,7 +346,7 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
||||
* the current watcher. Also, filters out events that users has not
|
||||
* requested us to watch.
|
||||
*/
|
||||
pe->events &= w->pevents | UV__POLLERR | UV__POLLHUP;
|
||||
pe->events &= w->pevents | POLLERR | POLLHUP;
|
||||
|
||||
/* Work around an epoll quirk where it sometimes reports just the
|
||||
* EPOLLERR or EPOLLHUP event. In order to force the event loop to
|
||||
@ -358,8 +363,8 @@ void uv__io_poll(uv_loop_t* loop, int timeout) {
|
||||
* needs to remember the error/hangup event. We should get that for
|
||||
* free when we switch over to edge-triggered I/O.
|
||||
*/
|
||||
if (pe->events == UV__EPOLLERR || pe->events == UV__EPOLLHUP)
|
||||
pe->events |= w->pevents & (UV__EPOLLIN | UV__EPOLLOUT);
|
||||
if (pe->events == POLLERR || pe->events == POLLHUP)
|
||||
pe->events |= w->pevents & (POLLIN | POLLOUT);
|
||||
|
||||
if (pe->events != 0) {
|
||||
w->cb(loop, w, pe->events);
|
||||
|
||||
@ -102,7 +102,7 @@ static int init_inotify(uv_loop_t* loop) {
|
||||
|
||||
loop->inotify_fd = err;
|
||||
uv__io_init(&loop->inotify_read_watcher, uv__inotify_read, loop->inotify_fd);
|
||||
uv__io_start(loop, &loop->inotify_read_watcher, UV__POLLIN);
|
||||
uv__io_start(loop, &loop->inotify_read_watcher, POLLIN);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -72,14 +72,6 @@
|
||||
#define UV__EPOLL_CTL_DEL 2
|
||||
#define UV__EPOLL_CTL_MOD 3
|
||||
|
||||
#define UV__EPOLLIN 1
|
||||
#define UV__EPOLLOUT 4
|
||||
#define UV__EPOLLERR 8
|
||||
#define UV__EPOLLHUP 16
|
||||
#define UV__EPOLLRDHUP 0x2000
|
||||
#define UV__EPOLLONESHOT 0x40000000
|
||||
#define UV__EPOLLET 0x80000000
|
||||
|
||||
/* inotify flags */
|
||||
#define UV__IN_ACCESS 0x001
|
||||
#define UV__IN_MODIFY 0x002
|
||||
|
||||
@ -102,7 +102,7 @@ int uv_pipe_listen(uv_pipe_t* handle, int backlog, uv_connection_cb cb) {
|
||||
|
||||
handle->connection_cb = cb;
|
||||
handle->io_watcher.cb = uv__server_io;
|
||||
uv__io_start(handle->loop, &handle->io_watcher, UV__POLLIN);
|
||||
uv__io_start(handle->loop, &handle->io_watcher, POLLIN);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -185,7 +185,7 @@ void uv_pipe_connect(uv_connect_t* req,
|
||||
}
|
||||
|
||||
if (err == 0)
|
||||
uv__io_start(handle->loop, &handle->io_watcher, UV__POLLIN | UV__POLLOUT);
|
||||
uv__io_start(handle->loop, &handle->io_watcher, POLLIN | POLLOUT);
|
||||
|
||||
out:
|
||||
handle->delayed_error = err;
|
||||
|
||||
@ -33,17 +33,17 @@ static void uv__poll_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
||||
|
||||
handle = container_of(w, uv_poll_t, io_watcher);
|
||||
|
||||
if (events & UV__POLLERR) {
|
||||
uv__io_stop(loop, w, UV__POLLIN | UV__POLLOUT | UV__POLLRDHUP);
|
||||
if (events & POLLERR) {
|
||||
uv__io_stop(loop, w, POLLIN | POLLOUT | UV__POLLRDHUP);
|
||||
uv__handle_stop(handle);
|
||||
handle->poll_cb(handle, -EBADF, 0);
|
||||
return;
|
||||
}
|
||||
|
||||
pevents = 0;
|
||||
if (events & UV__POLLIN)
|
||||
if (events & POLLIN)
|
||||
pevents |= UV_READABLE;
|
||||
if (events & UV__POLLOUT)
|
||||
if (events & POLLOUT)
|
||||
pevents |= UV_WRITABLE;
|
||||
if (events & UV__POLLRDHUP)
|
||||
pevents |= UV_DISCONNECT;
|
||||
@ -79,7 +79,7 @@ int uv_poll_init_socket(uv_loop_t* loop, uv_poll_t* handle,
|
||||
static void uv__poll_stop(uv_poll_t* handle) {
|
||||
uv__io_stop(handle->loop,
|
||||
&handle->io_watcher,
|
||||
UV__POLLIN | UV__POLLOUT | UV__POLLRDHUP);
|
||||
POLLIN | POLLOUT | UV__POLLRDHUP);
|
||||
uv__handle_stop(handle);
|
||||
}
|
||||
|
||||
@ -104,9 +104,9 @@ int uv_poll_start(uv_poll_t* handle, int pevents, uv_poll_cb poll_cb) {
|
||||
|
||||
events = 0;
|
||||
if (pevents & UV_READABLE)
|
||||
events |= UV__POLLIN;
|
||||
events |= POLLIN;
|
||||
if (pevents & UV_WRITABLE)
|
||||
events |= UV__POLLOUT;
|
||||
events |= POLLOUT;
|
||||
if (pevents & UV_DISCONNECT)
|
||||
events |= UV__POLLRDHUP;
|
||||
|
||||
|
||||
@ -222,7 +222,7 @@ static int uv__signal_loop_once_init(uv_loop_t* loop) {
|
||||
uv__io_init(&loop->signal_io_watcher,
|
||||
uv__signal_event,
|
||||
loop->signal_pipefd[0]);
|
||||
uv__io_start(loop, &loop->signal_io_watcher, UV__POLLIN);
|
||||
uv__io_start(loop, &loop->signal_io_watcher, POLLIN);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -159,9 +159,9 @@ static void uv__stream_osx_select(void* arg) {
|
||||
memset(s->sread, 0, s->sread_sz);
|
||||
memset(s->swrite, 0, s->swrite_sz);
|
||||
|
||||
if (uv__io_active(&stream->io_watcher, UV__POLLIN))
|
||||
if (uv__io_active(&stream->io_watcher, POLLIN))
|
||||
FD_SET(fd, s->sread);
|
||||
if (uv__io_active(&stream->io_watcher, UV__POLLOUT))
|
||||
if (uv__io_active(&stream->io_watcher, POLLOUT))
|
||||
FD_SET(fd, s->swrite);
|
||||
FD_SET(s->int_fd, s->sread);
|
||||
|
||||
@ -202,9 +202,9 @@ static void uv__stream_osx_select(void* arg) {
|
||||
/* Handle events */
|
||||
events = 0;
|
||||
if (FD_ISSET(fd, s->sread))
|
||||
events |= UV__POLLIN;
|
||||
events |= POLLIN;
|
||||
if (FD_ISSET(fd, s->swrite))
|
||||
events |= UV__POLLOUT;
|
||||
events |= POLLOUT;
|
||||
|
||||
assert(events != 0 || FD_ISSET(s->int_fd, s->sread));
|
||||
if (events != 0) {
|
||||
@ -233,14 +233,14 @@ static void uv__stream_osx_select_cb(uv_async_t* handle) {
|
||||
ACCESS_ONCE(int, s->events) = 0;
|
||||
|
||||
assert(events != 0);
|
||||
assert(events == (events & (UV__POLLIN | UV__POLLOUT)));
|
||||
assert(events == (events & (POLLIN | POLLOUT)));
|
||||
|
||||
/* Invoke callback on event-loop */
|
||||
if ((events & UV__POLLIN) && uv__io_active(&stream->io_watcher, UV__POLLIN))
|
||||
uv__stream_io(stream->loop, &stream->io_watcher, UV__POLLIN);
|
||||
if ((events & POLLIN) && uv__io_active(&stream->io_watcher, POLLIN))
|
||||
uv__stream_io(stream->loop, &stream->io_watcher, POLLIN);
|
||||
|
||||
if ((events & UV__POLLOUT) && uv__io_active(&stream->io_watcher, UV__POLLOUT))
|
||||
uv__stream_io(stream->loop, &stream->io_watcher, UV__POLLOUT);
|
||||
if ((events & POLLOUT) && uv__io_active(&stream->io_watcher, POLLOUT))
|
||||
uv__stream_io(stream->loop, &stream->io_watcher, POLLOUT);
|
||||
|
||||
if (stream->flags & UV_CLOSING)
|
||||
return;
|
||||
@ -437,7 +437,7 @@ void uv__stream_flush_write_queue(uv_stream_t* stream, int error) {
|
||||
|
||||
|
||||
void uv__stream_destroy(uv_stream_t* stream) {
|
||||
assert(!uv__io_active(&stream->io_watcher, UV__POLLIN | UV__POLLOUT));
|
||||
assert(!uv__io_active(&stream->io_watcher, POLLIN | POLLOUT));
|
||||
assert(stream->flags & UV_CLOSED);
|
||||
|
||||
if (stream->connect_req) {
|
||||
@ -511,11 +511,11 @@ void uv__server_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
||||
int err;
|
||||
|
||||
stream = container_of(w, uv_stream_t, io_watcher);
|
||||
assert(events == UV__POLLIN);
|
||||
assert(events == POLLIN);
|
||||
assert(stream->accepted_fd == -1);
|
||||
assert(!(stream->flags & UV_CLOSING));
|
||||
|
||||
uv__io_start(stream->loop, &stream->io_watcher, UV__POLLIN);
|
||||
uv__io_start(stream->loop, &stream->io_watcher, POLLIN);
|
||||
|
||||
/* connection_cb can close the server socket while we're
|
||||
* in the loop so check it on each iteration.
|
||||
@ -552,7 +552,7 @@ void uv__server_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
||||
|
||||
if (stream->accepted_fd != -1) {
|
||||
/* The user hasn't yet accepted called uv_accept() */
|
||||
uv__io_stop(loop, &stream->io_watcher, UV__POLLIN);
|
||||
uv__io_stop(loop, &stream->io_watcher, POLLIN);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -626,7 +626,7 @@ done:
|
||||
} else {
|
||||
server->accepted_fd = -1;
|
||||
if (err == 0)
|
||||
uv__io_start(server->loop, &server->io_watcher, UV__POLLIN);
|
||||
uv__io_start(server->loop, &server->io_watcher, POLLIN);
|
||||
}
|
||||
return err;
|
||||
}
|
||||
@ -660,7 +660,7 @@ static void uv__drain(uv_stream_t* stream) {
|
||||
int err;
|
||||
|
||||
assert(QUEUE_EMPTY(&stream->write_queue));
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, UV__POLLOUT);
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, POLLOUT);
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
|
||||
/* Shutdown? */
|
||||
@ -846,8 +846,8 @@ start:
|
||||
/* Error */
|
||||
req->error = -errno;
|
||||
uv__write_req_finish(req);
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, UV__POLLOUT);
|
||||
if (!uv__io_active(&stream->io_watcher, UV__POLLIN))
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, POLLOUT);
|
||||
if (!uv__io_active(&stream->io_watcher, POLLIN))
|
||||
uv__handle_stop(stream);
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
return;
|
||||
@ -910,7 +910,7 @@ start:
|
||||
assert(!(stream->flags & UV_STREAM_BLOCKING));
|
||||
|
||||
/* We're not done. */
|
||||
uv__io_start(stream->loop, &stream->io_watcher, UV__POLLOUT);
|
||||
uv__io_start(stream->loop, &stream->io_watcher, POLLOUT);
|
||||
|
||||
/* Notify select() thread about state change */
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
@ -989,8 +989,8 @@ uv_handle_type uv__handle_type(int fd) {
|
||||
|
||||
static void uv__stream_eof(uv_stream_t* stream, const uv_buf_t* buf) {
|
||||
stream->flags |= UV_STREAM_READ_EOF;
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, UV__POLLIN);
|
||||
if (!uv__io_active(&stream->io_watcher, UV__POLLOUT))
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, POLLIN);
|
||||
if (!uv__io_active(&stream->io_watcher, POLLOUT))
|
||||
uv__handle_stop(stream);
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
stream->read_cb(stream, UV_EOF, buf);
|
||||
@ -1159,7 +1159,7 @@ static void uv__read(uv_stream_t* stream) {
|
||||
if (errno == EAGAIN || errno == EWOULDBLOCK) {
|
||||
/* Wait for the next one. */
|
||||
if (stream->flags & UV_STREAM_READING) {
|
||||
uv__io_start(stream->loop, &stream->io_watcher, UV__POLLIN);
|
||||
uv__io_start(stream->loop, &stream->io_watcher, POLLIN);
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
}
|
||||
stream->read_cb(stream, 0, &buf);
|
||||
@ -1168,8 +1168,8 @@ static void uv__read(uv_stream_t* stream) {
|
||||
stream->read_cb(stream, -errno, &buf);
|
||||
if (stream->flags & UV_STREAM_READING) {
|
||||
stream->flags &= ~UV_STREAM_READING;
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, UV__POLLIN);
|
||||
if (!uv__io_active(&stream->io_watcher, UV__POLLOUT))
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, POLLIN);
|
||||
if (!uv__io_active(&stream->io_watcher, POLLOUT))
|
||||
uv__handle_stop(stream);
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
}
|
||||
@ -1230,7 +1230,7 @@ int uv_shutdown(uv_shutdown_t* req, uv_stream_t* stream, uv_shutdown_cb cb) {
|
||||
stream->shutdown_req = req;
|
||||
stream->flags |= UV_STREAM_SHUTTING;
|
||||
|
||||
uv__io_start(stream->loop, &stream->io_watcher, UV__POLLOUT);
|
||||
uv__io_start(stream->loop, &stream->io_watcher, POLLOUT);
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
|
||||
return 0;
|
||||
@ -1255,7 +1255,7 @@ static void uv__stream_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
||||
assert(uv__stream_fd(stream) >= 0);
|
||||
|
||||
/* Ignore POLLHUP here. Even it it's set, there may still be data to read. */
|
||||
if (events & (UV__POLLIN | UV__POLLERR | UV__POLLHUP))
|
||||
if (events & (POLLIN | POLLERR | POLLHUP))
|
||||
uv__read(stream);
|
||||
|
||||
if (uv__stream_fd(stream) == -1)
|
||||
@ -1267,7 +1267,7 @@ static void uv__stream_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
||||
* have to do anything. If the partial read flag is not set, we can't
|
||||
* report the EOF yet because there is still data to read.
|
||||
*/
|
||||
if ((events & UV__POLLHUP) &&
|
||||
if ((events & POLLHUP) &&
|
||||
(stream->flags & UV_STREAM_READING) &&
|
||||
(stream->flags & UV_STREAM_READ_PARTIAL) &&
|
||||
!(stream->flags & UV_STREAM_READ_EOF)) {
|
||||
@ -1278,7 +1278,7 @@ static void uv__stream_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
||||
if (uv__stream_fd(stream) == -1)
|
||||
return; /* read_cb closed stream. */
|
||||
|
||||
if (events & (UV__POLLOUT | UV__POLLERR | UV__POLLHUP)) {
|
||||
if (events & (POLLOUT | POLLERR | POLLHUP)) {
|
||||
uv__write(stream);
|
||||
uv__write_callbacks(stream);
|
||||
|
||||
@ -1327,7 +1327,7 @@ static void uv__stream_connect(uv_stream_t* stream) {
|
||||
uv__req_unregister(stream->loop, req);
|
||||
|
||||
if (error < 0 || QUEUE_EMPTY(&stream->write_queue)) {
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, UV__POLLOUT);
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, POLLOUT);
|
||||
}
|
||||
|
||||
if (req->cb)
|
||||
@ -1422,7 +1422,7 @@ int uv_write2(uv_write_t* req,
|
||||
* sufficiently flushed in uv__write.
|
||||
*/
|
||||
assert(!(stream->flags & UV_STREAM_BLOCKING));
|
||||
uv__io_start(stream->loop, &stream->io_watcher, UV__POLLOUT);
|
||||
uv__io_start(stream->loop, &stream->io_watcher, POLLOUT);
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
}
|
||||
|
||||
@ -1461,7 +1461,7 @@ int uv_try_write(uv_stream_t* stream,
|
||||
if (stream->connect_req != NULL || stream->write_queue_size != 0)
|
||||
return -EAGAIN;
|
||||
|
||||
has_pollout = uv__io_active(&stream->io_watcher, UV__POLLOUT);
|
||||
has_pollout = uv__io_active(&stream->io_watcher, POLLOUT);
|
||||
|
||||
r = uv_write(&req, stream, bufs, nbufs, uv_try_write_cb);
|
||||
if (r != 0)
|
||||
@ -1485,7 +1485,7 @@ int uv_try_write(uv_stream_t* stream,
|
||||
|
||||
/* Do not poll for writable, if we wasn't before calling this */
|
||||
if (!has_pollout) {
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, UV__POLLOUT);
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, POLLOUT);
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
}
|
||||
|
||||
@ -1520,7 +1520,7 @@ int uv_read_start(uv_stream_t* stream,
|
||||
stream->read_cb = read_cb;
|
||||
stream->alloc_cb = alloc_cb;
|
||||
|
||||
uv__io_start(stream->loop, &stream->io_watcher, UV__POLLIN);
|
||||
uv__io_start(stream->loop, &stream->io_watcher, POLLIN);
|
||||
uv__handle_start(stream);
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
|
||||
@ -1533,8 +1533,8 @@ int uv_read_stop(uv_stream_t* stream) {
|
||||
return 0;
|
||||
|
||||
stream->flags &= ~UV_STREAM_READING;
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, UV__POLLIN);
|
||||
if (!uv__io_active(&stream->io_watcher, UV__POLLOUT))
|
||||
uv__io_stop(stream->loop, &stream->io_watcher, POLLIN);
|
||||
if (!uv__io_active(&stream->io_watcher, POLLOUT))
|
||||
uv__handle_stop(stream);
|
||||
uv__stream_osx_interrupt_select(stream);
|
||||
|
||||
@ -1621,7 +1621,7 @@ void uv__stream_close(uv_stream_t* handle) {
|
||||
handle->queued_fds = NULL;
|
||||
}
|
||||
|
||||
assert(!uv__io_active(&handle->io_watcher, UV__POLLIN | UV__POLLOUT));
|
||||
assert(!uv__io_active(&handle->io_watcher, POLLIN | POLLOUT));
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -456,7 +456,7 @@ int uv_fs_event_start(uv_fs_event_t* handle,
|
||||
|
||||
if (first_run) {
|
||||
uv__io_init(&handle->loop->fs_event_watcher, uv__fs_event_read, portfd);
|
||||
uv__io_start(handle->loop, &handle->loop->fs_event_watcher, UV__POLLIN);
|
||||
uv__io_start(handle->loop, &handle->loop->fs_event_watcher, POLLIN);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
||||
@ -181,7 +181,7 @@ int uv__tcp_connect(uv_connect_t* req,
|
||||
QUEUE_INIT(&req->queue);
|
||||
handle->connect_req = req;
|
||||
|
||||
uv__io_start(handle->loop, &handle->io_watcher, UV__POLLOUT);
|
||||
uv__io_start(handle->loop, &handle->io_watcher, POLLOUT);
|
||||
|
||||
if (handle->delayed_error)
|
||||
uv__io_feed(handle->loop, &handle->io_watcher);
|
||||
@ -273,7 +273,7 @@ int uv_tcp_listen(uv_tcp_t* tcp, int backlog, uv_connection_cb cb) {
|
||||
|
||||
/* Start listening for connections. */
|
||||
tcp->io_watcher.cb = uv__server_io;
|
||||
uv__io_start(tcp->loop, &tcp->io_watcher, UV__POLLIN);
|
||||
uv__io_start(tcp->loop, &tcp->io_watcher, POLLIN);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ void uv__udp_finish_close(uv_udp_t* handle) {
|
||||
uv_udp_send_t* req;
|
||||
QUEUE* q;
|
||||
|
||||
assert(!uv__io_active(&handle->io_watcher, UV__POLLIN | UV__POLLOUT));
|
||||
assert(!uv__io_active(&handle->io_watcher, POLLIN | POLLOUT));
|
||||
assert(handle->io_watcher.fd == -1);
|
||||
|
||||
while (!QUEUE_EMPTY(&handle->write_queue)) {
|
||||
@ -120,8 +120,8 @@ static void uv__udp_run_completed(uv_udp_t* handle) {
|
||||
|
||||
if (QUEUE_EMPTY(&handle->write_queue)) {
|
||||
/* Pending queue and completion queue empty, stop watcher. */
|
||||
uv__io_stop(handle->loop, &handle->io_watcher, UV__POLLOUT);
|
||||
if (!uv__io_active(&handle->io_watcher, UV__POLLIN))
|
||||
uv__io_stop(handle->loop, &handle->io_watcher, POLLOUT);
|
||||
if (!uv__io_active(&handle->io_watcher, POLLIN))
|
||||
uv__handle_stop(handle);
|
||||
}
|
||||
|
||||
@ -135,10 +135,10 @@ static void uv__udp_io(uv_loop_t* loop, uv__io_t* w, unsigned int revents) {
|
||||
handle = container_of(w, uv_udp_t, io_watcher);
|
||||
assert(handle->type == UV_UDP);
|
||||
|
||||
if (revents & UV__POLLIN)
|
||||
if (revents & POLLIN)
|
||||
uv__udp_recvmsg(handle);
|
||||
|
||||
if (revents & UV__POLLOUT) {
|
||||
if (revents & POLLOUT) {
|
||||
uv__udp_sendmsg(handle);
|
||||
uv__udp_run_completed(handle);
|
||||
}
|
||||
@ -424,7 +424,7 @@ int uv__udp_send(uv_udp_send_t* req,
|
||||
if (empty_queue && !(handle->flags & UV_UDP_PROCESSING)) {
|
||||
uv__udp_sendmsg(handle);
|
||||
} else {
|
||||
uv__io_start(handle->loop, &handle->io_watcher, UV__POLLOUT);
|
||||
uv__io_start(handle->loop, &handle->io_watcher, POLLOUT);
|
||||
}
|
||||
|
||||
return 0;
|
||||
@ -843,7 +843,7 @@ int uv__udp_recv_start(uv_udp_t* handle,
|
||||
if (alloc_cb == NULL || recv_cb == NULL)
|
||||
return -EINVAL;
|
||||
|
||||
if (uv__io_active(&handle->io_watcher, UV__POLLIN))
|
||||
if (uv__io_active(&handle->io_watcher, POLLIN))
|
||||
return -EALREADY; /* FIXME(bnoordhuis) Should be -EBUSY. */
|
||||
|
||||
err = uv__udp_maybe_deferred_bind(handle, AF_INET, 0);
|
||||
@ -853,7 +853,7 @@ int uv__udp_recv_start(uv_udp_t* handle,
|
||||
handle->alloc_cb = alloc_cb;
|
||||
handle->recv_cb = recv_cb;
|
||||
|
||||
uv__io_start(handle->loop, &handle->io_watcher, UV__POLLIN);
|
||||
uv__io_start(handle->loop, &handle->io_watcher, POLLIN);
|
||||
uv__handle_start(handle);
|
||||
|
||||
return 0;
|
||||
@ -861,9 +861,9 @@ int uv__udp_recv_start(uv_udp_t* handle,
|
||||
|
||||
|
||||
int uv__udp_recv_stop(uv_udp_t* handle) {
|
||||
uv__io_stop(handle->loop, &handle->io_watcher, UV__POLLIN);
|
||||
uv__io_stop(handle->loop, &handle->io_watcher, POLLIN);
|
||||
|
||||
if (!uv__io_active(&handle->io_watcher, UV__POLLOUT))
|
||||
if (!uv__io_active(&handle->io_watcher, POLLOUT))
|
||||
uv__handle_stop(handle);
|
||||
|
||||
handle->alloc_cb = NULL;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user