From 0d80040adfdb4a46dcfcc9bbeea01ad3a51fd4cf Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Mon, 12 Sep 2011 23:45:00 +0200 Subject: [PATCH] uv: upgrade to 9bd8bd7 --- deps/uv/include/uv.h | 3 +- deps/uv/src/unix/core.c | 20 +++++------- deps/uv/src/unix/pipe.c | 26 +++++++-------- deps/uv/src/win/core.c | 40 ++++++++++++++--------- deps/uv/src/win/internal.h | 15 +++++++++ deps/uv/src/win/timer.c | 30 ++++++++--------- deps/uv/test/benchmark-ares.c | 1 - deps/uv/test/benchmark-getaddrinfo.c | 1 - deps/uv/test/benchmark-ping-pongs.c | 1 - deps/uv/test/benchmark-pound.c | 1 - deps/uv/test/benchmark-pump.c | 4 --- deps/uv/test/benchmark-spawn.c | 1 - deps/uv/test/benchmark-udp-packet-storm.c | 1 - deps/uv/test/dns-server.c | 1 - deps/uv/test/echo-server.c | 3 -- deps/uv/test/test-async.c | 2 -- deps/uv/test/test-callback-stack.c | 2 -- deps/uv/test/test-connection-fail.c | 5 --- deps/uv/test/test-delayed-accept.c | 2 -- deps/uv/test/test-fs.c | 17 ---------- deps/uv/test/test-getaddrinfo.c | 5 --- deps/uv/test/test-gethostbyname.c | 2 -- deps/uv/test/test-getsockname.c | 2 -- deps/uv/test/test-idle.c | 3 -- deps/uv/test/test-loop-handles.c | 3 -- deps/uv/test/test-ping-pong.c | 6 ---- deps/uv/test/test-pipe-bind-error.c | 12 ------- deps/uv/test/test-ref.c | 7 ---- deps/uv/test/test-shutdown-eof.c | 2 -- deps/uv/test/test-spawn.c | 10 ------ deps/uv/test/test-tcp-bind-error.c | 19 ----------- deps/uv/test/test-tcp-bind6-error.c | 15 --------- deps/uv/test/test-tcp-writealot.c | 3 -- deps/uv/test/test-threadpool.c | 2 -- deps/uv/test/test-timer-again.c | 3 -- deps/uv/test/test-timer.c | 2 -- deps/uv/test/test-udp-dgram-too-big.c | 2 -- deps/uv/test/test-udp-ipv6.c | 2 -- deps/uv/test/test-udp-send-and-recv.c | 2 -- deps/uv/uv.gyp | 15 ++++++++- src/node.cc | 2 -- 41 files changed, 91 insertions(+), 204 deletions(-) diff --git a/deps/uv/include/uv.h b/deps/uv/include/uv.h index e42509e99e..58678c563e 100644 --- a/deps/uv/include/uv.h +++ b/deps/uv/include/uv.h @@ -81,11 +81,10 @@ typedef struct uv_work_s uv_work_t; * All callbacks in libuv are made asynchronously. That is they are never * made by the function that takes them as a parameter. */ -void uv_init(); uv_loop_t* uv_loop_new(); - void uv_loop_delete(uv_loop_t*); + /* * Returns the default loop. */ diff --git a/deps/uv/src/unix/core.c b/deps/uv/src/unix/core.c index 57306ac002..fec256719a 100644 --- a/deps/uv/src/unix/core.c +++ b/deps/uv/src/unix/core.c @@ -65,17 +65,6 @@ static void uv__finish_close(uv_handle_t* handle); #endif -void uv_init() { - default_loop_ptr = &default_loop_struct; -#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 - default_loop_struct.ev = ev_default_loop(EVBACKEND_KQUEUE); -#else - default_loop_struct.ev = ev_default_loop(EVFLAG_AUTO); -#endif - ev_set_userdata(default_loop_struct.ev, default_loop_ptr); -} - - void uv_close(uv_handle_t* handle, uv_close_cb close_cb) { uv_udp_t* udp; uv_async_t* async; @@ -176,6 +165,15 @@ void uv_loop_delete(uv_loop_t* loop) { uv_loop_t* uv_default_loop() { + if (!default_loop_ptr) { + default_loop_ptr = &default_loop_struct; +#if defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1060 + default_loop_struct.ev = ev_default_loop(EVBACKEND_KQUEUE); +#else + default_loop_struct.ev = ev_default_loop(EVFLAG_AUTO); +#endif + ev_set_userdata(default_loop_struct.ev, default_loop_ptr); + } assert(default_loop_ptr->ev == EV_DEFAULT_UC); return default_loop_ptr; } diff --git a/deps/uv/src/unix/pipe.c b/deps/uv/src/unix/pipe.c index fb420dd55f..d4e08896a4 100644 --- a/deps/uv/src/unix/pipe.c +++ b/deps/uv/src/unix/pipe.c @@ -38,7 +38,7 @@ int uv_pipe_init(uv_loop_t* loop, uv_pipe_t* handle) { int uv_pipe_bind(uv_pipe_t* handle, const char* name) { - struct sockaddr_un sun; + struct sockaddr_un saddr; const char* pipe_fname; int saved_errno; int sockfd; @@ -71,11 +71,11 @@ int uv_pipe_bind(uv_pipe_t* handle, const char* name) { goto out; } - memset(&sun, 0, sizeof sun); - uv__strlcpy(sun.sun_path, pipe_fname, sizeof(sun.sun_path)); - sun.sun_family = AF_UNIX; + memset(&saddr, 0, sizeof saddr); + uv__strlcpy(saddr.sun_path, pipe_fname, sizeof(saddr.sun_path)); + saddr.sun_family = AF_UNIX; - if (bind(sockfd, (struct sockaddr*)&sun, sizeof sun) == -1) { + if (bind(sockfd, (struct sockaddr*)&saddr, sizeof saddr) == -1) { /* On EADDRINUSE: * * We hold the file lock so there is no other process listening @@ -86,7 +86,7 @@ int uv_pipe_bind(uv_pipe_t* handle, const char* name) { */ if (errno != EADDRINUSE || unlink(pipe_fname) == -1 - || bind(sockfd, (struct sockaddr*)&sun, sizeof sun) == -1) { + || bind(sockfd, (struct sockaddr*)&saddr, sizeof saddr) == -1) { /* Convert ENOENT to EACCES for compatibility with Windows. */ uv_err_new(handle->loop, (errno == ENOENT) ? EACCES : errno); goto out; @@ -174,7 +174,7 @@ int uv_pipe_connect(uv_connect_t* req, uv_pipe_t* handle, const char* name, uv_connect_cb cb) { - struct sockaddr_un sun; + struct sockaddr_un saddr; int saved_errno; int sockfd; int status; @@ -189,15 +189,15 @@ int uv_pipe_connect(uv_connect_t* req, goto out; } - memset(&sun, 0, sizeof sun); - uv__strlcpy(sun.sun_path, name, sizeof(sun.sun_path)); - sun.sun_family = AF_UNIX; + memset(&saddr, 0, sizeof saddr); + uv__strlcpy(saddr.sun_path, name, sizeof(saddr.sun_path)); + saddr.sun_family = AF_UNIX; /* We don't check for EINPROGRESS. Think about it: the socket * is either there or not. */ do { - r = connect(sockfd, (struct sockaddr*)&sun, sizeof sun); + r = connect(sockfd, (struct sockaddr*)&saddr, sizeof saddr); } while (r == -1 && errno == EINTR); @@ -236,7 +236,7 @@ out: /* TODO merge with uv__server_io()? */ void uv__pipe_accept(EV_P_ ev_io* watcher, int revents) { - struct sockaddr_un sun; + struct sockaddr_un saddr; uv_pipe_t* pipe; int saved_errno; int sockfd; @@ -247,7 +247,7 @@ void uv__pipe_accept(EV_P_ ev_io* watcher, int revents) { assert(pipe->type == UV_NAMED_PIPE); assert(pipe->pipe_fname != NULL); - sockfd = uv__accept(pipe->fd, (struct sockaddr *)&sun, sizeof sun); + sockfd = uv__accept(pipe->fd, (struct sockaddr *)&saddr, sizeof saddr); if (sockfd == -1) { if (errno == EAGAIN || errno == EWOULDBLOCK) { assert(0 && "EAGAIN on uv__accept(pipefd)"); diff --git a/deps/uv/src/win/core.c b/deps/uv/src/win/core.c index a8fa5c5719..3211bbf2af 100644 --- a/deps/uv/src/win/core.c +++ b/deps/uv/src/win/core.c @@ -33,7 +33,22 @@ /* The only event loop we support right now */ static uv_loop_t uv_default_loop_; -static int uv_default_loop_initialized_ = 0; + +/* uv_once intialization guards */ +static uv_once_t uv_init_guard_ = UV_ONCE_INIT; +static uv_once_t uv_default_loop_init_guard_ = UV_ONCE_INIT; + + +static void uv_init(void) { + /* Initialize winsock */ + uv_winsock_init(); + + /* Fetch winapi function pointers */ + uv_winapi_init(); + + /* Initialize FS */ + uv_fs_init(); +} static void uv_loop_init(uv_loop_t* loop) { @@ -68,25 +83,18 @@ static void uv_loop_init(uv_loop_t* loop) { } -uv_loop_t* uv_default_loop() { - if (!uv_default_loop_initialized_) { - uv_loop_init(&uv_default_loop_); - uv_default_loop_initialized_ = 1; - } +static void uv_default_loop_init(void) { + /* Intialize libuv itself first */ + uv_once(&uv_init_guard_, uv_init); - return &uv_default_loop_; + /* Initialize the main loop */ + uv_loop_init(&uv_default_loop_); } -void uv_init() { - /* Initialize winsock */ - uv_winsock_init(); - - /* Fetch winapi function pointers */ - uv_winapi_init(); - - /* Initialize FS */ - uv_fs_init(); +uv_loop_t* uv_default_loop() { + uv_once(&uv_default_loop_init_guard_, uv_default_loop_init); + return &uv_default_loop_; } diff --git a/deps/uv/src/win/internal.h b/deps/uv/src/win/internal.h index 19085b633e..ee1834ed6d 100644 --- a/deps/uv/src/win/internal.h +++ b/deps/uv/src/win/internal.h @@ -279,4 +279,19 @@ void uv_winsock_init(); int uv_ntstatus_to_winsock_error(NTSTATUS status); +/* Threads and synchronization */ +typedef struct uv_once_s { + unsigned char ran; + /* The actual event handle must be aligned to sizeof(HANDLE), so in */ + /* practice it might overlap padding a little. */ + HANDLE event; + HANDLE padding; +} uv_once_t; + +#define UV_ONCE_INIT \ + { 0, NULL, NULL } + +void uv_once(uv_once_t* guard, void (*callback)(void)); + + #endif /* UV_WIN_INTERNAL_H_ */ diff --git a/deps/uv/src/win/timer.c b/deps/uv/src/win/timer.c index c21ea6ec12..ac20925293 100644 --- a/deps/uv/src/win/timer.c +++ b/deps/uv/src/win/timer.c @@ -33,7 +33,7 @@ /* The resolution of the high-resolution clock. */ static int64_t uv_ticks_per_msec_ = 0; static uint64_t uv_hrtime_frequency_ = 0; -static char uv_hrtime_initialized_ = 0; +static uv_once_t uv_hrtime_init_guard_ = UV_ONCE_INIT; void uv_update_time(uv_loop_t* loop) { @@ -57,24 +57,24 @@ int64_t uv_now(uv_loop_t* loop) { return loop->time; } -/* TODO: thread safety */ -uint64_t uv_hrtime(void) { - LARGE_INTEGER counter; - - /* When called for the first time, obtain the high-resolution clock */ - /* frequency. */ - if (!uv_hrtime_initialized_) { - uv_hrtime_initialized_ = 1; - if (!QueryPerformanceFrequency(&counter)) { - uv_hrtime_frequency_ = 0; - /* uv_set_sys_error(loop, GetLastError()); */ - return 0; - } +static void uv_hrtime_init(void) { + LARGE_INTEGER frequency; - uv_hrtime_frequency_ = counter.QuadPart; + if (!QueryPerformanceFrequency(&frequency)) { + uv_hrtime_frequency_ = 0; + return; } + uv_hrtime_frequency_ = frequency.QuadPart; +} + + +uint64_t uv_hrtime(void) { + LARGE_INTEGER counter; + + uv_once(&uv_hrtime_init_guard_, uv_hrtime_init); + /* If the performance frequency is zero, there's no support. */ if (!uv_hrtime_frequency_) { /* uv_set_sys_error(loop, ERROR_NOT_SUPPORTED); */ diff --git a/deps/uv/test/benchmark-ares.c b/deps/uv/test/benchmark-ares.c index 5b24402d69..bfd081deff 100644 --- a/deps/uv/test/benchmark-ares.c +++ b/deps/uv/test/benchmark-ares.c @@ -86,7 +86,6 @@ BENCHMARK_IMPL(gethostbyname) { return 1; } - uv_init(); loop = uv_default_loop(); ares_callbacks = 0; diff --git a/deps/uv/test/benchmark-getaddrinfo.c b/deps/uv/test/benchmark-getaddrinfo.c index 31503d8051..c2a887973c 100644 --- a/deps/uv/test/benchmark-getaddrinfo.c +++ b/deps/uv/test/benchmark-getaddrinfo.c @@ -68,7 +68,6 @@ static void getaddrinfo_initiate(uv_getaddrinfo_t* handle) { BENCHMARK_IMPL(getaddrinfo) { int i; - uv_init(loop); loop = uv_default_loop(); uv_update_time(loop); diff --git a/deps/uv/test/benchmark-ping-pongs.c b/deps/uv/test/benchmark-ping-pongs.c index c3263ae5f2..c36215c1de 100644 --- a/deps/uv/test/benchmark-ping-pongs.c +++ b/deps/uv/test/benchmark-ping-pongs.c @@ -200,7 +200,6 @@ static void pinger_new() { BENCHMARK_IMPL(ping_pongs) { - uv_init(); loop = uv_default_loop(); start_time = uv_now(loop); diff --git a/deps/uv/test/benchmark-pound.c b/deps/uv/test/benchmark-pound.c index c2c41c07ac..1f56e27f69 100644 --- a/deps/uv/test/benchmark-pound.c +++ b/deps/uv/test/benchmark-pound.c @@ -277,7 +277,6 @@ static int pound_it(int concurrency, uint64_t start_time; /* in ns */ uint64_t end_time; - uv_init(); loop = uv_default_loop(); uv_update_time(loop); diff --git a/deps/uv/test/benchmark-pump.c b/deps/uv/test/benchmark-pump.c index abbb7be28e..0269fa7152 100644 --- a/deps/uv/test/benchmark-pump.c +++ b/deps/uv/test/benchmark-pump.c @@ -367,7 +367,6 @@ HELPER_IMPL(tcp_pump_server) { int r; type = TCP; - uv_init(); loop = uv_default_loop(); listen_addr = uv_ip4_addr("0.0.0.0", TEST_PORT); @@ -391,7 +390,6 @@ HELPER_IMPL(pipe_pump_server) { int r; type = PIPE; - uv_init(); loop = uv_default_loop(); /* Server */ @@ -414,7 +412,6 @@ void tcp_pump(int n) { TARGET_CONNECTIONS = n; type = TCP; - uv_init(); loop = uv_default_loop(); connect_addr = uv_ip4_addr("127.0.0.1", TEST_PORT); @@ -431,7 +428,6 @@ void pipe_pump(int n) { TARGET_CONNECTIONS = n; type = PIPE; - uv_init(); loop = uv_default_loop(); /* Start making connections */ diff --git a/deps/uv/test/benchmark-spawn.c b/deps/uv/test/benchmark-spawn.c index 9798f9d95a..6e5493d529 100644 --- a/deps/uv/test/benchmark-spawn.c +++ b/deps/uv/test/benchmark-spawn.c @@ -132,7 +132,6 @@ BENCHMARK_IMPL(spawn) { int r; static int64_t start_time, end_time; - uv_init(); loop = uv_default_loop(); r = uv_exepath(exepath, &exepath_size); diff --git a/deps/uv/test/benchmark-udp-packet-storm.c b/deps/uv/test/benchmark-udp-packet-storm.c index 2be773831b..24a9e1b920 100644 --- a/deps/uv/test/benchmark-udp-packet-storm.c +++ b/deps/uv/test/benchmark-udp-packet-storm.c @@ -134,7 +134,6 @@ static int do_packet_storm(int n_senders, int n_receivers) { ASSERT(n_senders <= MAX_SENDERS); ASSERT(n_receivers <= MAX_RECEIVERS); - uv_init(); loop = uv_default_loop(); n_senders_ = n_senders; diff --git a/deps/uv/test/dns-server.c b/deps/uv/test/dns-server.c index e45372e5b8..cad5f722a7 100644 --- a/deps/uv/test/dns-server.c +++ b/deps/uv/test/dns-server.c @@ -317,7 +317,6 @@ static int dns_start(int port) { HELPER_IMPL(dns_server) { - uv_init(); loop = uv_default_loop(); if (dns_start(TEST_PORT_2)) diff --git a/deps/uv/test/echo-server.c b/deps/uv/test/echo-server.c index ba8a912e36..96e606bde3 100644 --- a/deps/uv/test/echo-server.c +++ b/deps/uv/test/echo-server.c @@ -272,7 +272,6 @@ static int pipe_echo_start(char* pipeName) { HELPER_IMPL(tcp4_echo_server) { - uv_init(); loop = uv_default_loop(); if (tcp4_echo_start(TEST_PORT)) @@ -284,7 +283,6 @@ HELPER_IMPL(tcp4_echo_server) { HELPER_IMPL(tcp6_echo_server) { - uv_init(); loop = uv_default_loop(); if (tcp6_echo_start(TEST_PORT)) @@ -296,7 +294,6 @@ HELPER_IMPL(tcp6_echo_server) { HELPER_IMPL(pipe_echo_server) { - uv_init(); loop = uv_default_loop(); if (pipe_echo_start(TEST_PIPENAME)) diff --git a/deps/uv/test/test-async.c b/deps/uv/test/test-async.c index ccf259e23e..3d8415183d 100644 --- a/deps/uv/test/test-async.c +++ b/deps/uv/test/test-async.c @@ -182,8 +182,6 @@ static void prepare_cb(uv_prepare_t* handle, int status) { TEST_IMPL(async) { int r; - uv_init(); - r = uv_prepare_init(uv_default_loop(), &prepare_handle); ASSERT(r == 0); r = uv_prepare_start(&prepare_handle, prepare_cb); diff --git a/deps/uv/test/test-callback-stack.c b/deps/uv/test/test-callback-stack.c index d0f469243a..4af6364886 100644 --- a/deps/uv/test/test-callback-stack.c +++ b/deps/uv/test/test-callback-stack.c @@ -176,8 +176,6 @@ static void connect_cb(uv_connect_t* req, int status) { TEST_IMPL(callback_stack) { struct sockaddr_in addr = uv_ip4_addr("127.0.0.1", TEST_PORT); - uv_init(); - if (uv_tcp_init(uv_default_loop(), &client)) { FATAL("uv_tcp_init failed"); } diff --git a/deps/uv/test/test-connection-fail.c b/deps/uv/test/test-connection-fail.c index 099b1ad22b..a5d6b1fd31 100644 --- a/deps/uv/test/test-connection-fail.c +++ b/deps/uv/test/test-connection-fail.c @@ -119,8 +119,6 @@ void connection_fail(uv_connect_cb connect_cb) { * expect an error. */ TEST_IMPL(connection_fail) { - uv_init(); - connection_fail(on_connect_with_close); ASSERT(timer_close_cb_calls == 0); @@ -136,9 +134,6 @@ TEST_IMPL(connection_fail) { * attempt. */ TEST_IMPL(connection_fail_doesnt_auto_close) { - uv_init(); - - uv_timer_init(uv_default_loop(), &timer); connection_fail(on_connect_without_close); diff --git a/deps/uv/test/test-delayed-accept.c b/deps/uv/test/test-delayed-accept.c index 85099519b3..36c1dcf267 100644 --- a/deps/uv/test/test-delayed-accept.c +++ b/deps/uv/test/test-delayed-accept.c @@ -180,8 +180,6 @@ static void client_connect() { TEST_IMPL(delayed_accept) { - uv_init(); - start_server(); client_connect(); diff --git a/deps/uv/test/test-fs.c b/deps/uv/test/test-fs.c index 10227bc236..99415c69f4 100644 --- a/deps/uv/test/test-fs.c +++ b/deps/uv/test/test-fs.c @@ -387,7 +387,6 @@ TEST_IMPL(fs_file_noent) { uv_fs_t req; int r; - uv_init(); loop = uv_default_loop(); r = uv_fs_open(loop, &req, "does_not_exist", O_RDONLY, 0, NULL); @@ -476,7 +475,6 @@ TEST_IMPL(fs_file_async) { unlink("test_file"); unlink("test_file2"); - uv_init(); loop = uv_default_loop(); r = uv_fs_open(loop, &open_req1, "test_file", O_WRONLY | O_CREAT, @@ -539,7 +537,6 @@ TEST_IMPL(fs_file_sync) { unlink("test_file"); unlink("test_file2"); - uv_init(); loop = uv_default_loop(); r = uv_fs_open(loop, &open_req1, "test_file", O_WRONLY | O_CREAT, @@ -625,7 +622,6 @@ TEST_IMPL(fs_async_dir) { unlink("test_dir/file2"); rmdir("test_dir"); - uv_init(); loop = uv_default_loop(); r = uv_fs_mkdir(loop, &mkdir_req, "test_dir", 0755, mkdir_cb); @@ -713,7 +709,6 @@ TEST_IMPL(fs_async_sendfile) { struct stat s1, s2; /* Setup. */ - uv_init(); unlink("test_file"); unlink("test_file2"); @@ -781,8 +776,6 @@ TEST_IMPL(fs_fstat) { /* Setup. */ unlink("test_file"); - uv_init(); - loop = uv_default_loop(); r = uv_fs_open(loop, &req, "test_file", O_RDWR | O_CREAT, @@ -837,8 +830,6 @@ TEST_IMPL(fs_chmod) { /* Setup. */ unlink("test_file"); - uv_init(); - loop = uv_default_loop(); r = uv_fs_open(loop, &req, "test_file", O_RDWR | O_CREAT, @@ -926,8 +917,6 @@ TEST_IMPL(fs_chown) { /* Setup. */ unlink("test_file"); - uv_init(); - loop = uv_default_loop(); r = uv_fs_open(loop, &req, "test_file", O_RDWR | O_CREAT, @@ -987,8 +976,6 @@ TEST_IMPL(fs_link) { unlink("test_file_link"); unlink("test_file_link2"); - uv_init(); - loop = uv_default_loop(); r = uv_fs_open(loop, &req, "test_file", O_RDWR | O_CREAT, @@ -1073,8 +1060,6 @@ TEST_IMPL(fs_symlink) { unlink("test_file_symlink_symlink"); unlink("test_file_symlink2_symlink"); - uv_init(); - loop = uv_default_loop(); r = uv_fs_open(loop, &req, "test_file", O_RDWR | O_CREAT, @@ -1187,7 +1172,6 @@ TEST_IMPL(fs_utime) { uv_fs_t req; int r; - uv_init(); loop = uv_default_loop(); atime = mtime = 400497753; /* 1982-09-10 11:22:33 */ @@ -1228,7 +1212,6 @@ TEST_IMPL(fs_futime) { uv_fs_t req; int r; - uv_init(); loop = uv_default_loop(); atime = mtime = 400497753; /* 1982-09-10 11:22:33 */ diff --git a/deps/uv/test/test-getaddrinfo.c b/deps/uv/test/test-getaddrinfo.c index 9cd9be4f5c..cac471caed 100644 --- a/deps/uv/test/test-getaddrinfo.c +++ b/deps/uv/test/test-getaddrinfo.c @@ -72,9 +72,6 @@ static void getaddrinfo_cuncurrent_cb(uv_getaddrinfo_t* handle, TEST_IMPL(getaddrinfo_basic) { int r; - uv_init(); - - r = uv_getaddrinfo(uv_default_loop(), &getaddrinfo_handle, &getaddrinfo_basic_cb, @@ -95,8 +92,6 @@ TEST_IMPL(getaddrinfo_concurrent) { int i, r; int* data; - uv_init(); - for (i = 0; i < CONCURRENT_COUNT; i++) { callback_counts[i] = 0; diff --git a/deps/uv/test/test-gethostbyname.c b/deps/uv/test/test-gethostbyname.c index 544ac9f162..583622e724 100644 --- a/deps/uv/test/test-gethostbyname.c +++ b/deps/uv/test/test-gethostbyname.c @@ -90,8 +90,6 @@ TEST_IMPL(gethostbyname) { return 1; } - uv_init(); - printf("Start basic gethostbyname test\n"); prep_tcploopback(); diff --git a/deps/uv/test/test-getsockname.c b/deps/uv/test/test-getsockname.c index 30aa58231e..1f46ec3ece 100644 --- a/deps/uv/test/test-getsockname.c +++ b/deps/uv/test/test-getsockname.c @@ -309,7 +309,6 @@ static void udp_sender(void) { TEST_IMPL(getsockname_tcp) { - uv_init(); loop = uv_default_loop(); if (tcp_listener()) @@ -327,7 +326,6 @@ TEST_IMPL(getsockname_tcp) { TEST_IMPL(getsockname_udp) { - uv_init(); loop = uv_default_loop(); if (udp_listener()) diff --git a/deps/uv/test/test-idle.c b/deps/uv/test/test-idle.c index 6e959b9756..95ef3a9495 100644 --- a/deps/uv/test/test-idle.c +++ b/deps/uv/test/test-idle.c @@ -60,9 +60,6 @@ static void idle_cb(uv_idle_t* handle, int status) { TEST_IMPL(idle_starvation) { int r; - uv_init(); - - r = uv_idle_init(uv_default_loop(), &idle_handle); ASSERT(r == 0); r = uv_idle_start(&idle_handle, idle_cb); diff --git a/deps/uv/test/test-loop-handles.c b/deps/uv/test/test-loop-handles.c index b9f3be210a..9a76cc53fa 100644 --- a/deps/uv/test/test-loop-handles.c +++ b/deps/uv/test/test-loop-handles.c @@ -299,9 +299,6 @@ TEST_IMPL(loop_handles) { int i; int r; - uv_init(); - - r = uv_prepare_init(uv_default_loop(), &prepare_1_handle); ASSERT(r == 0); r = uv_prepare_start(&prepare_1_handle, prepare_1_cb); diff --git a/deps/uv/test/test-ping-pong.c b/deps/uv/test/test-ping-pong.c index 700e5e9302..dcb5cfd12b 100644 --- a/deps/uv/test/test-ping-pong.c +++ b/deps/uv/test/test-ping-pong.c @@ -221,8 +221,6 @@ static void pipe_pinger_new() { TEST_IMPL(tcp_ping_pong) { - uv_init(); - tcp_pinger_new(); uv_run(uv_default_loop()); @@ -233,8 +231,6 @@ TEST_IMPL(tcp_ping_pong) { TEST_IMPL(tcp_ping_pong_v6) { - uv_init(); - tcp_pinger_v6_new(); uv_run(uv_default_loop()); @@ -245,8 +241,6 @@ TEST_IMPL(tcp_ping_pong_v6) { TEST_IMPL(pipe_ping_pong) { - uv_init(); - pipe_pinger_new(); uv_run(uv_default_loop()); diff --git a/deps/uv/test/test-pipe-bind-error.c b/deps/uv/test/test-pipe-bind-error.c index 961bb870ac..832ce02315 100644 --- a/deps/uv/test/test-pipe-bind-error.c +++ b/deps/uv/test/test-pipe-bind-error.c @@ -45,9 +45,6 @@ TEST_IMPL(pipe_bind_error_addrinuse) { uv_pipe_t server1, server2; int r; - uv_init(); - - r = uv_pipe_init(uv_default_loop(), &server1); ASSERT(r == 0); r = uv_pipe_bind(&server1, TEST_PIPENAME); @@ -82,9 +79,6 @@ TEST_IMPL(pipe_bind_error_addrnotavail) { uv_pipe_t server; int r; - uv_init(); - - r = uv_pipe_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_pipe_bind(&server, BAD_PIPENAME); @@ -106,9 +100,6 @@ TEST_IMPL(pipe_bind_error_inval) { uv_pipe_t server; int r; - uv_init(); - - r = uv_pipe_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_pipe_bind(&server, TEST_PIPENAME); @@ -132,9 +123,6 @@ TEST_IMPL(pipe_listen_without_bind) { uv_pipe_t server; int r; - uv_init(); - - r = uv_pipe_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_listen((uv_stream_t*)&server, SOMAXCONN, NULL); diff --git a/deps/uv/test/test-ref.c b/deps/uv/test/test-ref.c index 69dad1c009..0083335fd1 100644 --- a/deps/uv/test/test-ref.c +++ b/deps/uv/test/test-ref.c @@ -24,7 +24,6 @@ TEST_IMPL(ref) { - uv_init(); uv_run(uv_default_loop()); return 0; } @@ -32,7 +31,6 @@ TEST_IMPL(ref) { TEST_IMPL(idle_ref) { uv_idle_t h; - uv_init(); uv_idle_init(uv_default_loop(), &h); uv_idle_start(&h, NULL); uv_unref(uv_default_loop()); @@ -43,7 +41,6 @@ TEST_IMPL(idle_ref) { TEST_IMPL(async_ref) { uv_async_t h; - uv_init(); uv_async_init(uv_default_loop(), &h, NULL); uv_unref(uv_default_loop()); uv_run(uv_default_loop()); @@ -53,7 +50,6 @@ TEST_IMPL(async_ref) { TEST_IMPL(prepare_ref) { uv_prepare_t h; - uv_init(); uv_prepare_init(uv_default_loop(), &h); uv_prepare_start(&h, NULL); uv_unref(uv_default_loop()); @@ -64,7 +60,6 @@ TEST_IMPL(prepare_ref) { TEST_IMPL(check_ref) { uv_check_t h; - uv_init(); uv_check_init(uv_default_loop(), &h); uv_check_start(&h, NULL); uv_unref(uv_default_loop()); @@ -83,8 +78,6 @@ static void prepare_cb(uv_prepare_t* handle, int status) { TEST_IMPL(unref_in_prepare_cb) { uv_prepare_t h; - uv_init(); - uv_prepare_init(uv_default_loop(), &h); uv_prepare_start(&h, prepare_cb); uv_run(uv_default_loop()); diff --git a/deps/uv/test/test-shutdown-eof.c b/deps/uv/test/test-shutdown-eof.c index f7ea80df6c..d4ad085e10 100644 --- a/deps/uv/test/test-shutdown-eof.c +++ b/deps/uv/test/test-shutdown-eof.c @@ -153,8 +153,6 @@ TEST_IMPL(shutdown_eof) { struct sockaddr_in server_addr; int r; - uv_init(); - qbuf.base = "Q"; qbuf.len = 1; diff --git a/deps/uv/test/test-spawn.c b/deps/uv/test/test-spawn.c index 7255975dcb..653f9ac95d 100644 --- a/deps/uv/test/test-spawn.c +++ b/deps/uv/test/test-spawn.c @@ -117,8 +117,6 @@ static void timer_cb(uv_timer_t* handle, int status) { TEST_IMPL(spawn_exit_code) { int r; - uv_init(); - init_process_options("spawn_helper1", exit_cb); r = uv_spawn(uv_default_loop(), &process, options); @@ -138,8 +136,6 @@ TEST_IMPL(spawn_stdout) { int r; uv_pipe_t out; - uv_init(); - init_process_options("spawn_helper2", exit_cb); uv_pipe_init(uv_default_loop(), &out); @@ -171,8 +167,6 @@ int r; uv_buf_t buf; char buffer[] = "hello-from-spawn_stdin"; - uv_init(); - init_process_options("spawn_helper3", exit_cb); uv_pipe_init(uv_default_loop(), &out); @@ -205,8 +199,6 @@ int r; TEST_IMPL(spawn_and_kill) { int r; - uv_init(); - init_process_options("spawn_helper4", kill_cb); r = uv_spawn(uv_default_loop(), &process, options); @@ -235,8 +227,6 @@ TEST_IMPL(spawn_detect_pipe_name_collisions_on_windows) { char name[64]; HANDLE pipe_handle; - uv_init(); - init_process_options("spawn_helper2", exit_cb); uv_pipe_init(uv_default_loop(), &out); diff --git a/deps/uv/test/test-tcp-bind-error.c b/deps/uv/test/test-tcp-bind-error.c index 28c2f61223..9512519ac0 100644 --- a/deps/uv/test/test-tcp-bind-error.c +++ b/deps/uv/test/test-tcp-bind-error.c @@ -39,9 +39,6 @@ TEST_IMPL(tcp_bind_error_addrinuse) { uv_tcp_t server1, server2; int r; - uv_init(); - - r = uv_tcp_init(uv_default_loop(), &server1); ASSERT(r == 0); r = uv_tcp_bind(&server1, addr); @@ -75,9 +72,6 @@ TEST_IMPL(tcp_bind_error_addrnotavail_1) { uv_tcp_t server; int r; - uv_init(); - - r = uv_tcp_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_tcp_bind(&server, addr); @@ -102,8 +96,6 @@ TEST_IMPL(tcp_bind_error_addrnotavail_2) { uv_tcp_t server; int r; - uv_init(); - r = uv_tcp_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_tcp_bind(&server, addr); @@ -128,9 +120,6 @@ TEST_IMPL(tcp_bind_error_fault) { garbage_addr = (struct sockaddr_in*) &garbage; - uv_init(); - - r = uv_tcp_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_tcp_bind(&server, *garbage_addr); @@ -155,9 +144,6 @@ TEST_IMPL(tcp_bind_error_inval) { uv_tcp_t server; int r; - uv_init(); - - r = uv_tcp_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_tcp_bind(&server, addr1); @@ -183,9 +169,6 @@ TEST_IMPL(tcp_bind_localhost_ok) { uv_tcp_t server; int r; - uv_init(); - - r = uv_tcp_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_tcp_bind(&server, addr); @@ -199,8 +182,6 @@ TEST_IMPL(tcp_listen_without_bind) { int r; uv_tcp_t server; - uv_init(); - r = uv_tcp_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_listen((uv_stream_t*)&server, 128, NULL); diff --git a/deps/uv/test/test-tcp-bind6-error.c b/deps/uv/test/test-tcp-bind6-error.c index 74b930d625..5a8b76363a 100644 --- a/deps/uv/test/test-tcp-bind6-error.c +++ b/deps/uv/test/test-tcp-bind6-error.c @@ -39,9 +39,6 @@ TEST_IMPL(tcp_bind6_error_addrinuse) { uv_tcp_t server1, server2; int r; - uv_init(); - - r = uv_tcp_init(uv_default_loop(), &server1); ASSERT(r == 0); r = uv_tcp_bind6(&server1, addr); @@ -75,9 +72,6 @@ TEST_IMPL(tcp_bind6_error_addrnotavail) { uv_tcp_t server; int r; - uv_init(); - - r = uv_tcp_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_tcp_bind6(&server, addr); @@ -102,9 +96,6 @@ TEST_IMPL(tcp_bind6_error_fault) { garbage_addr = (struct sockaddr_in6*) &garbage; - uv_init(); - - r = uv_tcp_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_tcp_bind6(&server, *garbage_addr); @@ -129,9 +120,6 @@ TEST_IMPL(tcp_bind6_error_inval) { uv_tcp_t server; int r; - uv_init(); - - r = uv_tcp_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_tcp_bind6(&server, addr1); @@ -157,9 +145,6 @@ TEST_IMPL(tcp_bind6_localhost_ok) { uv_tcp_t server; int r; - uv_init(); - - r = uv_tcp_init(uv_default_loop(), &server); ASSERT(r == 0); r = uv_tcp_bind6(&server, addr); diff --git a/deps/uv/test/test-tcp-writealot.c b/deps/uv/test/test-tcp-writealot.c index 1b1a03bf55..f6b1dc6efa 100644 --- a/deps/uv/test/test-tcp-writealot.c +++ b/deps/uv/test/test-tcp-writealot.c @@ -176,9 +176,6 @@ TEST_IMPL(tcp_writealot) { ASSERT(send_buffer != NULL); - uv_init(); - - r = uv_tcp_init(uv_default_loop(), client); ASSERT(r == 0); diff --git a/deps/uv/test/test-threadpool.c b/deps/uv/test/test-threadpool.c index 4f0be0cd43..92130b506c 100644 --- a/deps/uv/test/test-threadpool.c +++ b/deps/uv/test/test-threadpool.c @@ -45,8 +45,6 @@ static void after_work_cb(uv_work_t* req) { TEST_IMPL(threadpool_queue_work_simple) { int r; - uv_init(); - work_req.data = &data; r = uv_queue_work(uv_default_loop(), &work_req, work_cb, after_work_cb); ASSERT(r == 0); diff --git a/deps/uv/test/test-timer-again.c b/deps/uv/test/test-timer-again.c index 49cecf8776..9eeee1e34d 100644 --- a/deps/uv/test/test-timer-again.c +++ b/deps/uv/test/test-timer-again.c @@ -95,9 +95,6 @@ static void repeat_2_cb(uv_timer_t* handle, int status) { TEST_IMPL(timer_again) { int r; - uv_init(); - - start_time = uv_now(uv_default_loop()); ASSERT(0 < start_time); diff --git a/deps/uv/test/test-timer.c b/deps/uv/test/test-timer.c index 9e624cb109..17bcb84b77 100644 --- a/deps/uv/test/test-timer.c +++ b/deps/uv/test/test-timer.c @@ -90,8 +90,6 @@ TEST_IMPL(timer) { uv_timer_t repeat, never; int i, r; - uv_init(); - start_time = uv_now(uv_default_loop()); ASSERT(0 < start_time); diff --git a/deps/uv/test/test-udp-dgram-too-big.c b/deps/uv/test/test-udp-dgram-too-big.c index 92eb055eb2..2d172c0640 100644 --- a/deps/uv/test/test-udp-dgram-too-big.c +++ b/deps/uv/test/test-udp-dgram-too-big.c @@ -65,8 +65,6 @@ TEST_IMPL(udp_dgram_too_big) { memset(dgram, 42, sizeof dgram); /* silence valgrind */ - uv_init(); - r = uv_udp_init(uv_default_loop(), &handle_); ASSERT(r == 0); diff --git a/deps/uv/test/test-udp-ipv6.c b/deps/uv/test/test-udp-ipv6.c index a32ba14d08..6ff36b32b0 100644 --- a/deps/uv/test/test-udp-ipv6.c +++ b/deps/uv/test/test-udp-ipv6.c @@ -100,8 +100,6 @@ static void do_test(uv_udp_recv_cb recv_cb, int bind_flags) { uv_buf_t buf; int r; - uv_init(); - addr6 = uv_ip6_addr("::0", TEST_PORT); r = uv_udp_init(uv_default_loop(), &server); diff --git a/deps/uv/test/test-udp-send-and-recv.c b/deps/uv/test/test-udp-send-and-recv.c index bf73a56301..ab47e91c21 100644 --- a/deps/uv/test/test-udp-send-and-recv.c +++ b/deps/uv/test/test-udp-send-and-recv.c @@ -170,8 +170,6 @@ TEST_IMPL(udp_send_and_recv) { addr = uv_ip4_addr("0.0.0.0", TEST_PORT); - uv_init(); - r = uv_udp_init(uv_default_loop(), &server); ASSERT(r == 0); diff --git a/deps/uv/uv.gyp b/deps/uv/uv.gyp index 0735234132..b056624022 100644 --- a/deps/uv/uv.gyp +++ b/deps/uv/uv.gyp @@ -114,6 +114,7 @@ 'src/win/stream.c', 'src/win/tcp.c', 'src/win/threadpool.c', + 'src/win/threads.c', 'src/win/timer.c', 'src/win/udp.c', 'src/win/util.c', @@ -209,7 +210,19 @@ 'libraries': [ '-lrt' ], }, }], - # TODO add OS=='sun' + [ 'OS=="solaris"', { + 'include_dirs': [ 'src/ares/config_sunos' ], + 'sources': [ 'src/unix/sunos.c' ], + 'defines': [ + '__EXTENSIONS__', + '_XOPEN_SOURCE=500', + 'EV_CONFIG_H="config_sunos.h"', + 'EIO_CONFIG_H="config_sunos.h"', + ], + 'direct_dependent_settings': { + 'libraries': [ '-lrt' ], + }, + }], ] }, diff --git a/src/node.cc b/src/node.cc index 6b2760c711..336240ac35 100644 --- a/src/node.cc +++ b/src/node.cc @@ -2506,8 +2506,6 @@ int Start(int argc, char *argv[]) { pthread_win32_process_attach_np(); #endif - uv_init(); - // This needs to run *before* V8::Initialize() argv = Init(argc, argv);