[runtime] Rename most System.Reflection.MonoX classes to RuntimeX for consistency...
[mono-project.git] / mono / metadata / lock-tracer.h
blobf9b0bb3f9aa90f372e7c112c51fc72e3d93dc5a2
1 /**
2 * \file
3 */
5 #ifndef __MONO_METADATA_LOCK_TRACER_H__
6 #define __MONO_METADATA_LOCK_TRACER_H__
8 /*This is a private header*/
9 #include <glib.h>
11 #include "mono/utils/mono-os-mutex.h"
12 #include "mono/utils/mono-coop-mutex.h"
14 typedef enum {
15 InvalidLock = 0,
16 LoaderLock,
17 ImageDataLock,
18 DomainLock,
19 DomainAssembliesLock,
20 DomainJitCodeHashLock,
21 IcallLock,
22 AssemblyBindingLock,
23 MarshalLock,
24 ClassesLock,
25 LoaderGlobalDataLock,
26 ThreadsLock,
27 } RuntimeLocks;
29 #ifdef LOCK_TRACER
31 void mono_locks_tracer_init (void);
33 void mono_locks_lock_acquired (RuntimeLocks kind, gpointer lock);
34 void mono_locks_lock_released (RuntimeLocks kind, gpointer lock);
36 #else
38 #define mono_locks_tracer_init() do {} while (0)
40 #define mono_locks_lock_acquired(__UNUSED0, __UNUSED1) do {} while (0)
41 #define mono_locks_lock_released(__UNUSED0, __UNUSED1) do {} while (0)
43 #endif
45 #define mono_locks_os_acquire(LOCK,NAME) \
46 do { \
47 mono_os_mutex_lock (LOCK); \
48 mono_locks_lock_acquired (NAME, LOCK); \
49 } while (0)
51 #define mono_locks_os_release(LOCK,NAME) \
52 do { \
53 mono_locks_lock_released (NAME, LOCK); \
54 mono_os_mutex_unlock (LOCK); \
55 } while (0)
57 #define mono_locks_coop_acquire(LOCK,NAME) \
58 do { \
59 mono_coop_mutex_lock (LOCK); \
60 mono_locks_lock_acquired (NAME, LOCK); \
61 } while (0)
63 #define mono_locks_coop_release(LOCK,NAME) \
64 do { \
65 mono_locks_lock_released (NAME, LOCK); \
66 mono_coop_mutex_unlock (LOCK); \
67 } while (0)
69 #endif /* __MONO_METADATA_LOCK_TRACER_H__ */