/* Stack mark for targets that explicitly require one */
gpointer stack_mark;
+
+ /* GCHandle to MonoInternalThread */
+ guint32 internal_thread_gchandle;
} MonoThreadInfo;
typedef struct {
SMR remains functional as its small_id has not been reclaimed.
*/
void (*thread_detach_with_lock)(THREAD_INFO_TYPE *info);
- gboolean (*mono_method_is_critical) (void *method);
gboolean (*ip_in_critical_region) (MonoDomain *domain, gpointer ip);
- gboolean (*mono_thread_in_critical_region) (THREAD_INFO_TYPE *info);
+ gboolean (*thread_in_critical_region) (THREAD_INFO_TYPE *info);
} MonoThreadInfoCallbacks;
typedef struct {
* a single block with info from both camps.
*/
void
-mono_threads_init (MonoThreadInfoCallbacks *callbacks, size_t thread_info_size);
+mono_thread_info_init (size_t thread_info_size);
+
+void
+mono_thread_info_callbacks_init (MonoThreadInfoCallbacks *callbacks);
void
-mono_threads_signals_init (void);
+mono_thread_info_signals_init (void);
void
-mono_threads_runtime_init (MonoThreadInfoRuntimeCallbacks *callbacks);
+mono_thread_info_runtime_init (MonoThreadInfoRuntimeCallbacks *callbacks);
MonoThreadInfoRuntimeCallbacks *
mono_threads_get_runtime_callbacks (void);
MONO_API void
mono_thread_info_detach (void);
+gboolean
+mono_thread_info_try_get_internal_thread_gchandle (THREAD_INFO_TYPE *info, guint32 *gchandle);
+
+void
+mono_thread_info_set_internal_thread_gchandle (THREAD_INFO_TYPE *info, guint32 gchandle);
+
+void
+mono_thread_info_unset_internal_thread_gchandle (THREAD_INFO_TYPE *info);
+
gboolean
mono_thread_info_is_exiting (void);