Merge pull request #3142 from henricm/fix-for-win-mono_string_to_utf8
[mono.git] / mono / utils / mono-tls.h
index c38708469f34d6adea5f7c3244f21e1158fb2eb2..2c3ed31df4539c5aa6813646d062bfb03fbdef9f 100644 (file)
@@ -6,11 +6,30 @@
  *
  * 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
 
@@ -32,7 +51,7 @@
 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
@@ -49,5 +68,7 @@ mono_native_tls_set_value (MonoNativeTlsKey key, gpointer value)
 
 #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__ */