/* * mono-tls.h: Low-level TLS support * * Author: * Rodrigo Kumpera (kumpera@gmail.com) * * (C) 2011 Novell, Inc */ #ifndef __MONO_TLS_H__ #define __MONO_TLS_H__ #ifdef HOST_WIN32 #include #define MonoNativeTlsKey DWORD #define mono_native_tls_alloc(key,destructor) ((*(key) = TlsAlloc ()) != TLS_OUT_OF_INDEXES && destructor == NULL) #define mono_native_tls_free TlsFree #define mono_native_tls_set_value TlsSetValue #define mono_native_tls_get_value TlsGetValue #else #include #define MonoNativeTlsKey pthread_key_t #define mono_native_tls_get_value pthread_getspecific static inline int mono_native_tls_alloc (MonoNativeTlsKey *key, void *destructor) { return pthread_key_create (key, destructor) == 0; } static inline void mono_native_tls_free (MonoNativeTlsKey key) { pthread_key_delete (key); } static inline int mono_native_tls_set_value (MonoNativeTlsKey key, gpointer value) { return !pthread_setspecific (key, value); } #endif /* HOST_WIN32 */ #endif /* __MONO_TLS_H__ */