#define BUF_ID 0x4D504C01
#define LOG_HEADER_ID 0x4D505A01
-#define LOG_VERSION_MAJOR 1
-#define LOG_VERSION_MINOR 1
-#define LOG_DATA_VERSION 13
+#define LOG_VERSION_MAJOR 2
+#define LOG_VERSION_MINOR 0
+#define LOG_DATA_VERSION 14
/*
* Changes in major/minor versions:
moved the time field in TYPE_SAMPLE_HIT to right after the event byte, now encoded as a regular time field
changed the time field in TYPE_SAMPLE_COUNTERS to be encoded as a regular time field (in nanoseconds)
added TYPE_GC_FINALIZE_{START,END,OBJECT_START,OBJECT_END}
+ * version 14: added event field to TYPE_MONITOR instead of encoding it in the extended info
+ all TYPE_MONITOR events can now contain backtraces
+ changed address field in TYPE_SAMPLE_UBIN to be based on ptr_base
+ added an image pointer field to assembly load events
+ added an exception object field to TYPE_CLAUSE
+ class unload events no longer exist (they were never emitted)
*/
enum {
SYNC_POINT_WORLD_START
} MonoProfilerSyncPointType;
+typedef enum {
+ MONO_PROFILER_MONITOR_CONTENTION = 1,
+ MONO_PROFILER_MONITOR_DONE = 2,
+ MONO_PROFILER_MONITOR_FAIL = 3,
+} MonoProfilerMonitorEvent;
+
+enum {
+ MONO_PROFILER_GC_HANDLE_CREATED,
+ MONO_PROFILER_GC_HANDLE_DESTROYED,
+};
+
// Sampling sources
// Unless you have compiled with --enable-perf-events, only SAMPLE_CYCLES is available
enum {
//Max size of the sample hit buffer, we'll drop frames if it's reached
int max_allocated_sample_hits;
- MonoProfileSamplingMode sampling_mode;
+ MonoProfilerSampleMode sampling_mode;
} ProfilerConfig;
void proflog_parse_args (ProfilerConfig *config, const char *desc);