annotate probes.h @ 209:0c83ea8adefc

Close to compilable version of common_ancestor -- still includes HW dep stuff
author Some Random Person <seanhalle@yahoo.com>
date Sun, 04 Mar 2012 14:26:35 -0800
parents eaf7e4c58c9e
children
rev   line source
seanhalle@208 1 /*
seanhalle@208 2 * Copyright 2009 OpenSourceStewardshipFoundation.org
seanhalle@208 3 * Licensed under GNU General Public License version 2
seanhalle@208 4 *
seanhalle@208 5 * Author: seanhalle@yahoo.com
seanhalle@208 6 *
seanhalle@208 7 */
seanhalle@208 8
seanhalle@208 9 #ifndef _PROBES_H
seanhalle@208 10 #define _PROBES_H
seanhalle@208 11 #define _GNU_SOURCE
seanhalle@208 12
seanhalle@208 13 #include "VMS_primitive_data_types.h"
seanhalle@208 14
seanhalle@208 15 #include <sys/time.h>
seanhalle@208 16
seanhalle@208 17 /*Note on order of include files:
seanhalle@208 18 * This file relies on #defines that appear in other files..
seanhalle@208 19 */
seanhalle@208 20
seanhalle@208 21
seanhalle@208 22 //typedef struct _IntervalProbe IntervalProbe; //in VMS.h
seanhalle@208 23
seanhalle@208 24 struct _IntervalProbe
seanhalle@208 25 {
seanhalle@208 26 char *nameStr;
seanhalle@208 27 int32 probeID;
seanhalle@208 28
seanhalle@208 29 int32 schedChoiceWasRecorded;
seanhalle@208 30 int32 coreNum;
seanhalle@209 31 int32 slaveID;
seanhalle@209 32 float64 slaveCreateSecs;
seanhalle@208 33
seanhalle@209 34 // #ifdef STATS__USE_TSC_PROBES
seanhalle@208 35 TSCount startStamp;
seanhalle@208 36 TSCount endStamp;
seanhalle@209 37 // #else
seanhalle@209 38 // struct timeval startStamp;
seanhalle@209 39 // struct timeval endStamp;
seanhalle@209 40 // #endif
seanhalle@208 41 float64 startSecs;
seanhalle@208 42 float64 endSecs;
seanhalle@208 43 float64 interval;
seanhalle@208 44 DblHist *hist;//if NULL, then is single interval probe
seanhalle@208 45 };
seanhalle@208 46
seanhalle@208 47
seanhalle@209 48 int32
seanhalle@209 49 VMS_impl__create_single_interval_probe( char *nameStr, SlaveVP *animSlv );
seanhalle@209 50
seanhalle@209 51 int32
seanhalle@209 52 VMS_impl__create_histogram_probe( int32 numBins, float64 startValue,
seanhalle@209 53 float64 binWidth, char *nameStr, SlaveVP *animSlv );
seanhalle@209 54
seanhalle@209 55 int32
seanhalle@209 56 VMS_impl__record_time_point_into_new_probe( char *nameStr, SlaveVP *animSlv);
seanhalle@209 57
seanhalle@209 58 int32
seanhalle@209 59 VMS_ext_impl__record_time_point_into_new_probe( char *nameStr );
seanhalle@209 60
seanhalle@209 61 void
seanhalle@209 62 VMS_impl__free_probe( IntervalProbe *probe );
seanhalle@209 63
seanhalle@209 64 void
seanhalle@209 65 VMS_impl__index_probe_by_its_name( int32 probeID, SlaveVP *animSlv );
seanhalle@209 66
seanhalle@209 67 IntervalProbe *
seanhalle@209 68 VMS_impl__get_probe_by_name( char *probeName, SlaveVP *animSlv );
seanhalle@209 69
seanhalle@209 70 void
seanhalle@209 71 VMS_impl__record_sched_choice_into_probe( int32 probeID, SlaveVP *animSlv );
seanhalle@209 72
seanhalle@209 73 void
seanhalle@209 74 VMS_impl__record_interval_start_in_probe( int32 probeID );
seanhalle@209 75
seanhalle@209 76 void
seanhalle@209 77 VMS_impl__record_interval_end_in_probe( int32 probeID );
seanhalle@209 78
seanhalle@209 79 void
seanhalle@209 80 VMS_impl__print_stats_of_probe( int32 probeID );
seanhalle@209 81
seanhalle@209 82 void
seanhalle@209 83 VMS_impl__print_stats_of_all_probes();
seanhalle@209 84
seanhalle@208 85
seanhalle@208 86 //======================== Probes =============================
seanhalle@208 87 //
seanhalle@208 88 // Use macros to allow turning probes off with a #define switch
seanhalle@209 89 // This means probes have zero impact on performance when off
seanhalle@209 90 //=============================================================
seanhalle@209 91 #define VMS_App__record_time_point_into_new_probe VMS_WL__record_time_point_into_new_probe
seanhalle@209 92 #define VMS_ext__record_time_point_into_new_probe
seanhalle@209 93 #define VMS_App__create_single_interval_probe VMS_WL__create_single_interval_probe
seanhalle@209 94 #define VMS_App__create_histogram_probe VMS_WL__create_histogram_probe
seanhalle@209 95 #define VMS_App__index_probe_by_its_name VMS_WL__index_probe_by_its_name
seanhalle@209 96 #define VMS_App__get_probe_by_name VMS_WL__get_probe_by_name
seanhalle@209 97 #define VMS_App__record_sched_choice_into_probe VMS_WL__record_sched_choice_into_probe
seanhalle@209 98 #define VMS_App__record_interval_start_in_probe VMS_WL__record_interval_start_in_probe
seanhalle@209 99 #define VMS_App__record_interval_end_in_probe VMS_WL__record_interval_end_in_probe
seanhalle@209 100 #define VMS_App__print_stats_of_probe VMS_WL__print_stats_of_probe
seanhalle@209 101 #define VMS_App__print_stats_of_all_probes VMS_WL__print_stats_of_all_probes
seanhalle@209 102
seanhalle@208 103 #ifdef STATS__ENABLE_PROBES
seanhalle@209 104 #define VMS_WL__record_time_point_into_new_probe( nameStr, animSlv ) \
seanhalle@209 105 VMS_impl__record_time_point_in_new_probe( nameStr, animSlv )
seanhalle@208 106
seanhalle@208 107 #define VMS_ext__record_time_point_into_new_probe( nameStr ) \
seanhalle@208 108 VMS_ext_impl__record_time_point_into_new_probe( nameStr )
seanhalle@208 109
seanhalle@209 110 #define VMS_WL__create_single_interval_probe( nameStr, animSlv ) \
seanhalle@209 111 VMS_impl__create_single_interval_probe( nameStr, animSlv )
seanhalle@208 112
seanhalle@209 113 #define VMS_WL__create_histogram_probe( numBins, startValue, \
seanhalle@209 114 binWidth, nameStr, animSlv ) \
seanhalle@208 115 VMS_impl__create_histogram_probe( numBins, startValue, \
seanhalle@209 116 binWidth, nameStr, animSlv )
seanhalle@209 117 #define VMS_int__free_probe( probe ) \
seanhalle@208 118 VMS_impl__free_probe( probe )
seanhalle@208 119
seanhalle@209 120 #define VMS_WL__index_probe_by_its_name( probeID, animSlv ) \
seanhalle@209 121 VMS_impl__index_probe_by_its_name( probeID, animSlv )
seanhalle@208 122
seanhalle@209 123 #define VMS_WL__get_probe_by_name( probeID, animSlv ) \
seanhalle@209 124 VMS_impl__get_probe_by_name( probeName, animSlv )
seanhalle@208 125
seanhalle@209 126 #define VMS_WL__record_sched_choice_into_probe( probeID, animSlv ) \
seanhalle@209 127 VMS_impl__record_sched_choice_into_probe( probeID, animSlv )
seanhalle@208 128
seanhalle@209 129 #define VMS_WL__record_interval_start_in_probe( probeID ) \
seanhalle@208 130 VMS_impl__record_interval_start_in_probe( probeID )
seanhalle@208 131
seanhalle@209 132 #define VMS_WL__record_interval_end_in_probe( probeID ) \
seanhalle@208 133 VMS_impl__record_interval_end_in_probe( probeID )
seanhalle@208 134
seanhalle@209 135 #define VMS_WL__print_stats_of_probe( probeID ) \
seanhalle@208 136 VMS_impl__print_stats_of_probe( probeID )
seanhalle@208 137
seanhalle@209 138 #define VMS_WL__print_stats_of_all_probes() \
seanhalle@208 139 VMS_impl__print_stats_of_all_probes()
seanhalle@208 140
seanhalle@208 141
seanhalle@208 142 #else
seanhalle@209 143 #define VMS_WL__record_time_point_into_new_probe( nameStr, animSlv ) \
seanhalle@208 144 0 /* do nothing */
seanhalle@208 145
seanhalle@208 146 #define VMS_ext__record_time_point_into_new_probe( nameStr ) \
seanhalle@208 147 0 /* do nothing */
seanhalle@208 148
seanhalle@208 149
seanhalle@209 150 #define VMS_WL__create_single_interval_probe( nameStr, animSlv ) \
seanhalle@208 151 0 /* do nothing */
seanhalle@208 152
seanhalle@208 153
seanhalle@209 154 #define VMS_WL__create_histogram_probe( numBins, startValue, \
seanhalle@209 155 binWidth, nameStr, animSlv ) \
seanhalle@208 156 0 /* do nothing */
seanhalle@208 157
seanhalle@209 158 #define VMS_WL__index_probe_by_its_name( probeID, animSlv ) \
seanhalle@208 159 /* do nothing */
seanhalle@208 160
seanhalle@209 161 #define VMS_WL__get_probe_by_name( probeID, animSlv ) \
seanhalle@208 162 NULL /* do nothing */
seanhalle@208 163
seanhalle@209 164 #define VMS_WL__record_sched_choice_into_probe( probeID, animSlv ) \
seanhalle@208 165 /* do nothing */
seanhalle@208 166
seanhalle@209 167 #define VMS_WL__record_interval_start_in_probe( probeID ) \
seanhalle@208 168 /* do nothing */
seanhalle@208 169
seanhalle@209 170 #define VMS_WL__record_interval_end_in_probe( probeID ) \
seanhalle@208 171 /* do nothing */
seanhalle@208 172
seanhalle@209 173 #define VMS_WL__print_stats_of_probe( probeID ) \
seanhalle@209 174 ; /* do nothing */
seanhalle@208 175
seanhalle@209 176 #define VMS_WL__print_stats_of_all_probes() \
seanhalle@209 177 ;/* do nothing */
seanhalle@208 178
seanhalle@208 179 #endif /* defined STATS__ENABLE_PROBES */
seanhalle@208 180
seanhalle@208 181 #endif /* _PROBES_H */
seanhalle@208 182