From: David Lamparter Date: Tue, 4 Sep 2018 11:15:56 +0000 (+0200) Subject: lib: make pthread_set[_]name_np test OS agnostic X-Git-Tag: frr-7.1-dev~380^2~3 X-Git-Url: https://git.puffer.fish/?a=commitdiff_plain;h=e9d938b82a630d61a5cb0890c424c42f3e9ce241;p=mirror%2Ffrr.git lib: make pthread_set[_]name_np test OS agnostic FreeBSD supports pthread_set_name_np() too. Also, pthread_set_name_np() returns void. And NetBSD has pthread_setname_np() with an extra arg... Signed-off-by: David Lamparter --- diff --git a/configure.ac b/configure.ac index 779c7ebb6a..294d3bf325 100755 --- a/configure.ac +++ b/configure.ac @@ -818,6 +818,7 @@ int main(int argc, char **argv) { AC_CHECK_HEADERS([pthread_np.h],,, [ #include ]) +AC_CHECK_FUNCS([pthread_setname_np pthread_set_name_np]) dnl Utility macro to avoid retyping includes all the time m4_define([FRR_INCLUDES], diff --git a/lib/frr_pthread.c b/lib/frr_pthread.c index 7cae889ca9..d48b23f38a 100644 --- a/lib/frr_pthread.c +++ b/lib/frr_pthread.c @@ -166,10 +166,14 @@ int frr_pthread_set_name(struct frr_pthread *fpt, const char *name, pthread_mutex_lock(&fpt->mtx); snprintf(fpt->os_name, OS_THREAD_NAMELEN, "%s", os_name); pthread_mutex_unlock(&fpt->mtx); -#ifdef GNU_LINUX +#ifdef HAVE_PTHREAD_SETNAME_NP +# ifdef GNU_LINUX ret = pthread_setname_np(fpt->thread, fpt->os_name); -#elif defined(OPEN_BSD) - ret = pthread_set_name_np(fpt->thread, fpt->os_name); +# else /* NetBSD */ + ret = pthread_setname_np(fpt->thread, fpt->os_name, NULL); +# endif +#elif defined(HAVE_PTHREAD_SET_NAME_NP) + pthread_set_name_np(fpt->thread, fpt->os_name); #endif }