24 #ifndef TLS_SUPPORT_H_INCLUDED
25 #define TLS_SUPPORT_H_INCLUDED
29 #include <syslog-ng-config.h>
31 #if ! SYSLOG_NG_HAVE_THREAD_KEYWORD
36 static struct __slng_tls_variables *
37 __slng_tls_init_thread(pthread_key_t
key,
size_t size)
39 struct __slng_tls_variables *ptr;
41 ptr = calloc(1, size);
45 pthread_setspecific(
key, ptr);
49 static inline struct __slng_tls_variables *__slng_tls_deref_helper(pthread_key_t
key,
size_t size)
51 struct __slng_tls_variables *ptr;
53 ptr = pthread_getspecific(
key);
55 ptr = __slng_tls_init_thread(
key, size);
59 #define TLS_BLOCK_START \
60 static pthread_key_t __slng_tls_key; \
61 static void __attribute__((constructor)) __slng_tls_init_key(void) \
63 pthread_key_create(&__slng_tls_key, free); \
66 struct __slng_tls_variables
70 #define __slng_tls_deref(var) (*({ struct __slng_tls_variables *__ptr = __slng_tls_deref_helper(__slng_tls_key, sizeof(struct __slng_tls_variables)); &__ptr->var; }))
76 #define TLS_BLOCK_START \
77 struct __slng_tls_variables
79 #define TLS_BLOCK_END \
81 static __thread struct __slng_tls_variables __slng_tls
84 #define __slng_tls_deref(var) (__slng_tls.var)
struct tm key
Definition: cache.c:63