|
@@ -26,10 +26,10 @@ index 0f5ddfb3ca21b7e5b38d0a4ce4b9e77387597199..ba815202fb157aa82859ec0518523cf6
|
|
|
.. c:function:: int uv_loop_close(uv_loop_t* loop)
|
|
|
|
|
|
diff --git a/deps/uv/include/uv.h b/deps/uv/include/uv.h
|
|
|
-index 02397dd0fdd43d51f86c0dde9a62046702f12bdb..3375600023e39ddacf62cc17deb4f206db942084 100644
|
|
|
+index ee1c94ccd389915ea7572cce044256a7788025ad..d31abf714d5d1433ec8473ccb1aae3b6615c477a 100644
|
|
|
--- a/deps/uv/include/uv.h
|
|
|
+++ b/deps/uv/include/uv.h
|
|
|
-@@ -260,7 +260,8 @@ typedef struct uv_metrics_s uv_metrics_t;
|
|
|
+@@ -252,7 +252,8 @@ typedef struct uv_statfs_s uv_statfs_t;
|
|
|
|
|
|
typedef enum {
|
|
|
UV_LOOP_BLOCK_SIGNAL = 0,
|
|
@@ -40,7 +40,7 @@ index 02397dd0fdd43d51f86c0dde9a62046702f12bdb..3375600023e39ddacf62cc17deb4f206
|
|
|
|
|
|
typedef enum {
|
|
|
diff --git a/deps/uv/src/unix/async.c b/deps/uv/src/unix/async.c
|
|
|
-index 0ff2669e30a628dbb2df9e28ba14b38cf14114e5..679b17bda476d2a9c072ce8261234f837b56422f 100644
|
|
|
+index e1805c323795e5b0c465d80100eebeb7bf838caa..dd4358c0cdaa97ba8fadf4d9755993803beddd18 100644
|
|
|
--- a/deps/uv/src/unix/async.c
|
|
|
+++ b/deps/uv/src/unix/async.c
|
|
|
@@ -38,7 +38,6 @@
|
|
@@ -49,18 +49,18 @@ index 0ff2669e30a628dbb2df9e28ba14b38cf14114e5..679b17bda476d2a9c072ce8261234f83
|
|
|
|
|
|
-static void uv__async_send(uv_loop_t* loop);
|
|
|
static int uv__async_start(uv_loop_t* loop);
|
|
|
- static void uv__cpu_relax(void);
|
|
|
|
|
|
-@@ -78,7 +77,7 @@ int uv_async_send(uv_async_t* handle) {
|
|
|
+
|
|
|
+@@ -70,7 +69,7 @@ int uv_async_send(uv_async_t* handle) {
|
|
|
+ return 0;
|
|
|
|
|
|
/* Wake up the other thread's event loop. */
|
|
|
- if (atomic_exchange(pending, 1) == 0)
|
|
|
-- uv__async_send(handle->loop);
|
|
|
-+ uv__loop_interrupt(handle->loop);
|
|
|
+- uv__async_send(handle->loop);
|
|
|
++ uv__loop_interrupt(handle->loop);
|
|
|
|
|
|
- /* Set the loop to not-busy. */
|
|
|
- atomic_fetch_add(busy, -1);
|
|
|
-@@ -178,40 +177,6 @@ static void uv__async_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
|
|
+ /* Tell the other thread we're done. */
|
|
|
+ if (cmpxchgi(&handle->pending, 1, 2) != 1)
|
|
|
+@@ -165,40 +164,6 @@ static void uv__async_io(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
|
|
}
|
|
|
|
|
|
|
|
@@ -102,10 +102,10 @@ index 0ff2669e30a628dbb2df9e28ba14b38cf14114e5..679b17bda476d2a9c072ce8261234f83
|
|
|
int pipefd[2];
|
|
|
int err;
|
|
|
diff --git a/deps/uv/src/unix/core.c b/deps/uv/src/unix/core.c
|
|
|
-index 25c5181f370e94983e8a5f797f02f7a8dc207e00..f4d9059796d2c65339a5d48ecb273b09d9364d21 100644
|
|
|
+index 54c769f37f2331136c87a37c13fb4e3f9a8f22f9..ac52ab79a5fc3050effd2b1f2f605cee9b1ab336 100644
|
|
|
--- a/deps/uv/src/unix/core.c
|
|
|
+++ b/deps/uv/src/unix/core.c
|
|
|
-@@ -926,6 +926,9 @@ void uv__io_start(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
|
|
+@@ -900,6 +900,9 @@ void uv__io_start(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
|
|
loop->watchers[w->fd] = w;
|
|
|
loop->nfds++;
|
|
|
}
|
|
@@ -115,20 +115,20 @@ index 25c5181f370e94983e8a5f797f02f7a8dc207e00..f4d9059796d2c65339a5d48ecb273b09
|
|
|
}
|
|
|
|
|
|
|
|
|
-@@ -957,6 +960,9 @@ void uv__io_stop(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
|
|
+@@ -931,6 +934,9 @@ void uv__io_stop(uv_loop_t* loop, uv__io_t* w, unsigned int events) {
|
|
|
}
|
|
|
- else if (uv__queue_empty(&w->watcher_queue))
|
|
|
- uv__queue_insert_tail(&loop->watcher_queue, &w->watcher_queue);
|
|
|
+ else if (QUEUE_EMPTY(&w->watcher_queue))
|
|
|
+ QUEUE_INSERT_TAIL(&loop->watcher_queue, &w->watcher_queue);
|
|
|
+
|
|
|
+ if (uv__get_internal_fields(loop)->flags & UV_LOOP_INTERRUPT_ON_IO_CHANGE)
|
|
|
+ uv__loop_interrupt(loop);
|
|
|
}
|
|
|
|
|
|
|
|
|
-@@ -973,6 +979,9 @@ void uv__io_close(uv_loop_t* loop, uv__io_t* w) {
|
|
|
+@@ -947,6 +953,9 @@ void uv__io_close(uv_loop_t* loop, uv__io_t* w) {
|
|
|
void uv__io_feed(uv_loop_t* loop, uv__io_t* w) {
|
|
|
- if (uv__queue_empty(&w->pending_queue))
|
|
|
- uv__queue_insert_tail(&loop->pending_queue, &w->pending_queue);
|
|
|
+ if (QUEUE_EMPTY(&w->pending_queue))
|
|
|
+ QUEUE_INSERT_TAIL(&loop->pending_queue, &w->pending_queue);
|
|
|
+
|
|
|
+ if (uv__get_internal_fields(loop)->flags & UV_LOOP_INTERRUPT_ON_IO_CHANGE)
|
|
|
+ uv__loop_interrupt(loop);
|
|
@@ -136,7 +136,7 @@ index 25c5181f370e94983e8a5f797f02f7a8dc207e00..f4d9059796d2c65339a5d48ecb273b09
|
|
|
|
|
|
|
|
|
diff --git a/deps/uv/src/unix/loop.c b/deps/uv/src/unix/loop.c
|
|
|
-index a9468e8e19cbede795032980c47eb83aee1e0c68..2d28cf48efc3718de19b901b7e08b8a857d20740 100644
|
|
|
+index a88e71c339351f2ebcdd6c3f933fc3b1122910ed..46fc03264b6cc1a3a4d8faf5ec5a754fc07c9b6d 100644
|
|
|
--- a/deps/uv/src/unix/loop.c
|
|
|
+++ b/deps/uv/src/unix/loop.c
|
|
|
@@ -217,6 +217,11 @@ int uv__loop_configure(uv_loop_t* loop, uv_loop_option option, va_list ap) {
|
|
@@ -193,10 +193,10 @@ index a9468e8e19cbede795032980c47eb83aee1e0c68..2d28cf48efc3718de19b901b7e08b8a8
|
|
|
+ abort();
|
|
|
+}
|
|
|
diff --git a/deps/uv/src/uv-common.h b/deps/uv/src/uv-common.h
|
|
|
-index cd57e5a35153d0557351b60cce0c5be7a4468b60..660caef30b1637b8009de5e55ee34f48d17e4dd0 100644
|
|
|
+index 6001b0cf68d0b0268b578218b664a737f43c9521..5d2212571f4bcb648ab332f0c5650d0fdb37c03a 100644
|
|
|
--- a/deps/uv/src/uv-common.h
|
|
|
+++ b/deps/uv/src/uv-common.h
|
|
|
-@@ -144,6 +144,8 @@ int uv__loop_configure(uv_loop_t* loop, uv_loop_option option, va_list ap);
|
|
|
+@@ -140,6 +140,8 @@ int uv__loop_configure(uv_loop_t* loop, uv_loop_option option, va_list ap);
|
|
|
|
|
|
void uv__loop_close(uv_loop_t* loop);
|
|
|
|
|
@@ -205,7 +205,7 @@ index cd57e5a35153d0557351b60cce0c5be7a4468b60..660caef30b1637b8009de5e55ee34f48
|
|
|
int uv__read_start(uv_stream_t* stream,
|
|
|
uv_alloc_cb alloc_cb,
|
|
|
uv_read_cb read_cb);
|
|
|
-@@ -280,6 +282,10 @@ void uv__threadpool_cleanup(void);
|
|
|
+@@ -268,6 +270,10 @@ void uv__threadpool_cleanup(void);
|
|
|
if (((h)->flags & UV_HANDLE_ACTIVE) != 0) break; \
|
|
|
(h)->flags |= UV_HANDLE_ACTIVE; \
|
|
|
if (((h)->flags & UV_HANDLE_REF) != 0) uv__active_handle_add(h); \
|
|
@@ -217,7 +217,7 @@ index cd57e5a35153d0557351b60cce0c5be7a4468b60..660caef30b1637b8009de5e55ee34f48
|
|
|
while (0)
|
|
|
|
|
|
diff --git a/deps/uv/src/win/core.c b/deps/uv/src/win/core.c
|
|
|
-index e9885a0f1ff3890a8d957c8793e22b01cedc0e97..ae3d09878253fe7169ad7b74b3faea0223f89de5 100644
|
|
|
+index 67af93e6571ed4324d80b6dfb2ff93db7b9cd9b1..e88008b6a288d1508c5c117d814000d63cab81c3 100644
|
|
|
--- a/deps/uv/src/win/core.c
|
|
|
+++ b/deps/uv/src/win/core.c
|
|
|
@@ -384,10 +384,20 @@ int uv__loop_configure(uv_loop_t* loop, uv_loop_option option, va_list ap) {
|
|
@@ -242,7 +242,7 @@ index e9885a0f1ff3890a8d957c8793e22b01cedc0e97..ae3d09878253fe7169ad7b74b3faea02
|
|
|
return -1;
|
|
|
}
|
|
|
diff --git a/deps/uv/test/test-embed.c b/deps/uv/test/test-embed.c
|
|
|
-index bbe56e176db17a502d7f3864ba529212f553590a..b0da9d1cddc69428e9fb3379d1338cf893ab93d2 100644
|
|
|
+index 1d3355fdc67310feb63738c9e30724f0e77f7895..77a63dbb4d188b2ad571c814dbc6cbc6fe5fa205 100644
|
|
|
--- a/deps/uv/test/test-embed.c
|
|
|
+++ b/deps/uv/test/test-embed.c
|
|
|
@@ -25,54 +25,184 @@
|
|
@@ -463,13 +463,13 @@ index bbe56e176db17a502d7f3864ba529212f553590a..b0da9d1cddc69428e9fb3379d1338cf8
|
|
|
+ run_loop();
|
|
|
+ ASSERT_EQ(main_timer_called, 1);
|
|
|
|
|
|
- MAKE_VALGRIND_HAPPY(loop);
|
|
|
+ MAKE_VALGRIND_HAPPY();
|
|
|
return 0;
|
|
|
diff --git a/deps/uv/test/test-list.h b/deps/uv/test/test-list.h
|
|
|
-index 78ff9c2d1621676feab5d357609970cdf1ba5864..204160f324ad1a80c9b042e62c4bedcb745666ba 100644
|
|
|
+index b19c10c7e40c77061337416fd623c53d0863d276..1f54ac21c36902bccb35c64cefa8bb14dd675bb0 100644
|
|
|
--- a/deps/uv/test/test-list.h
|
|
|
+++ b/deps/uv/test/test-list.h
|
|
|
-@@ -273,6 +273,7 @@ TEST_DECLARE (process_priority)
|
|
|
+@@ -265,6 +265,7 @@ TEST_DECLARE (process_priority)
|
|
|
TEST_DECLARE (has_ref)
|
|
|
TEST_DECLARE (active)
|
|
|
TEST_DECLARE (embed)
|
|
@@ -477,7 +477,7 @@ index 78ff9c2d1621676feab5d357609970cdf1ba5864..204160f324ad1a80c9b042e62c4bedcb
|
|
|
TEST_DECLARE (async)
|
|
|
TEST_DECLARE (async_null_cb)
|
|
|
TEST_DECLARE (eintr_handling)
|
|
|
-@@ -894,6 +895,7 @@ TASK_LIST_START
|
|
|
+@@ -867,6 +868,7 @@ TASK_LIST_START
|
|
|
TEST_ENTRY (active)
|
|
|
|
|
|
TEST_ENTRY (embed)
|