AC_CHECK_DECLS([PR_GET_NO_NEW_PRIVS], [], [], [#include <sys/prctl.h>])
# Check for some headers
-AC_CHECK_HEADERS([pty.h sys/memfd.h sys/personality.h sys/resource.h sys/signalfd.h sys/timerfd.h utmpx.h threads.h])
+AC_CHECK_HEADERS([pty.h sys/memfd.h sys/personality.h sys/resource.h sys/signalfd.h sys/timerfd.h utmpx.h])
AC_CHECK_HEADER([ifaddrs.h],
AM_CONDITIONAL(HAVE_IFADDRS_H, true)
#include "config.h"
-#if defined(HAVE_THREADS_H)
- #include <threads.h>
- #define THREAD_LOCAL_STORAGE_SUPPORTED
-#elif defined(thread_local)
- #define THREAD_LOCAL_STORAGE_SUPPORTED
+#ifndef thread_local
+#if __STDC_VERSION__ >= 201112L && \
+ !(defined(__STDC_NO_THREADS__) || \
+ (defined(__GNU_LIBRARY__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 16))
+#define thread_local _Thread_local
#else
- #if __STDC_VERSION__ >= 201112L && \
- !(defined(__STDC_NO_THREADS__) || \
- (defined(__GNU_LIBRARY__) && __GLIBC__ == 2 && __GLIBC_MINOR__ < 16))
- #define thread_local _Thread_local
-
- #define THREAD_LOCAL_STORAGE_SUPPORTED
- #else
- #define thread_local __thread
-
- #define THREAD_LOCAL_STORAGE_SUPPORTED
- #endif
+#define thread_local __thread
+#endif
#endif
#if __GNUC__ >= 7
* The lxc_conf of the container currently being worked on in an API call.
* This is used in the error calls.
*/
-#if defined(THREAD_LOCAL_STORAGE_SUPPORTED)
thread_local struct lxc_conf *current_config;
-#elif defined(ENFORCE_THREAD_SAFETY)
-#error ENFORCE_THREAD_SAFETY was set but cannot be guaranteed due to missing TLS
-#else
-struct lxc_conf *current_config;
-#endif
char *lxchook_names[NUM_LXC_HOOKS] = {
"pre-start",
__hidden extern int write_id_mapping(enum idtype idtype, pid_t pid, const char *buf, size_t buf_size)
__access_r(3, 4);
-#if defined(THREAD_LOCAL_STORAGE_SUPPORTED)
extern thread_local struct lxc_conf *current_config;
-#elif defined(ENFORCE_THREAD_SAFETY)
-#error ENFORCE_THREAD_SAFETY was set but cannot be guaranteed due to missing TLS
-#else
-struct lxc_conf *current_config;
-#endif
__hidden extern int run_lxc_hooks(const char *name, char *hook, struct lxc_conf *conf, char *argv[]);
__hidden extern struct lxc_conf *lxc_conf_init(void);
};
/* placed in the thread local storage pool for non-bionic targets */
-#if defined(THREAD_LOCAL_STORAGE_SUPPORTED)
static thread_local const char *values[sizeof(options) / sizeof(options[0])] = {0};
-#elif defined(ENFORCE_THREAD_SAFETY)
- #error ENFORCE_THREAD_SAFETY was set but cannot be guaranteed due to missing TLS
-#else
- static const char *values[sizeof(options) / sizeof(options[0])] = {0};
-#endif
/* user_config_path is freed as soon as it is used */
char *user_config_path = NULL;