util: enable futex usage on BSDs after 7dc2f4788288
authorJan Beich <jbeich@FreeBSD.org>
Tue, 2 Jun 2020 00:28:09 +0000 (00:28 +0000)
committerMarge Bot <eric+marge@anholt.net>
Tue, 16 Jun 2020 21:44:35 +0000 (21:44 +0000)
Reviewed-by: Eric Engestrom <eric@engestrom.ch>
Cc: mesa-stable
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5460>

src/util/futex.h
src/util/simple_mtx.h
src/util/u_queue.h

index cf8dd0206c98fdb04ed2e00abe348be163f4d4fa..4d712e2ef2dea91fee9de9b9a125f8e21f2ea38c 100644 (file)
@@ -25,6 +25,7 @@
 #define UTIL_FUTEX_H
 
 #if defined(HAVE_LINUX_FUTEX_H)
+#define UTIL_FUTEX_SUPPORTED 1
 
 #include <limits.h>
 #include <stdint.h>
@@ -52,6 +53,7 @@ static inline int futex_wait(uint32_t *addr, int32_t value, const struct timespe
 }
 
 #elif defined(__FreeBSD__)
+#define UTIL_FUTEX_SUPPORTED 1
 
 #include <assert.h>
 #include <errno.h>
@@ -86,6 +88,7 @@ static inline int futex_wait(uint32_t *addr, int32_t value, struct timespec *tim
 }
 
 #elif defined(__OpenBSD__)
+#define UTIL_FUTEX_SUPPORTED 1
 
 #include <sys/time.h>
 #include <sys/futex.h>
@@ -103,6 +106,8 @@ static inline int futex_wait(uint32_t *addr, int32_t value, const struct timespe
    return futex(addr, FUTEX_WAIT, value, &tsrel, NULL);
 }
 
+#else
+#define UTIL_FUTEX_SUPPORTED 0
 #endif
 
 #endif /* UTIL_FUTEX_H */
index ec3889497f3afbf703a0114aaa462a9ebd5e1901..1bd57ac800195f117bc0859c74b333f5c3ffc8e0 100644 (file)
@@ -29,7 +29,7 @@
 
 #include "c11/threads.h"
 
-#if defined(__GNUC__) && defined(HAVE_LINUX_FUTEX_H)
+#if UTIL_FUTEX_SUPPORTED
 
 /* mtx_t - Fast, simple mutex
  *
index 9666fd9c4b5df12b1c1814b529abb2da0e4df5df..5943df4fcbbf00976af01f9bf1ab7851fada32b4 100644 (file)
@@ -50,7 +50,7 @@ extern "C" {
 #define UTIL_QUEUE_INIT_RESIZE_IF_FULL            (1 << 1)
 #define UTIL_QUEUE_INIT_SET_FULL_THREAD_AFFINITY  (1 << 2)
 
-#if defined(__GNUC__) && defined(HAVE_LINUX_FUTEX_H)
+#if UTIL_FUTEX_SUPPORTED
 #define UTIL_QUEUE_FENCE_FUTEX
 #else
 #define UTIL_QUEUE_FENCE_STANDARD