diff options
author | Tavian Barnes <tavianator@tavianator.com> | 2023-10-05 12:55:56 -0400 |
---|---|---|
committer | Tavian Barnes <tavianator@tavianator.com> | 2023-10-05 12:55:56 -0400 |
commit | 634359bb169311646f6369b21f0c90a9819fe2ce (patch) | |
tree | 0cf7913c96892c35c9aa3526bec096f7ca0b0e4b /src | |
parent | 14f790c80acf0f9f005ce9e7a94246954533163b (diff) | |
download | bfs-634359bb169311646f6369b21f0c90a9819fe2ce.tar.xz |
thread: Define thread_local
Diffstat (limited to 'src')
-rw-r--r-- | src/config.h | 7 | ||||
-rw-r--r-- | src/thread.h | 9 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/config.h b/src/config.h index e3048c4..862a839 100644 --- a/src/config.h +++ b/src/config.h @@ -59,6 +59,9 @@ #if __has_include(<sys/xattr.h>) # define BFS_HAS_SYS_XATTR_H true #endif +#if __has_include(<threads.h>) +# define BFS_HAS_THREADS_H true +#endif #if __has_include(<util.h>) # define BFS_HAS_UTIL_H true #endif @@ -74,6 +77,7 @@ #define BFS_HAS_SYS_PARAM_H true #define BFS_HAS_SYS_SYSMACROS_H __GLIBC__ #define BFS_HAS_SYS_XATTR_H __linux__ +#define BFS_HAS_THREADS_H (!__STDC_NO_THREADS__) #define BFS_HAS_UTIL_H __NetBSD__ #endif // !__has_include @@ -105,6 +109,9 @@ #ifndef BFS_USE_SYS_XATTR_H # define BFS_USE_SYS_XATTR_H BFS_HAS_SYS_XATTR_H #endif +#ifndef BFS_USE_THREADS_H +# define BFS_USE_THREADS_H BFS_HAS_THREADS_H +#endif #ifndef BFS_USE_UTIL_H # define BFS_USE_UTIL_H BFS_HAS_UTIL_H #endif diff --git a/src/thread.h b/src/thread.h index 45b5e1f..ab95a79 100644 --- a/src/thread.h +++ b/src/thread.h @@ -8,11 +8,20 @@ #ifndef BFS_THREAD_H #define BFS_THREAD_H +#include "config.h" #include "diag.h" #include <errno.h> #include <pthread.h> #include <string.h> +#if __STDC_VERSION__ < 202311L && !defined(thread_local) +# if BFS_USE_THREADS_H +# include <threads.h> +# else +# define thread_local _Thread_local +# endif +#endif + #define thread_verify(expr, cond) \ bfs_verify((errno = (expr), (cond)), "%s: %s", #expr, strerror(errno)) |