X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Futil%2Fu_thread.h;h=1f2a104c3fd65e9747715294690aee6ec950df8b;hb=19b2ac2bb9e1ddc22956920d661f0e47aa49d718;hp=a46c18d3db203627440ee42300832e8c68e2b2d1;hpb=1fd79b4b6d46c95892efb10f2571d36b110224f9;p=mesa.git diff --git a/src/util/u_thread.h b/src/util/u_thread.h index a46c18d3db2..1f2a104c3fd 100644 --- a/src/util/u_thread.h +++ b/src/util/u_thread.h @@ -31,9 +31,21 @@ #include #include "c11/threads.h" +#include "detect_os.h" #ifdef HAVE_PTHREAD #include +#ifdef PTHREAD_SETAFFINITY_IN_NP_HEADER +#include +#endif +#endif + +#ifdef __HAIKU__ +#include +#endif + +#ifdef __FreeBSD__ +#define cpu_set_t cpuset_t #endif static inline thrd_t u_thread_create(int (*routine)(void *), void *param) @@ -61,11 +73,19 @@ static inline thrd_t u_thread_create(int (*routine)(void *), void *param) static inline void u_thread_setname( const char *name ) { #if defined(HAVE_PTHREAD) -# if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) && \ - (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12)) && \ - defined(__linux__) +#if DETECT_OS_LINUX || DETECT_OS_CYGWIN || DETECT_OS_SOLARIS pthread_setname_np(pthread_self(), name); -# endif +#elif DETECT_OS_FREEBSD || DETECT_OS_OPENBSD + pthread_set_name_np(pthread_self(), name); +#elif DETECT_OS_NETBSD + pthread_setname_np(pthread_self(), "%s", (void *)name); +#elif DETECT_OS_APPLE + pthread_setname_np(name); +#elif DETECT_OS_HAIKU + rename_thread(find_thread(NULL), name); +#else +#warning Not sure how to call pthread_setname_np +#endif #endif (void)name; } @@ -135,7 +155,7 @@ util_get_L3_for_pinned_thread(thrd_t thread, unsigned cores_per_L3) static inline int64_t u_thread_get_time_nano(thrd_t thread) { -#if defined(__linux__) && defined(HAVE_PTHREAD) +#if defined(HAVE_PTHREAD) && !defined(__APPLE__) && !defined(__HAIKU__) struct timespec ts; clockid_t cid; @@ -150,10 +170,7 @@ u_thread_get_time_nano(thrd_t thread) static inline bool u_thread_is_self(thrd_t thread) { #if defined(HAVE_PTHREAD) -# if defined(__GNU_LIBRARY__) && defined(__GLIBC__) && defined(__GLIBC_MINOR__) && \ - (__GLIBC__ >= 3 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 12)) return pthread_equal(pthread_self(), thread); -# endif #endif return false; }