-void mono_thread_hazardous_free_or_queue (gpointer p, MonoHazardousFreeFunc free_func) MONO_INTERNAL;
-void mono_thread_hazardous_try_free_all (void) MONO_INTERNAL;
-MonoThreadHazardPointers* mono_hazard_pointer_get (void) MONO_INTERNAL;
-gpointer get_hazardous_pointer (gpointer volatile *pp, MonoThreadHazardPointers *hp, int hazard_index) MONO_INTERNAL;
+typedef enum {
+ HAZARD_FREE_MAY_LOCK,
+ HAZARD_FREE_NO_LOCK,
+} HazardFreeLocking;
+
+typedef enum {
+ HAZARD_FREE_SAFE_CTX,
+ HAZARD_FREE_ASYNC_CTX,
+} HazardFreeContext;
+
+void mono_thread_hazardous_free_or_queue (gpointer p, MonoHazardousFreeFunc free_func,
+ HazardFreeLocking locking, HazardFreeContext context);
+void mono_thread_hazardous_try_free_all (void);
+void mono_thread_hazardous_try_free_some (void);
+MonoThreadHazardPointers* mono_hazard_pointer_get (void);
+gpointer get_hazardous_pointer (gpointer volatile *pp, MonoThreadHazardPointers *hp, int hazard_index);