diff options
Diffstat (limited to 'deps/uv/src/unix/loop.c')
-rw-r--r-- | deps/uv/src/unix/loop.c | 75 |
1 files changed, 2 insertions, 73 deletions
diff --git a/deps/uv/src/unix/loop.c b/deps/uv/src/unix/loop.c index 616cf5bc43..7e167d049e 100644 --- a/deps/uv/src/unix/loop.c +++ b/deps/uv/src/unix/loop.c @@ -27,78 +27,7 @@ #include <string.h> #include <unistd.h> -static int uv__loop_init(uv_loop_t* loop, int default_loop); -static void uv__loop_close(uv_loop_t* loop); - -static uv_loop_t default_loop_struct; -static uv_loop_t* default_loop_ptr; - - -uv_loop_t* uv_default_loop(void) { - if (default_loop_ptr != NULL) - return default_loop_ptr; - - if (uv__loop_init(&default_loop_struct, /* default_loop? */ 1)) - return NULL; - - default_loop_ptr = &default_loop_struct; - return default_loop_ptr; -} - - int uv_loop_init(uv_loop_t* loop) { - return uv__loop_init(loop, /* default_loop? */ 0); -} - - -int uv_loop_close(uv_loop_t* loop) { - QUEUE* q; - uv_handle_t* h; - if (!QUEUE_EMPTY(&(loop)->active_reqs)) - return -EBUSY; - QUEUE_FOREACH(q, &loop->handle_queue) { - h = QUEUE_DATA(q, uv_handle_t, handle_queue); - if (!(h->flags & UV__HANDLE_INTERNAL)) - return -EBUSY; - } - uv__loop_close(loop); -#ifndef NDEBUG - memset(loop, -1, sizeof(*loop)); -#endif - if (loop == default_loop_ptr) - default_loop_ptr = NULL; - return 0; -} - - -uv_loop_t* uv_loop_new(void) { - uv_loop_t* loop; - - loop = malloc(sizeof(*loop)); - if (loop == NULL) - return NULL; - - if (uv_loop_init(loop)) { - free(loop); - return NULL; - } - - return loop; -} - - -void uv_loop_delete(uv_loop_t* loop) { - uv_loop_t* default_loop; - int err; - default_loop = default_loop_ptr; - err = uv_loop_close(loop); - assert(err == 0); - if (loop != default_loop) - free(loop); -} - - -static int uv__loop_init(uv_loop_t* loop, int default_loop) { int err; uv__signal_global_once_init(); @@ -130,7 +59,7 @@ static int uv__loop_init(uv_loop_t* loop, int default_loop) { loop->timer_counter = 0; loop->stop_flag = 0; - err = uv__platform_loop_init(loop, default_loop); + err = uv__platform_loop_init(loop); if (err) return err; @@ -155,7 +84,7 @@ static int uv__loop_init(uv_loop_t* loop, int default_loop) { } -static void uv__loop_close(uv_loop_t* loop) { +void uv__loop_close(uv_loop_t* loop) { uv__signal_loop_cleanup(loop); uv__platform_loop_delete(loop); uv__async_stop(loop, &loop->async_watcher); |