From a0e48031c4d0ba956b099daf516cc29217072fc7 Mon Sep 17 00:00:00 2001 From: Kefu Chai Date: Fri, 19 Feb 2021 15:33:40 +0800 Subject: [PATCH] common: s/prctl/pthread_getname_np/ for better portability prctl() is linux specific, let's use pthread_getname_np for thread names. Signed-off-by: Kefu Chai --- src/common/code_environment.cc | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/common/code_environment.cc b/src/common/code_environment.cc index a821dfcdeac..3b1ead77e69 100644 --- a/src/common/code_environment.cc +++ b/src/common/code_environment.cc @@ -18,8 +18,8 @@ #include "acconfig.h" -#ifdef HAVE_SYS_PRCTL_H -#include +#ifdef HAVE_PTHREAD_GETNAME_NP +#include #endif #include @@ -46,19 +46,18 @@ std::ostream &operator<<(std::ostream &oss, const enum code_environment_t e) return oss; } -#if defined(HAVE_SYS_PRCTL_H) && defined(PR_GET_NAME) /* Since 2.6.11 */ +#if defined(HAVE_PTHREAD_GETNAME_NP) && !defined(_WIN32) int get_process_name(char *buf, int len) { if (len <= 16) { - /* The man page discourages using this prctl with a buffer shorter - * than 16 bytes. With a 16-byte buffer, it might not be - * null-terminated. */ + // The man page discourages using pthread_getname_np() with a buffer shorter + // than 16 bytes. With a 16-byte buffer, it might not be null-terminated. return -ENAMETOOLONG; } // FIPS zeroization audit 20191115: this memset is not security related. memset(buf, 0, len); - return prctl(PR_GET_NAME, buf); + return pthread_getname_np(pthread_self(), buf, len); } #elif defined(HAVE_GETPROGNAME) -- 2.39.5