X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fmonitor.h;h=f0babcc7396eb7c87f77d442f2447ee06eaf5b0e;hb=HEAD;hp=cc00f2044dc08d8638a7e1b0dfe4b4505ed18db1;hpb=6fc86ee499b93937a52d685a3ca01e5bbecbd0ae;p=mono.git diff --git a/mono/metadata/monitor.h b/mono/metadata/monitor.h index cc00f2044dc..f0babcc7396 100644 --- a/mono/metadata/monitor.h +++ b/mono/metadata/monitor.h @@ -1,5 +1,6 @@ -/* - * monitor.h: Monitor locking functions +/** + * \file + * Monitor locking functions * * Author: * Dick Porter (dick@ximian.com) @@ -12,8 +13,8 @@ #include #include -#include -#include "mono/utils/mono-compiler.h" +#include +#include G_BEGIN_DECLS @@ -39,9 +40,9 @@ struct _MonoThreadsSync #ifdef HAVE_MOVING_COLLECTOR gint32 hash_code; #endif - HANDLE entry_sem; GSList *wait_list; void *data; + MonoCoopSem *entry_sem; }; /* @@ -106,19 +107,24 @@ MONO_API void mono_locks_dump (gboolean include_untaken); void mono_monitor_init (void); void mono_monitor_cleanup (void); -void** mono_monitor_get_object_monitor_weak_link (MonoObject *object); +MonoBoolean mono_monitor_enter_internal (MonoObject *obj); +void mono_monitor_enter_v4_internal (MonoObject *obj, MonoBoolean *lock_taken); + +guint32 mono_monitor_enter_fast (MonoObject *obj); +guint32 mono_monitor_enter_v4_fast (MonoObject *obj, MonoBoolean *lock_taken); + +guint32 mono_monitor_get_object_monitor_gchandle (MonoObject *object); void mono_monitor_threads_sync_members_offset (int *status_offset, int *nest_offset); #define MONO_THREADS_SYNC_MEMBER_OFFSET(o) ((o)>>8) #define MONO_THREADS_SYNC_MEMBER_SIZE(o) ((o)&0xff) -extern gboolean ves_icall_System_Threading_Monitor_Monitor_try_enter(MonoObject *obj, guint32 ms); -extern gboolean ves_icall_System_Threading_Monitor_Monitor_test_owner(MonoObject *obj); -extern gboolean ves_icall_System_Threading_Monitor_Monitor_test_synchronised(MonoObject *obj); +extern MonoBoolean ves_icall_System_Threading_Monitor_Monitor_test_owner(MonoObject *obj); +extern MonoBoolean ves_icall_System_Threading_Monitor_Monitor_test_synchronised(MonoObject *obj); extern void ves_icall_System_Threading_Monitor_Monitor_pulse(MonoObject *obj); extern void ves_icall_System_Threading_Monitor_Monitor_pulse_all(MonoObject *obj); -extern gboolean ves_icall_System_Threading_Monitor_Monitor_wait(MonoObject *obj, guint32 ms); -extern void ves_icall_System_Threading_Monitor_Monitor_try_enter_with_atomic_var (MonoObject *obj, guint32 ms, char *lockTaken); +extern MonoBoolean ves_icall_System_Threading_Monitor_Monitor_wait(MonoObject *obj, guint32 ms); +extern void ves_icall_System_Threading_Monitor_Monitor_try_enter_with_atomic_var (MonoObject *obj, guint32 ms, MonoBoolean *lockTaken); G_END_DECLS