@@ -567,6 +567,12 @@ mono_profiler_enable_allocations (void)
567
567
return mono_profiler_state .allocations = TRUE;
568
568
}
569
569
570
+ mono_bool
571
+ mono_profiler_enable_fileio (void )
572
+ {
573
+ return mono_profiler_state .fileio = TRUE;
574
+ }
575
+
570
576
/**
571
577
* mono_profiler_set_call_instrumentation_filter_callback:
572
578
*
@@ -952,6 +958,7 @@ typedef void (*MonoLegacyProfileAllocFunc) (MonoLegacyProfiler *prof, MonoObject
952
958
typedef void (* MonoLegacyProfileMethodFunc ) (MonoLegacyProfiler * prof , MonoMethod * method );
953
959
typedef void (* MonoLegacyProfileExceptionFunc ) (MonoLegacyProfiler * prof , MonoObject * object );
954
960
typedef void (* MonoLegacyProfileExceptionClauseFunc ) (MonoLegacyProfiler * prof , MonoMethod * method , int clause_type , int clause_num );
961
+ typedef void (* MonoLegacyProfileFileIOFunc ) (MonoLegacyProfiler * prof , int kind , int size );
955
962
956
963
struct _MonoProfiler {
957
964
MonoProfilerHandle handle ;
@@ -962,6 +969,7 @@ struct _MonoProfiler {
962
969
MonoLegacyProfileGCResizeFunc gc_heap_resize ;
963
970
MonoLegacyProfileJitResult jit_end2 ;
964
971
MonoLegacyProfileAllocFunc allocation ;
972
+ MonoLegacyProfileFileIOFunc fileio ;
965
973
MonoLegacyProfileMethodFunc enter ;
966
974
MonoLegacyProfileMethodFunc leave ;
967
975
MonoLegacyProfileExceptionFunc throw_callback ;
@@ -978,6 +986,7 @@ MONO_API void mono_profiler_install_jit_end (MonoLegacyProfileJitResult end);
978
986
MONO_API void mono_profiler_set_events (int flags );
979
987
MONO_API void mono_profiler_install_allocation (MonoLegacyProfileAllocFunc callback );
980
988
MONO_API void mono_profiler_install_enter_leave (MonoLegacyProfileMethodFunc enter , MonoLegacyProfileMethodFunc fleave );
989
+ MONO_API void mono_profiler_install_fileio (MonoLegacyProfileFileIOFunc callback );
981
990
MONO_API void mono_profiler_install_exception (MonoLegacyProfileExceptionFunc throw_callback , MonoLegacyProfileMethodFunc exc_method_leave , MonoLegacyProfileExceptionClauseFunc clause_callback );
982
991
983
992
static void
@@ -1096,7 +1105,8 @@ typedef enum
1096
1105
MONO_PROFILE_ENTER_LEAVE = 1 << 12 ,
1097
1106
MONO_PROFILE_COVERAGE = 1 << 13 ,
1098
1107
MONO_PROFILE_INS_COVERAGE = 1 << 14 ,
1099
- MONO_PROFILE_STATISTICAL = 1 << 15
1108
+ MONO_PROFILE_STATISTICAL = 1 << 15 ,
1109
+ MONO_PROFILE_FILEIO = 1 << 16
1100
1110
} LegacyMonoProfileFlags ;
1101
1111
1102
1112
void
@@ -1110,6 +1120,9 @@ mono_profiler_set_events (int flags)
1110
1120
1111
1121
if (flags & MONO_PROFILE_ALLOCATIONS )
1112
1122
mono_profiler_enable_allocations ();
1123
+
1124
+ if (flags & MONO_PROFILE_FILEIO )
1125
+ mono_profiler_enable_fileio ();
1113
1126
}
1114
1127
1115
1128
static void
@@ -1127,6 +1140,21 @@ mono_profiler_install_allocation (MonoLegacyProfileAllocFunc callback)
1127
1140
mono_profiler_set_gc_allocation_callback (current -> handle , allocation_cb );
1128
1141
}
1129
1142
1143
+ static void
1144
+ fileio_cb (MonoProfiler * prof , uint64_t kind , uint64_t size )
1145
+ {
1146
+ prof -> fileio (prof -> profiler , kind , size );
1147
+ }
1148
+
1149
+ void
1150
+ mono_profiler_install_fileio (MonoLegacyProfileFileIOFunc callback )
1151
+ {
1152
+ current -> fileio = callback ;
1153
+
1154
+ if (callback )
1155
+ mono_profiler_set_fileio_callback (current -> handle , fileio_cb );
1156
+ }
1157
+
1130
1158
static void
1131
1159
enter_cb (MonoProfiler * prof , MonoMethod * method , MonoProfilerCallContext * context )
1132
1160
{
0 commit comments