X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmetadata%2Fprofiler.h;h=1d9e713560bd4f3c0aac3579dc011e21bf8f76ac;hb=0ca4c0c5ef6ba0bf13fd721deb36e7b501ec5829;hp=0d7d981b0a783d0f24562521c4517c3c6ca21e6a;hpb=0abc2e6270020edc4a5b4c66f93b4ae582815f20;p=mono.git diff --git a/mono/metadata/profiler.h b/mono/metadata/profiler.h index 0d7d981b0a7..1d9e713560b 100644 --- a/mono/metadata/profiler.h +++ b/mono/metadata/profiler.h @@ -4,6 +4,8 @@ #include #include +G_BEGIN_DECLS + typedef enum { MONO_PROFILE_NONE = 0, MONO_PROFILE_APPDOMAIN_EVENTS = 1 << 0, @@ -20,7 +22,8 @@ typedef enum { MONO_PROFILE_TRANSITIONS = 1 << 11, MONO_PROFILE_ENTER_LEAVE = 1 << 12, MONO_PROFILE_COVERAGE = 1 << 13, - MONO_PROFILE_INS_COVERAGE = 1 << 14 + MONO_PROFILE_INS_COVERAGE = 1 << 14, + MONO_PROFILE_STATISTICAL = 1 << 15 } MonoProfileFlags; typedef enum { @@ -28,6 +31,15 @@ typedef enum { MONO_PROFILE_FAILED } MonoProfileResult; +typedef enum { + MONO_GC_EVENT_START, + MONO_GC_EVENT_MARK_START, + MONO_GC_EVENT_MARK_END, + MONO_GC_EVENT_RECLAIM_START, + MONO_GC_EVENT_RECLAIM_END, + MONO_GC_EVENT_END +} MonoGCEvent; + /* coverage info */ typedef struct { MonoMethod *method; @@ -40,6 +52,7 @@ typedef struct { typedef struct _MonoProfiler MonoProfiler; + /* * Functions that the runtime will call on the profiler. */ @@ -54,14 +67,18 @@ typedef void (*MonoProfileAssemblyFunc) (MonoProfiler *prof, MonoAssembly *assem typedef void (*MonoProfileAppDomainResult)(MonoProfiler *prof, MonoDomain *domain, int result); typedef void (*MonoProfileMethodResult) (MonoProfiler *prof, MonoMethod *method, int result); +typedef void (*MonoProfileJitResult) (MonoProfiler *prof, MonoMethod *method, MonoJitInfo* jinfo, int result); typedef void (*MonoProfileClassResult) (MonoProfiler *prof, MonoClass *klass, int result); typedef void (*MonoProfileModuleResult) (MonoProfiler *prof, MonoImage *module, int result); typedef void (*MonoProfileAssemblyResult) (MonoProfiler *prof, MonoAssembly *assembly, int result); typedef void (*MonoProfileMethodInline) (MonoProfiler *prof, MonoMethod *parent, MonoMethod *child, int *ok); -typedef void (*MonoProfileThreadFunc) (MonoProfiler *prof, guint32 tid); +typedef void (*MonoProfileThreadFunc) (MonoProfiler *prof, gsize tid); typedef void (*MonoProfileAllocFunc) (MonoProfiler *prof, MonoObject *obj, MonoClass *klass); +typedef void (*MonoProfileStatFunc) (MonoProfiler *prof, guchar *ip, void *context); +typedef void (*MonoProfileGCFunc) (MonoProfiler *prof, MonoGCEvent event, int generation); +typedef void (*MonoProfileGCResizeFunc) (MonoProfiler *prof, gint64 new_size); typedef gboolean (*MonoProfileCoverageFilterFunc) (MonoProfiler *prof, MonoMethod *method); @@ -85,14 +102,19 @@ void mono_profiler_install_class (MonoProfileClassFunc start_load, MonoPro MonoProfileClassFunc start_unload, MonoProfileClassFunc end_unload); void mono_profiler_install_jit_compile (MonoProfileMethodFunc start, MonoProfileMethodResult end); +void mono_profiler_install_jit_end (MonoProfileJitResult end); void mono_profiler_install_enter_leave (MonoProfileMethodFunc enter, MonoProfileMethodFunc fleave); void mono_profiler_install_thread (MonoProfileThreadFunc start, MonoProfileThreadFunc end); void mono_profiler_install_transition (MonoProfileMethodResult callback); void mono_profiler_install_allocation (MonoProfileAllocFunc callback); +void mono_profiler_install_statistical (MonoProfileStatFunc callback); void mono_profiler_install_coverage_filter (MonoProfileCoverageFilterFunc callback); void mono_profiler_coverage_get (MonoProfiler *prof, MonoMethod *method, MonoProfileCoverageFunc func); +void mono_profiler_install_gc (MonoProfileGCFunc callback, MonoProfileGCResizeFunc heap_resize_callback); void mono_profiler_load (const char *desc); +G_END_DECLS + #endif /* __MONO_PROFILER_H__ */