summaryrefslogtreecommitdiff
path: root/deps/uv/src/unix/loop.c
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2012-11-16 17:57:15 +0100
committerBen Noordhuis <info@bnoordhuis.nl>2012-11-16 17:58:42 +0100
commitb6a3b0a6297ee205aa34d357edd55b79f91cdf09 (patch)
treef962b088681f43d7a17615cad54fedbf938b00f8 /deps/uv/src/unix/loop.c
parente2bcff9aa75e51b9ba071330fe712180abed03e0 (diff)
downloadandroid-node-v8-b6a3b0a6297ee205aa34d357edd55b79f91cdf09.tar.gz
android-node-v8-b6a3b0a6297ee205aa34d357edd55b79f91cdf09.tar.bz2
android-node-v8-b6a3b0a6297ee205aa34d357edd55b79f91cdf09.zip
deps: upgrade libuv to 665a316
Diffstat (limited to 'deps/uv/src/unix/loop.c')
-rw-r--r--deps/uv/src/unix/loop.c39
1 files changed, 26 insertions, 13 deletions
diff --git a/deps/uv/src/unix/loop.c b/deps/uv/src/unix/loop.c
index c70513f3a9..e63f12a622 100644
--- a/deps/uv/src/unix/loop.c
+++ b/deps/uv/src/unix/loop.c
@@ -29,16 +29,9 @@
int uv__loop_init(uv_loop_t* loop, int default_loop) {
unsigned int i;
- int flags;
uv__signal_global_once_init();
-#if HAVE_KQUEUE
- flags = EVBACKEND_KQUEUE;
-#else
- flags = EVFLAG_AUTO;
-#endif
-
memset(loop, 0, sizeof(*loop));
RB_INIT(&loop->timer_handles);
ngx_queue_init(&loop->wq);
@@ -48,15 +41,24 @@ int uv__loop_init(uv_loop_t* loop, int default_loop) {
ngx_queue_init(&loop->check_handles);
ngx_queue_init(&loop->prepare_handles);
ngx_queue_init(&loop->handle_queue);
+
+ loop->nfds = 0;
+ loop->watchers = NULL;
+ loop->nwatchers = 0;
+ ngx_queue_init(&loop->pending_queue);
+ ngx_queue_init(&loop->watcher_queue);
+
loop->closing_handles = NULL;
loop->time = uv_hrtime() / 1000000;
loop->async_pipefd[0] = -1;
loop->async_pipefd[1] = -1;
loop->signal_pipefd[0] = -1;
loop->signal_pipefd[1] = -1;
+ loop->backend_fd = -1;
loop->emfile_fd = -1;
- loop->ev = (default_loop ? ev_default_loop : ev_loop_new)(flags);
- ev_set_userdata(loop->ev, loop);
+
+ if (uv__platform_loop_init(loop, default_loop))
+ return -1;
uv_signal_init(loop, &loop->child_watcher);
uv__handle_unref(&loop->child_watcher);
@@ -74,9 +76,6 @@ int uv__loop_init(uv_loop_t* loop, int default_loop) {
uv__handle_unref(&loop->wq_async);
loop->wq_async.flags |= UV__HANDLE_INTERNAL;
- if (uv__platform_loop_init(loop, default_loop))
- return -1;
-
return 0;
}
@@ -84,7 +83,6 @@ int uv__loop_init(uv_loop_t* loop, int default_loop) {
void uv__loop_delete(uv_loop_t* loop) {
uv__signal_loop_cleanup(loop);
uv__platform_loop_delete(loop);
- ev_loop_destroy(loop->ev);
if (loop->async_pipefd[0] != -1) {
close(loop->async_pipefd[0]);
@@ -101,8 +99,23 @@ void uv__loop_delete(uv_loop_t* loop) {
loop->emfile_fd = -1;
}
+ if (loop->backend_fd != -1) {
+ close(loop->backend_fd);
+ loop->backend_fd = -1;
+ }
+
uv_mutex_lock(&loop->wq_mutex);
assert(ngx_queue_empty(&loop->wq) && "thread pool work queue not empty!");
uv_mutex_unlock(&loop->wq_mutex);
uv_mutex_destroy(&loop->wq_mutex);
+
+#if 0
+ assert(ngx_queue_empty(&loop->pending_queue));
+ assert(ngx_queue_empty(&loop->watcher_queue));
+ assert(loop->nfds == 0);
+#endif
+
+ free(loop->watchers);
+ loop->watchers = NULL;
+ loop->nwatchers = 0;
}