avutil/thread: add support for setting thread name on *bsd and solaris

FreeBSD/DragonFly/Solaris use pthread_setname_np(). OpenBSD uses pthread_set_name_np().

Signed-off-by: Brad Smith <brad@comstyle.com>
Signed-off-by: Marton Balint <cus@passwd.hu>
This commit is contained in:
Brad Smith 2024-01-07 00:55:51 -05:00 committed by Marton Balint
parent 49ab7f8997
commit fd16d8c68c
2 changed files with 22 additions and 2 deletions

10
configure vendored
View File

@ -2239,6 +2239,7 @@ HEADERS_LIST="
opencv2_core_core_c_h
OpenGL_gl3_h
poll_h
pthread_np_h
sys_param_h
sys_resource_h
sys_select_h
@ -2341,6 +2342,8 @@ SYSTEM_FUNCS="
posix_memalign
prctl
pthread_cancel
pthread_set_name_np
pthread_setname_np
sched_getaffinity
SecItemImport
SetConsoleTextAttribute
@ -6524,6 +6527,7 @@ check_headers malloc.h
check_headers mftransform.h
check_headers net/udplite.h
check_headers poll.h
check_headers pthread_np.h
check_headers sys/param.h
check_headers sys/resource.h
check_headers sys/select.h
@ -6692,6 +6696,12 @@ if ! disabled pthreads && ! enabled w32threads && ! enabled os2threads; then
if enabled pthreads; then
check_builtin sem_timedwait semaphore.h "sem_t *s; sem_init(s,0,0); sem_timedwait(s,0); sem_destroy(s)" $pthreads_extralibs
check_func pthread_cancel $pthreads_extralibs
hdrs=pthread.h
if enabled pthread_np_h; then
hdrs="$hdrs pthread_np.h"
fi
check_lib pthread_set_name_np "$hdrs" pthread_set_name_np -lpthread
check_lib pthread_setname_np "$hdrs" pthread_setname_np -lpthread
fi
fi

View File

@ -26,6 +26,8 @@
#if HAVE_PRCTL
#include <sys/prctl.h>
#elif (HAVE_PTHREAD_SETNAME_NP || HAVE_PTHREAD_SET_NAME_NP) && HAVE_PTHREAD_NP_H
#include <pthread_np.h>
#endif
#include "error.h"
@ -213,11 +215,19 @@ static inline int ff_thread_once(char *control, void (*routine)(void))
static inline int ff_thread_setname(const char *name)
{
int ret = 0;
#if HAVE_PRCTL
return AVERROR(prctl(PR_SET_NAME, name));
ret = AVERROR(prctl(PR_SET_NAME, name));
#elif HAVE_PTHREAD_SETNAME_NP
ret = AVERROR(pthread_setname_np(pthread_self(), name));
#elif HAVE_PTHREAD_SET_NAME_NP
pthread_set_name_np(pthread_self(), name);
#else
ret = AVERROR(ENOSYS);
#endif
return AVERROR(ENOSYS);
return ret;
}
#endif /* AVUTIL_THREAD_H */