Counters is a Mono API for flexible statistics collection and is used to track different events inside the JIT.
You would typically register an address with the mono_counters_register routine and increment the counters from your application as you go. At the end of the program you would call mono_counters_dump which will display all the registered counters.
If you need more complicated counter computation, a function can be provided instead of an address. In that case the MONO_COUNTER_CALLBACK flag must be ored in the type request.
The types that can be rendered are:
MONO_COUNTER_INT
MONO_COUNTER_UINT
MONO_COUNTER_WORD
MONO_COUNTER_LONG
MONO_COUNTER_ULONG
MONO_COUNTER_DOUBLE
MONO_COUNTER_STRING
To organize the output, you register also a section where the counter will be displayed, or one of the following values when you register your counter:
MONO_COUNTER_JIT
MONO_COUNTER_GC
MONO_COUNTER_METADATA
MONO_COUNTER_GENERICS
MONO_COUNTER_SECURITY
mono_counters_dump
| section_mask | The sections to dump counters for |
| outfile | a FILE to dump the results to |
Displays the counts of all the enabled counters registered. To filter by variance, you can OR one or more variance with the specific section you want. Use MONO_COUNTER_SECTION_MASK to dump all categories of a specific variance.
mono_counters_enable
| section_mask | a mask listing the sections that will be displayed |
This is used to track which counters will be displayed.