void mono_threads_init (MonoThreadInfoCallbacks *callbacks, size_t info_size) { gboolean res; threads_callbacks = *callbacks; thread_info_size = info_size; #ifdef HOST_WIN32 res = mono_native_tls_alloc (&thread_info_key, NULL); #else res = mono_native_tls_alloc (&thread_info_key, unregister_thread); #endif g_assert (res); res = mono_native_tls_alloc (&small_id_key, NULL); g_assert (res); MONO_SEM_INIT (&global_suspend_semaphore, 1); mono_lls_init (&thread_list, NULL); mono_thread_smr_init (); mono_threads_init_platform (); #if defined(__MACH__) mono_mach_init (thread_info_key); #endif mono_threads_inited = TRUE; g_assert (sizeof (MonoNativeThreadId) <= sizeof (uintptr_t)); }
void mono_threads_init (MonoThreadInfoCallbacks *callbacks, size_t info_size) { gboolean res; threads_callbacks = *callbacks; thread_info_size = info_size; #ifdef HOST_WIN32 res = mono_native_tls_alloc (&thread_info_key, NULL); #else res = mono_native_tls_alloc (&thread_info_key, unregister_thread); #endif g_assert (res); res = mono_native_tls_alloc (&small_id_key, NULL); g_assert (res); InitializeCriticalSection (&global_suspend_lock); mono_lls_init (&thread_list, NULL); mono_thread_smr_init (); mono_threads_init_platform (); mono_threads_inited = TRUE; g_assert (sizeof (MonoNativeThreadId) <= sizeof (uintptr_t)); }
void mono_threads_init (MonoThreadInfoCallbacks *callbacks, size_t info_size) { gboolean res; threads_callbacks = *callbacks; thread_info_size = info_size; #ifdef HOST_WIN32 res = mono_native_tls_alloc (&thread_info_key, NULL); res = mono_native_tls_alloc (&thread_exited_key, NULL); #else res = mono_native_tls_alloc (&thread_info_key, (void *) unregister_thread); res = mono_native_tls_alloc (&thread_exited_key, (void *) thread_exited_dtor); #endif g_assert (res); #ifndef HAVE_KW_THREAD res = mono_native_tls_alloc (&small_id_key, NULL); #endif g_assert (res); unified_suspend_enabled = g_getenv ("MONO_ENABLE_UNIFIED_SUSPEND") != NULL || mono_threads_is_coop_enabled (); mono_coop_sem_init (&global_suspend_semaphore, 1); mono_os_sem_init (&suspend_semaphore, 0); mono_lls_init (&thread_list, NULL); mono_thread_smr_init (); mono_threads_init_platform (); mono_threads_init_coop (); mono_threads_init_abort_syscall (); #if defined(__MACH__) mono_mach_init (thread_info_key); #endif mono_threads_inited = TRUE; g_assert (sizeof (MonoNativeThreadId) <= sizeof (uintptr_t)); }