Browse Source

Merge topic 'libuv-macos-posix-poll'

f54ec4e7f9 libuv: macos: use posix poll instead of kqueue
af330faaf1 libuv: darwin: group kqueue-specific definitions together
0db6402687 libuv: process: de-duplicate conditions for using kqueue

Acked-by: Kitware Robot <[email protected]>
Merge-request: !9392
Brad King 1 year ago
parent
commit
c09126cb5b

+ 2 - 2
Utilities/cmlibuv/CMakeLists.txt

@@ -191,8 +191,8 @@ if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
     src/unix/bsd-ifaddrs.c
     src/unix/darwin.c
     src/unix/darwin-proctitle.c
-    src/unix/fsevents.c
-    src/unix/kqueue.c
+    src/unix/no-fsevents.c
+    src/unix/posix-poll.c
     src/unix/proctitle.c
     )
 endif()

+ 7 - 2
Utilities/cmlibuv/include/uv/darwin.h

@@ -30,6 +30,11 @@
 # define UV_PLATFORM_SEM_T semaphore_t
 #endif
 
+#if 1 /* FIXME(#25839): use posix poll to avoid kqueue hangs on macOS.  */
+# include "posix.h"
+#else
+#define UV_HAVE_KQUEUE 1
+
 #define UV_IO_PRIVATE_PLATFORM_FIELDS                                         \
   int rcount;                                                                 \
   int wcount;                                                                 \
@@ -53,9 +58,9 @@
   int cf_error;                                                               \
   uv_mutex_t cf_mutex;                                                        \
 
+#endif
+
 #define UV_STREAM_PRIVATE_PLATFORM_FIELDS                                     \
   void* select;                                                               \
 
-#define UV_HAVE_KQUEUE 1
-
 #endif /* UV_DARWIN_H */

+ 2 - 0
Utilities/cmlibuv/src/unix/darwin.c

@@ -41,6 +41,7 @@ static mach_timebase_info_data_t timebase;
 
 typedef unsigned char UInt8;
 
+#ifdef UV_HAVE_KQUEUE
 int uv__platform_loop_init(uv_loop_t* loop) {
   loop->cf_state = NULL;
 
@@ -54,6 +55,7 @@ int uv__platform_loop_init(uv_loop_t* loop) {
 void uv__platform_loop_delete(uv_loop_t* loop) {
   uv__fsevents_loop_delete(loop);
 }
+#endif
 
 
 static void uv__hrtime_init_once(void) {

+ 1 - 5
Utilities/cmlibuv/src/unix/process.c

@@ -81,11 +81,7 @@ extern char **environ;
 
 #ifdef CMAKE_BOOTSTRAP
 #define UV_USE_SIGCHLD
-#elif defined(__APPLE__) || \
-    defined(__DragonFly__) || \
-    defined(__FreeBSD__) || \
-    defined(__NetBSD__) || \
-    defined(__OpenBSD__)
+#elif defined(UV_HAVE_KQUEUE)
 #include <sys/event.h>
 #else
 #define UV_USE_SIGCHLD