@@ -6,10 +6,10 @@ Subject: feat: add UV_LOOP_INTERRUPT_ON_IO_CHANGE option to uv_loop_configure
66https://github.com/libuv/libuv/pull/3308
77
88diff --git a/deps/uv/docs/src/loop.rst b/deps/uv/docs/src/loop.rst
9- index 0f5ddfb3ca21b7e5b38d0a4ce4b9e77387597199..ba815202fb157aa82859ec0518523cf6f2ec6ba1 100644
9+ index d1f41e1c9f44838410326df23b1b175fa16ba199..dcf69093469b611a6f9db2bb84530456bc543301 100644
1010--- a/deps/uv/docs/src/loop.rst
1111+++ b/deps/uv/docs/src/loop.rst
12- @@ -73,7 +73,15 @@ API
12+ @@ -86,6 +86,12 @@ API
1313
1414 This option is necessary to use :c:func:`uv_metrics_idle_time`.
1515
@@ -19,26 +19,21 @@ index 0f5ddfb3ca21b7e5b38d0a4ce4b9e77387597199..ba815202fb157aa82859ec0518523cf6
1919+ This option is usually when implementing event loop integration, to make
2020+ the polling of backend fd interrupt to recognize the changes of IO events.
2121+
22- .. versionchanged:: 1.39.0 added the UV_METRICS_IDLE_TIME option.
23- + .. versionchanged:: 1.43.0 added the UV_LOOP_INTERRUPT_ON_IO_CHANGE option.
24- +
25-
26- .. c:function:: int uv_loop_close(uv_loop_t* loop)
22+ - UV_LOOP_ENABLE_IO_URING_SQPOLL: Enable SQPOLL io_uring instance to handle
23+ asynchronous file system operations.
2724
2825diff --git a/deps/uv/include/uv.h b/deps/uv/include/uv.h
29- index a62b3fa69b1087847f37c7093954e19a07959b74..7f48b7daa87d1a5b14bc6f641b60f21263fa5ec3 100644
26+ index 9e450c5110fe57117b686bf683cc6631f37efaeb..f75a496071ac3396cbc6dec819eaab7294609deb 100644
3027--- a/deps/uv/include/uv.h
3128+++ b/deps/uv/include/uv.h
32- @@ -260,7 +260,8 @@ typedef struct uv_metrics_s uv_metrics_t;
33-
29+ @@ -261,6 +261,7 @@ typedef struct uv_metrics_s uv_metrics_t;
3430 typedef enum {
3531 UV_LOOP_BLOCK_SIGNAL = 0,
36- - UV_METRICS_IDLE_TIME
37- + UV_METRICS_IDLE_TIME,
38- + UV_LOOP_INTERRUPT_ON_IO_CHANGE
32+ UV_METRICS_IDLE_TIME,
33+ + UV_LOOP_INTERRUPT_ON_IO_CHANGE,
34+ UV_LOOP_USE_IO_URING_SQPOLL
35+ #define UV_LOOP_USE_IO_URING_SQPOLL UV_LOOP_USE_IO_URING_SQPOLL
3936 } uv_loop_option;
40-
41- typedef enum {
4237diff --git a/deps/uv/src/unix/async.c b/deps/uv/src/unix/async.c
4338index 0ff2669e30a628dbb2df9e28ba14b38cf14114e5..117190ef26338944b78dbed7380c631de8057223 100644
4439--- a/deps/uv/src/unix/async.c
@@ -135,21 +130,20 @@ index 965e7f775250cf9899266bc3aaf62eda69367264..45b3dec662b093a61af356e431416530
135130
136131
137132diff --git a/deps/uv/src/unix/loop.c b/deps/uv/src/unix/loop.c
138- index a9468e8e19cbede795032980c47eb83aee1e0c68..2d28cf48efc3718de19b901b7e08b8a857d20740 100644
133+ index 179ee999d8052e779dc692aeb5b673d210aaa997..636b153165fb76c99ea97bd8c039470ed550c246 100644
139134--- a/deps/uv/src/unix/loop.c
140135+++ b/deps/uv/src/unix/loop.c
141- @@ -217,6 +217,11 @@ int uv__loop_configure(uv_loop_t* loop, uv_loop_option option, va_list ap) {
142- return 0;
136+ @@ -224,6 +224,10 @@ int uv__loop_configure(uv_loop_t* loop, uv_loop_option option, va_list ap) {
143137 }
138+ #endif
144139
145140+ if (option == UV_LOOP_INTERRUPT_ON_IO_CHANGE) {
146141+ lfields->flags |= UV_LOOP_INTERRUPT_ON_IO_CHANGE;
147142+ return 0;
148143+ }
149- +
144+
150145 if (option != UV_LOOP_BLOCK_SIGNAL)
151146 return UV_ENOSYS;
152-
153147@@ -226,3 +231,40 @@ int uv__loop_configure(uv_loop_t* loop, uv_loop_option option, va_list ap) {
154148 loop->flags |= UV_LOOP_BLOCK_SIGPROF;
155149 return 0;
0 commit comments