[dtrace] Probes for taking/releasing the GC lock.
[mono.git] / mono / utils / dtrace.h
1 /* 
2  * dtrace.h: DTrace probes
3  * 
4  * Authors:
5  *   Andreas Faerber <andreas.faerber@web.de>
6  * 
7  */
8
9 #ifndef __UTILS_DTRACE_H__
10 #define __UTILS_DTRACE_H__
11
12 #ifdef ENABLE_DTRACE
13
14
15 #include <mono/utils/mono-dtrace.h>
16
17 #define MONO_PROBE_VES_INIT_BEGIN()             MONO_VES_INIT_BEGIN ()
18 #define MONO_PROBE_VES_INIT_BEGIN_ENABLED()     MONO_VES_INIT_BEGIN_ENABLED ()
19
20 #define MONO_PROBE_VES_INIT_END()               MONO_VES_INIT_END ()
21 #define MONO_PROBE_VES_INIT_END_ENABLED()       MONO_VES_INIT_END_ENABLED ()
22
23
24 #define MONO_PROBE_METHOD_COMPILE_BEGIN(method) \
25         MONO_METHOD_COMPILE_BEGIN ( \
26                 mono_type_get_full_name ((method)->klass), \
27                 (gchar*)(method)->name, \
28                 mono_signature_get_desc ((method)->signature, TRUE) \
29         )
30 #define MONO_PROBE_METHOD_COMPILE_BEGIN_ENABLED()       MONO_METHOD_COMPILE_BEGIN_ENABLED ()
31
32 #define MONO_PROBE_METHOD_COMPILE_END(method, success) \
33         MONO_METHOD_COMPILE_END ( \
34                 mono_type_get_full_name ((method)->klass), \
35                 (gchar*)(method)->name, \
36                 mono_signature_get_desc ((method)->signature, TRUE), \
37                 success \
38         )
39 #define MONO_PROBE_METHOD_COMPILE_END_ENABLED() MONO_METHOD_COMPILE_END_ENABLED ()
40
41
42 #define MONO_PROBE_GC_BEGIN(generation) MONO_GC_BEGIN (generation)
43 #define MONO_PROBE_GC_BEGIN_ENABLED()   MONO_GC_BEGIN_ENABLED ()
44
45 #define MONO_PROBE_GC_END(generation)   MONO_GC_END (generation)
46 #define MONO_PROBE_GC_END_ENABLED()     MONO_GC_END_ENABLED ()
47
48
49 #define MONO_PROBE_GC_LOCKED()          MONO_GC_LOCKED ()
50 #define MONO_PROBE_GC_UNLOCKED()        MONO_GC_UNLOCKED ()
51
52
53 #define MONO_PROBE_GC_HEAP_ALLOC(addr,size)     MONO_GC_HEAP_ALLOC ((addr), (size))
54 #define MONO_PROBE_GC_HEAP_FREE(addr,size)      MONO_GC_HEAP_FREE ((addr), (size))
55
56 #else
57
58
59 #define MONO_PROBE_VES_INIT_BEGIN()
60 #define MONO_PROBE_VES_INIT_BEGIN_ENABLED() (0)
61
62 #define MONO_PROBE_VES_INIT_END()
63 #define MONO_PROBE_VES_INIT_END_ENABLED() (0)
64
65
66 #define MONO_PROBE_METHOD_COMPILE_BEGIN(method)
67 #define MONO_PROBE_METHOD_COMPILE_BEGIN_ENABLED() (0)
68
69 #define MONO_PROBE_METHOD_COMPILE_END(method, success)
70 #define MONO_PROBE_METHOD_COMPILE_END_ENABLED() (0)
71
72
73 #define MONO_PROBE_GC_BEGIN(generation)
74 #define MONO_PROBE_GC_BEGIN_ENABLED() (0)
75
76 #define MONO_PROBE_GC_END(generation)
77 #define MONO_PROBE_GC_END_ENABLED() (0)
78
79
80 #define MONO_PROBE_GC_LOCKED()
81 #define MONO_PROBE_GC_LOCKED_ENABLED() (0)
82
83 #define MONO_PROBE_GC_UNLOCKED()
84 #define MONO_PROBE_GC_UNLOCKED_ENABLED() (0)
85
86
87 #define MONO_PROBE_GC_HEAP_ALLOC(addr,size)
88 #define MONO_PROBE_GC_HEAP_FREE(addr,size)
89
90 #endif
91
92 #endif
93