-void mono_profiler_install_jit_compile (MonoProfileMethodFunc start, MonoProfileMethodResult end);
-void mono_profiler_install_jit_end (MonoProfileJitResult end);
-void mono_profiler_install_method_free (MonoProfileMethodFunc callback);
-void mono_profiler_install_method_invoke (MonoProfileMethodFunc start, MonoProfileMethodFunc end);
-void mono_profiler_install_enter_leave (MonoProfileMethodFunc enter, MonoProfileMethodFunc fleave);
-void mono_profiler_install_thread (MonoProfileThreadFunc start, MonoProfileThreadFunc end);
-void mono_profiler_install_thread_name (MonoProfileThreadNameFunc thread_name_cb);
-void mono_profiler_install_transition (MonoProfileMethodResult callback);
-void mono_profiler_install_allocation (MonoProfileAllocFunc callback);
-void mono_profiler_install_monitor (MonoProfileMonitorFunc callback);
-void mono_profiler_install_statistical (MonoProfileStatFunc callback);
-void mono_profiler_install_statistical_call_chain (MonoProfileStatCallChainFunc callback, int call_chain_depth, MonoProfilerCallChainStrategy call_chain_strategy);
-void mono_profiler_install_exception (MonoProfileExceptionFunc throw_callback, MonoProfileMethodFunc exc_method_leave, MonoProfileExceptionClauseFunc clause_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_install_gc_moves (MonoProfileGCMoveFunc callback);
-void mono_profiler_install_gc_roots (MonoProfileGCHandleFunc handle_callback);
-void mono_profiler_install_runtime_initialized (MonoProfileFunc runtime_initialized_callback);
-
-void mono_profiler_install_code_chunk_new (MonoProfilerCodeChunkNew callback);
-void mono_profiler_install_code_chunk_destroy (MonoProfilerCodeChunkDestroy callback);
-void mono_profiler_install_code_buffer_new (MonoProfilerCodeBufferNew callback);
-
-void mono_profiler_install_iomap (MonoProfileIomapFunc callback);
-
-void mono_profiler_load (const char *desc);
+MONO_API void mono_profiler_install_jit_compile (MonoProfileMethodFunc start, MonoProfileMethodResult end);
+MONO_API void mono_profiler_install_jit_end (MonoProfileJitResult end);
+MONO_API void mono_profiler_install_method_free (MonoProfileMethodFunc callback);
+MONO_API void mono_profiler_install_method_invoke (MonoProfileMethodFunc start, MonoProfileMethodFunc end);
+MONO_API void mono_profiler_install_enter_leave (MonoProfileMethodFunc enter, MonoProfileMethodFunc fleave);
+MONO_API void mono_profiler_install_thread (MonoProfileThreadFunc start, MonoProfileThreadFunc end);
+MONO_API void mono_profiler_install_thread_name (MonoProfileThreadNameFunc thread_name_cb);
+MONO_API void mono_profiler_install_transition (MonoProfileMethodResult callback);
+MONO_API void mono_profiler_install_allocation (MonoProfileAllocFunc callback);
+MONO_API void mono_profiler_install_monitor (MonoProfileMonitorFunc callback);
+MONO_API void mono_profiler_install_statistical (MonoProfileStatFunc callback);
+MONO_API void mono_profiler_install_statistical_call_chain (MonoProfileStatCallChainFunc callback, int call_chain_depth, MonoProfilerCallChainStrategy call_chain_strategy);
+MONO_API void mono_profiler_install_exception (MonoProfileExceptionFunc throw_callback, MonoProfileMethodFunc exc_method_leave, MonoProfileExceptionClauseFunc clause_callback);
+MONO_API void mono_profiler_install_coverage_filter (MonoProfileCoverageFilterFunc callback);
+MONO_API void mono_profiler_coverage_get (MonoProfiler *prof, MonoMethod *method, MonoProfileCoverageFunc func);
+MONO_API void mono_profiler_install_gc (MonoProfileGCFunc callback, MonoProfileGCResizeFunc heap_resize_callback);
+MONO_API void mono_profiler_install_gc_moves (MonoProfileGCMoveFunc callback);
+MONO_API void mono_profiler_install_gc_roots (MonoProfileGCHandleFunc handle_callback, MonoProfileGCRootFunc roots_callback);
+MONO_API void mono_profiler_install_runtime_initialized (MonoProfileFunc runtime_initialized_callback);
+
+MONO_API void mono_profiler_install_code_chunk_new (MonoProfilerCodeChunkNew callback);
+MONO_API void mono_profiler_install_code_chunk_destroy (MonoProfilerCodeChunkDestroy callback);
+MONO_API void mono_profiler_install_code_buffer_new (MonoProfilerCodeBufferNew callback);
+
+MONO_API void mono_profiler_install_iomap (MonoProfileIomapFunc callback);
+
+MONO_API void mono_profiler_load (const char *desc);
+
+typedef enum {
+ /* Elapsed time is tracked by user+kernel time of the process - this is the default*/
+ MONO_PROFILER_STAT_MODE_PROCESS = 0,
+ /* Elapsed time is tracked by wallclock time */
+ MONO_PROFILER_STAT_MODE_REAL = 1,
+} MonoProfileSamplingMode;
+
+MONO_API void mono_profiler_set_statistical_mode (MonoProfileSamplingMode mode, int64_t sampling_frequency_is_us);