[System] Use GZipStream from corefx
[mono-project.git] / mono / metadata / lock-tracer.h
blobee4ab3419504a593ece5443c857a74792ae186af
1 #ifndef __MONO_METADATA_LOCK_TRACER_H__
2 #define __MONO_METADATA_LOCK_TRACER_H__
4 /*This is a private header*/
5 #include <glib.h>
7 #include "mono/utils/mono-os-mutex.h"
8 #include "mono/utils/mono-coop-mutex.h"
10 G_BEGIN_DECLS
12 typedef enum {
13 InvalidLock = 0,
14 LoaderLock,
15 ImageDataLock,
16 DomainLock,
17 DomainAssembliesLock,
18 DomainJitCodeHashLock,
19 IcallLock,
20 AssemblyBindingLock,
21 MarshalLock,
22 ClassesLock,
23 LoaderGlobalDataLock,
24 ThreadsLock,
25 } RuntimeLocks;
27 #ifdef LOCK_TRACER
29 void mono_locks_tracer_init (void);
31 void mono_locks_lock_acquired (RuntimeLocks kind, gpointer lock);
32 void mono_locks_lock_released (RuntimeLocks kind, gpointer lock);
34 #else
36 #define mono_locks_tracer_init() do {} while (0)
38 #define mono_locks_lock_acquired(__UNUSED0, __UNUSED1) do {} while (0)
39 #define mono_locks_lock_released(__UNUSED0, __UNUSED1) do {} while (0)
41 #endif
43 #define mono_locks_os_acquire(LOCK,NAME) \
44 do { \
45 mono_os_mutex_lock (LOCK); \
46 mono_locks_lock_acquired (NAME, LOCK); \
47 } while (0)
49 #define mono_locks_os_release(LOCK,NAME) \
50 do { \
51 mono_locks_lock_released (NAME, LOCK); \
52 mono_os_mutex_unlock (LOCK); \
53 } while (0)
55 #define mono_locks_coop_acquire(LOCK,NAME) \
56 do { \
57 mono_coop_mutex_lock (LOCK); \
58 mono_locks_lock_acquired (NAME, LOCK); \
59 } while (0)
61 #define mono_locks_coop_release(LOCK,NAME) \
62 do { \
63 mono_locks_lock_released (NAME, LOCK); \
64 mono_coop_mutex_unlock (LOCK); \
65 } while (0)
67 G_END_DECLS
69 #endif /* __MONO_METADATA_LOCK_TRACER_H__ */