aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Noordhuis <info@bnoordhuis.nl>2011-09-12 23:45:00 +0200
committerBen Noordhuis <info@bnoordhuis.nl>2011-09-12 23:46:39 +0200
commit0d80040adfdb4a46dcfcc9bbeea01ad3a51fd4cf (patch)
treef8e89dbf6fa6ab3c7b655009d45c99a178b46e5d
parent7e7e983781e3a422093f373e337a1c23cf3202c7 (diff)
downloadandroid-node-v8-0d80040adfdb4a46dcfcc9bbeea01ad3a51fd4cf.tar.gz
android-node-v8-0d80040adfdb4a46dcfcc9bbeea01ad3a51fd4cf.tar.bz2
android-node-v8-0d80040adfdb4a46dcfcc9bbeea01ad3a51fd4cf.zip
uv: upgrade to 9bd8bd7
-rw-r--r--deps/uv/include/uv.h3
-rw-r--r--deps/uv/src/unix/core.c20
-rw-r--r--deps/uv/src/unix/pipe.c26
-rw-r--r--deps/uv/src/win/core.c40
-rw-r--r--deps/uv/src/win/internal.h15
-rw-r--r--deps/uv/src/win/timer.c30
-rw-r--r--deps/uv/test/benchmark-ares.c1
-rw-r--r--deps/uv/test/benchmark-getaddrinfo.c1
-rw-r--r--deps/uv/test/benchmark-ping-pongs.c1
-rw-r--r--deps/uv/test/benchmark-pound.c1
-rw-r--r--deps/uv/test/benchmark-pump.c4
-rw-r--r--deps/uv/test/benchmark-spawn.c1
-rw-r--r--deps/uv/test/benchmark-udp-packet-storm.c1
-rw-r--r--deps/uv/test/dns-server.c1
-rw-r--r--deps/uv/test/echo-server.c3
-rw-r--r--deps/uv/test/test-async.c2
-rw-r--r--deps/uv/test/test-callback-stack.c2
-rw-r--r--deps/uv/test/test-connection-fail.c5
-rw-r--r--deps/uv/test/test-delayed-accept.c2
-rw-r--r--deps/uv/test/test-fs.c17
-rw-r--r--deps/uv/test/test-getaddrinfo.c5
-rw-r--r--deps/uv/test/test-gethostbyname.c2
-rw-r--r--deps/uv/test/test-getsockname.c2
-rw-r--r--deps/uv/test/test-idle.c3
-rw-r--r--deps/uv/test/test-loop-handles.c3
-rw-r--r--deps/uv/test/test-ping-pong.c6
-rw-r--r--deps/uv/test/test-pipe-bind-error.c12
-rw-r--r--deps/uv/test/test-ref.c7
-rw-r--r--deps/uv/test/test-shutdown-eof.c2
-rw-r--r--deps/uv/test/test-spawn.c10
-rw-r--r--deps/uv/test/test-tcp-bind-error.c19
-rw-r--r--deps/uv/test/test-tcp-bind6-error.c15
-rw-r--r--deps/uv/test/test-tcp-writealot.c3
-rw-r--r--deps/uv/test/test-threadpool.c2
-rw-r--r--deps/uv/test/test-timer-again.c3
-rw-r--r--deps/uv/test/test-timer.c2
-rw-r--r--deps/uv/test/test-udp-dgram-too-big.c2
-rw-r--r--deps/uv/test/test-udp-ipv6.c2
-rw-r--r--deps/uv/test/test-udp-send-and-recv.c2
-rw-r--r--deps/uv/uv.gyp15
-rw-r--r--src/node.cc2
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);