annotate probes.h @ 146:a49f02980151

fixed: hist index error, zero devision
author Merten Sach <msach@mailbox.tu-berlin.de>
date Thu, 12 May 2011 14:23:41 +0200
parents 13b22ffb8a2f
children c11b9dcf6d24
rev   line source
msach@146 1 /*
msach@146 2 * Copyright 2009 OpenSourceStewardshipFoundation.org
msach@146 3 * Licensed under GNU General Public License version 2
msach@146 4 *
msach@146 5 * Author: seanhalle@yahoo.com
msach@146 6 *
msach@146 7 */
msach@146 8
msach@146 9 #ifndef _PROBES_H
msach@146 10 #define _PROBES_H
msach@146 11 #define __USE_GNU
msach@146 12
msach@146 13 #include "VMS_primitive_data_types.h"
msach@146 14
msach@146 15 #include <sys/time.h>
msach@146 16
msach@146 17
msach@146 18 //when STATS__TURN_ON_PROBES is defined allows using probes to measure
msach@146 19 // time intervals. The probes are macros that only compile to something
msach@146 20 // when STATS__TURN_ON_PROBES is defined. The probes are saved in the
msach@146 21 // master env -- but only when this is defined.
msach@146 22 //The TSC probes use RDTSC instr, can be unreliable, Dbl uses gettimeofday
msach@146 23 #define STATS__TURN_ON_PROBES
msach@146 24 //#define STATS__USE_TSC_PROBES
msach@146 25 #define STATS__USE_DBL_PROBES
msach@146 26
msach@146 27 //typedef struct _IntervalProbe IntervalProbe; //in VMS.h
msach@146 28
msach@146 29 struct _IntervalProbe
msach@146 30 {
msach@146 31 char *nameStr;
msach@146 32 int32 probeID;
msach@146 33
msach@146 34 int32 schedChoiceWasRecorded;
msach@146 35 int32 coreNum;
msach@146 36 int32 procrID;
msach@146 37 float64 procrCreateSecs;
msach@146 38
msach@146 39 #ifdef STATS__USE_TSC_PROBES
msach@146 40 TSCount startStamp;
msach@146 41 TSCount endStamp;
msach@146 42 #else
msach@146 43 struct timeval startStamp;
msach@146 44 struct timeval endStamp;
msach@146 45 #endif
msach@146 46 float64 startSecs;
msach@146 47 float64 endSecs;
msach@146 48 float64 interval;
msach@146 49 DblHist *hist;//if NULL, then is single interval probe
msach@146 50 };
msach@146 51
msach@146 52
msach@146 53 //============================= Statistics ==================================
msach@146 54
msach@146 55 //Frequency of TS counts
msach@146 56 //TODO: change freq for each machine
msach@146 57 #define TSCOUNT_FREQ 3180000000
msach@146 58
msach@146 59 inline TSCount getTSCount();
msach@146 60
msach@146 61
msach@146 62 //======================== Probes =============================
msach@146 63 //
msach@146 64 // Use macros to allow turning probes off with a #define switch
msach@146 65 #ifdef STATS__ENABLE_PROBES
msach@146 66 int32
msach@146 67 VMS_impl__record_time_point_into_new_probe( char *nameStr,VirtProcr *animPr);
msach@146 68 #define VMS__record_time_point_into_new_probe( nameStr, animPr ) \
msach@146 69 VMS_impl__record_time_point_in_new_probe( nameStr, animPr )
msach@146 70
msach@146 71 int32
msach@146 72 VMS_ext_impl__record_time_point_into_new_probe( char *nameStr );
msach@146 73 #define VMS_ext__record_time_point_into_new_probe( nameStr ) \
msach@146 74 VMS_ext_impl__record_time_point_into_new_probe( nameStr )
msach@146 75
msach@146 76
msach@146 77 int32
msach@146 78 VMS_impl__create_single_interval_probe( char *nameStr, VirtProcr *animPr );
msach@146 79 #define VMS__create_single_interval_probe( nameStr, animPr ) \
msach@146 80 VMS_impl__create_single_interval_probe( nameStr, animPr )
msach@146 81
msach@146 82
msach@146 83 int32
msach@146 84 VMS_impl__create_histogram_probe( int32 numBins, float64 startValue,
msach@146 85 float64 binWidth, char *nameStr, VirtProcr *animPr );
msach@146 86 #define VMS__create_histogram_probe( numBins, startValue, \
msach@146 87 binWidth, nameStr, animPr ) \
msach@146 88 VMS_impl__create_histogram_probe( numBins, startValue, \
msach@146 89 binWidth, nameStr, animPr )
msach@146 90 void
msach@146 91 VMS_impl__free_probe( IntervalProbe *probe );
msach@146 92 #define VMS__free_probe( probe ) \
msach@146 93 VMS_impl__free_probe( probe )
msach@146 94
msach@146 95 void
msach@146 96 VMS_impl__index_probe_by_its_name( int32 probeID, VirtProcr *animPr );
msach@146 97 #define VMS__index_probe_by_its_name( probeID, animPr ) \
msach@146 98 VMS_impl__index_probe_by_its_name( probeID, animPr )
msach@146 99
msach@146 100 IntervalProbe *
msach@146 101 VMS_impl__get_probe_by_name( char *probeName, VirtProcr *animPr );
msach@146 102 #define VMS__get_probe_by_name( probeID, animPr ) \
msach@146 103 VMS_impl__get_probe_by_name( probeName, animPr )
msach@146 104
msach@146 105 void
msach@146 106 VMS_impl__record_sched_choice_into_probe( int32 probeID, VirtProcr *animPr );
msach@146 107 #define VMS__record_sched_choice_into_probe( probeID, animPr ) \
msach@146 108 VMS_impl__record_sched_choice_into_probe( probeID, animPr )
msach@146 109
msach@146 110 void
msach@146 111 VMS_impl__record_interval_start_in_probe( int32 probeID );
msach@146 112 #define VMS__record_interval_start_in_probe( probeID ) \
msach@146 113 VMS_impl__record_interval_start_in_probe( probeID )
msach@146 114
msach@146 115 void
msach@146 116 VMS_impl__record_interval_end_in_probe( int32 probeID );
msach@146 117 #define VMS__record_interval_end_in_probe( probeID ) \
msach@146 118 VMS_impl__record_interval_end_in_probe( probeID )
msach@146 119
msach@146 120 void
msach@146 121 VMS_impl__print_stats_of_probe( int32 probeID );
msach@146 122 #define VMS__print_stats_of_probe( probeID ) \
msach@146 123 VMS_impl__print_stats_of_probe( probeID )
msach@146 124
msach@146 125 void
msach@146 126 VMS_impl__print_stats_of_all_probes();
msach@146 127 #define VMS__print_stats_of_all_probes \
msach@146 128 VMS_impl__print_stats_of_all_probes
msach@146 129
msach@146 130
msach@146 131 #else
msach@146 132 int32
msach@146 133 VMS_impl__record_time_point_into_new_probe( char *nameStr,VirtProcr *animPr);
msach@146 134 #define VMS__record_time_point_into_new_probe( nameStr, animPr ) \
msach@146 135 0 /* do nothing */
msach@146 136
msach@146 137 int32
msach@146 138 VMS_ext_impl__record_time_point_into_new_probe( char *nameStr );
msach@146 139 #define VMS_ext__record_time_point_into_new_probe( nameStr ) \
msach@146 140 0 /* do nothing */
msach@146 141
msach@146 142
msach@146 143 int32
msach@146 144 VMS_impl__create_single_interval_probe( char *nameStr, VirtProcr *animPr );
msach@146 145 #define VMS__create_single_interval_probe( nameStr, animPr ) \
msach@146 146 0 /* do nothing */
msach@146 147
msach@146 148
msach@146 149 int32
msach@146 150 VMS_impl__create_histogram_probe( int32 numBins, float64 startValue,
msach@146 151 float64 binWidth, char *nameStr, VirtProcr *animPr );
msach@146 152 #define VMS__create_histogram_probe( numBins, startValue, \
msach@146 153 binWidth, nameStr, animPr ) \
msach@146 154 0 /* do nothing */
msach@146 155
msach@146 156 void
msach@146 157 VMS_impl__index_probe_by_its_name( int32 probeID, VirtProcr *animPr );
msach@146 158 #define VMS__index_probe_by_its_name( probeID, animPr ) \
msach@146 159 /* do nothing */
msach@146 160
msach@146 161 IntervalProbe *
msach@146 162 VMS_impl__get_probe_by_name( char *probeName, VirtProcr *animPr );
msach@146 163 #define VMS__get_probe_by_name( probeID, animPr ) \
msach@146 164 NULL /* do nothing */
msach@146 165
msach@146 166 void
msach@146 167 VMS_impl__record_sched_choice_into_probe( int32 probeID, VirtProcr *animPr );
msach@146 168 #define VMS__record_sched_choice_into_probe( probeID, animPr ) \
msach@146 169 /* do nothing */
msach@146 170
msach@146 171 void
msach@146 172 VMS_impl__record_interval_start_in_probe( int32 probeID );
msach@146 173 #define VMS__record_interval_start_in_probe( probeID ) \
msach@146 174 /* do nothing */
msach@146 175
msach@146 176 void
msach@146 177 VMS_impl__record_interval_end_in_probe( int32 probeID );
msach@146 178 #define VMS__record_interval_end_in_probe( probeID ) \
msach@146 179 /* do nothing */
msach@146 180
msach@146 181 inline void doNothing();
msach@146 182 void
msach@146 183 VMS_impl__print_stats_of_probe( int32 probeID );
msach@146 184 #define VMS__print_stats_of_probe( probeID ) \
msach@146 185 doNothing/* do nothing */
msach@146 186
msach@146 187 void
msach@146 188 VMS_impl__print_stats_of_all_probes();
msach@146 189 #define VMS__print_stats_of_all_probes \
msach@146 190 doNothing/* do nothing */
msach@146 191
msach@146 192 #endif /* defined STATS__ENABLE_PROBES */
msach@146 193
msach@146 194 #endif /* _PROBES_H */
msach@146 195