*
* Copyright 2011 Novell, Inc (http://www.novell.com)
* Copyright 2011 Xamarin, Inc (http://www.xamarin.com)
+ * Licensed under the MIT license. See LICENSE file in the project root for full license information.
*/
#ifndef __MONO_TLS_H__
#define __MONO_TLS_H__
+#include <glib.h>
+
+/* TLS entries used by the runtime */
+typedef enum {
+ /* mono_thread_internal_current () */
+ TLS_KEY_THREAD = 0,
+ TLS_KEY_JIT_TLS = 1,
+ /* mono_domain_get () */
+ TLS_KEY_DOMAIN = 2,
+ TLS_KEY_LMF = 3,
+ TLS_KEY_SGEN_THREAD_INFO = 4,
+ TLS_KEY_SGEN_TLAB_NEXT_ADDR = 5,
+ TLS_KEY_SGEN_TLAB_TEMP_END = 6,
+ TLS_KEY_BOEHM_GC_THREAD = 7,
+ TLS_KEY_LMF_ADDR = 8,
+ TLS_KEY_SGEN_IN_CRITICAL_REGION_ADDR = 9,
+ TLS_KEY_NUM = 10
+} MonoTlsKey;
#ifdef HOST_WIN32
static inline int
mono_native_tls_alloc (MonoNativeTlsKey *key, void *destructor)
{
- return pthread_key_create (key, destructor) == 0;
+ return pthread_key_create (key, (void (*)(void*)) destructor) == 0;
}
static inline void
#endif /* HOST_WIN32 */
+int mono_tls_key_get_offset (MonoTlsKey key);
+void mono_tls_key_set_offset (MonoTlsKey key, int offset);
#endif /* __MONO_TLS_H__ */