X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Futils%2Fmono-threads-coop.c;h=3b11148aafe3af5d8c7ff2d93368bb3033da1e10;hb=ac32aa114ab7cca67498ae8da30188bbbd8923f0;hp=dcf1a786e40b458bd0a67de0cd9a5175b5cf7699;hpb=0a7461e32c3b99563c515a0079923a4471e44240;p=mono.git diff --git a/mono/utils/mono-threads-coop.c b/mono/utils/mono-threads-coop.c index dcf1a786e40..3b11148aafe 100644 --- a/mono/utils/mono-threads-coop.c +++ b/mono/utils/mono-threads-coop.c @@ -24,6 +24,7 @@ #include #include #include +#include #ifdef TARGET_OSX #include @@ -263,8 +264,8 @@ mono_threads_coop_end_global_suspend (void) mono_polling_required = 0; } -void* -mono_threads_enter_gc_unsafe_region (void* stackdata) +gpointer +mono_threads_enter_gc_unsafe_region (gpointer* stackdata) { if (!mono_threads_is_coop_enabled ()) return NULL; @@ -273,10 +274,40 @@ mono_threads_enter_gc_unsafe_region (void* stackdata) } void -mono_threads_exit_gc_unsafe_region (void *regions_cookie, void* stackdata) +mono_threads_exit_gc_unsafe_region (gpointer cookie, gpointer* stackdata) +{ + if (!mono_threads_is_coop_enabled ()) + return; + + mono_threads_reset_blocking_end (cookie, stackdata); +} + +void +mono_threads_assert_gc_unsafe_region (void) +{ + MONO_REQ_GC_UNSAFE_MODE; +} + +gpointer +mono_threads_enter_gc_safe_region (gpointer *stackdata) +{ + if (!mono_threads_is_coop_enabled ()) + return NULL; + + return mono_threads_prepare_blocking (stackdata); +} + +void +mono_threads_exit_gc_safe_region (gpointer cookie, gpointer *stackdata) { if (!mono_threads_is_coop_enabled ()) return; - mono_threads_reset_blocking_end (regions_cookie, stackdata); + mono_threads_finish_blocking (cookie, stackdata); +} + +void +mono_threads_assert_gc_safe_region (void) +{ + MONO_REQ_GC_SAFE_MODE; }