#endif
#endif
+ mono_threads_suspend_policy_init ();
g_string_append_printf (output, "\tSuspend: %s\n", mono_threads_suspend_policy_name (mono_threads_suspend_policy ()));
return g_string_free (output, FALSE);
return policy;
}
-static char threads_suspend_policy;
+char mono_threads_suspend_policy_hidden_dont_modify;
-MonoThreadsSuspendPolicy
-mono_threads_suspend_policy (void)
+void
+mono_threads_suspend_policy_init (void)
{
- int policy = threads_suspend_policy;
- if (G_UNLIKELY (policy == 0)) {
+ int policy = 0;
+ {
// thread suspend policy:
// if the MONO_THREADS_SUSPEND env is set, use it.
// otherwise if there's a compiled-in default, use it.
W32_RESTORE_LAST_ERROR_FROM_RESTORE_POINT;
g_assert (policy);
- threads_suspend_policy = (char)policy;
+ mono_threads_suspend_policy_hidden_dont_modify = (char)policy;
}
- return (MonoThreadsSuspendPolicy)policy;
}
static MonoThreadsSuspendPolicy
void
mono_threads_suspend_override_policy (MonoThreadsSuspendPolicy new_policy)
{
- threads_suspend_policy = (char)mono_threads_suspend_validate_policy (new_policy);
+ mono_threads_suspend_policy_hidden_dont_modify = (char)mono_threads_suspend_validate_policy (new_policy);
g_warning ("Overriding suspend policy. Using %s suspend.", mono_threads_suspend_policy_name (mono_threads_suspend_policy ()));
}
gboolean
mono_threads_suspend_policy_is_blocking_transition_enabled (MonoThreadsSuspendPolicy p);
-MonoThreadsSuspendPolicy
-mono_threads_suspend_policy (void) MONO_LLVM_INTERNAL;
+extern char mono_threads_suspend_policy_hidden_dont_modify MONO_LLVM_INTERNAL;
+
+static inline MonoThreadsSuspendPolicy
+mono_threads_suspend_policy (void) {
+ return (MonoThreadsSuspendPolicy)mono_threads_suspend_policy_hidden_dont_modify;
+}
+
+void
+mono_threads_suspend_policy_init (void);
const char*
mono_threads_suspend_policy_name (MonoThreadsSuspendPolicy p);
gboolean res;
thread_info_size = info_size;
char *sleepLimit;
+
+ mono_threads_suspend_policy_init ();
+
#ifdef HOST_WIN32
res = mono_native_tls_alloc (&thread_info_key, NULL);
res = mono_native_tls_alloc (&thread_exited_key, NULL);