From 56f8366873630ea340283f05391aed20353bcbd7 Mon Sep 17 00:00:00 2001 From: Ben Noordhuis Date: Mon, 16 Dec 2019 15:21:05 +0100 Subject: [PATCH] Revert "darwin: assume pthread_setname_np() is available" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit bee1bf5dd7de8da316821c32411425f7cf7ab49c. This is necessary in order to be able to revert commit 038eacfbf4 ("darwin: speed up uv_set_process_title()") from October. PR-URL: https://github.com/libuv/libuv/pull/2568 Reviewed-By: Michael Dawson Reviewed-By: Richard Lau Reviewed-By: Saúl Ibarra Corretgé --- src/unix/darwin-proctitle.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/unix/darwin-proctitle.c b/src/unix/darwin-proctitle.c index eced23c2..8d074b34 100644 --- a/src/unix/darwin-proctitle.c +++ b/src/unix/darwin-proctitle.c @@ -23,7 +23,6 @@ #include #include -#include #include #include @@ -37,6 +36,7 @@ #define S(s) pCFStringCreateWithCString(NULL, (s), kCFStringEncodingUTF8) +static int (*dynamic_pthread_setname_np)(const char* name); #if !TARGET_OS_IPHONE static CFStringRef (*pCFStringCreateWithCString)(CFAllocatorRef, const char*, @@ -77,9 +77,13 @@ UV_DESTRUCTOR(static void uv__set_process_title_platform_fini(void)) { void uv__set_process_title_platform_init(void) { -#if !TARGET_OS_IPHONE OSStatus (*pSetApplicationIsDaemon)(int); + /* pthread_setname_np() first appeared in OS X 10.6 and iOS 3.2. */ + *(void **)(&dynamic_pthread_setname_np) = + dlsym(RTLD_DEFAULT, "pthread_setname_np"); + +#if !TARGET_OS_IPHONE application_services_handle = dlopen("/System/Library/Frameworks/" "ApplicationServices.framework/" "Versions/A/ApplicationServices", @@ -177,8 +181,6 @@ out: void uv__set_process_title(const char* title) { - char namebuf[64 /* MAXTHREADNAMESIZE */]; - #if !TARGET_OS_IPHONE if (core_foundation_handle != NULL) { CFTypeRef asn; @@ -191,6 +193,9 @@ void uv__set_process_title(const char* title) { } #endif /* !TARGET_OS_IPHONE */ - uv__strscpy(namebuf, title, sizeof(namebuf)); - pthread_setname_np(namebuf); + if (dynamic_pthread_setname_np != NULL) { + char namebuf[64]; /* MAXTHREADNAMESIZE */ + uv__strscpy(namebuf, title, sizeof(namebuf)); + dynamic_pthread_setname_np(namebuf); + } }