Me@178: /* Me@178: * Copyright 2009 OpenSourceStewardshipFoundation.org Me@178: * Licensed under GNU General Public License version 2 Me@178: * Me@178: * Author: seanhalle@yahoo.com Me@178: * Me@178: */ Me@178: Me@178: #ifndef _PROBES_H Me@178: #define _PROBES_H Me@178: #define _GNU_SOURCE Me@178: Me@178: #include "VMS_primitive_data_types.h" Me@178: Me@178: #include Me@178: Me@200: /*Note on order of include files: Me@200: * This file relies on #defines that appear in other files.. Me@200: */ Me@178: Me@178: Me@178: //typedef struct _IntervalProbe IntervalProbe; //in VMS.h Me@178: Me@178: struct _IntervalProbe Me@178: { Me@178: char *nameStr; Me@178: int32 probeID; Me@178: Me@178: int32 schedChoiceWasRecorded; Me@178: int32 coreNum; Me@178: int32 procrID; Me@178: float64 procrCreateSecs; Me@178: Me@178: #ifdef STATS__USE_TSC_PROBES Me@178: TSCount startStamp; Me@178: TSCount endStamp; Me@178: #else Me@178: struct timeval startStamp; Me@178: struct timeval endStamp; Me@178: #endif Me@178: float64 startSecs; Me@178: float64 endSecs; Me@178: float64 interval; Me@178: DblHist *hist;//if NULL, then is single interval probe Me@178: }; Me@178: Me@178: Me@178: Me@178: //======================== Probes ============================= Me@178: // Me@178: // Use macros to allow turning probes off with a #define switch Me@178: #ifdef STATS__ENABLE_PROBES Me@178: int32 Me@200: VMS_impl__record_time_point_into_new_probe( char *nameStr,SlaveVP *animPr); Me@178: #define VMS__record_time_point_into_new_probe( nameStr, animPr ) \ Me@178: VMS_impl__record_time_point_in_new_probe( nameStr, animPr ) Me@178: Me@178: int32 Me@178: VMS_ext_impl__record_time_point_into_new_probe( char *nameStr ); Me@178: #define VMS_ext__record_time_point_into_new_probe( nameStr ) \ Me@178: VMS_ext_impl__record_time_point_into_new_probe( nameStr ) Me@178: Me@178: Me@178: int32 Me@200: VMS_impl__create_single_interval_probe( char *nameStr, SlaveVP *animPr ); Me@178: #define VMS__create_single_interval_probe( nameStr, animPr ) \ Me@178: VMS_impl__create_single_interval_probe( nameStr, animPr ) Me@178: Me@178: Me@178: int32 Me@178: VMS_impl__create_histogram_probe( int32 numBins, float64 startValue, Me@200: float64 binWidth, char *nameStr, SlaveVP *animPr ); Me@178: #define VMS__create_histogram_probe( numBins, startValue, \ Me@178: binWidth, nameStr, animPr ) \ Me@178: VMS_impl__create_histogram_probe( numBins, startValue, \ Me@178: binWidth, nameStr, animPr ) Me@178: void Me@178: VMS_impl__free_probe( IntervalProbe *probe ); Me@178: #define VMS__free_probe( probe ) \ Me@178: VMS_impl__free_probe( probe ) Me@178: Me@178: void Me@200: VMS_impl__index_probe_by_its_name( int32 probeID, SlaveVP *animPr ); Me@178: #define VMS__index_probe_by_its_name( probeID, animPr ) \ Me@178: VMS_impl__index_probe_by_its_name( probeID, animPr ) Me@178: Me@178: IntervalProbe * Me@200: VMS_impl__get_probe_by_name( char *probeName, SlaveVP *animPr ); Me@178: #define VMS__get_probe_by_name( probeID, animPr ) \ Me@178: VMS_impl__get_probe_by_name( probeName, animPr ) Me@178: Me@178: void Me@200: VMS_impl__record_sched_choice_into_probe( int32 probeID, SlaveVP *animPr ); Me@178: #define VMS__record_sched_choice_into_probe( probeID, animPr ) \ Me@178: VMS_impl__record_sched_choice_into_probe( probeID, animPr ) Me@178: Me@178: void Me@178: VMS_impl__record_interval_start_in_probe( int32 probeID ); Me@178: #define VMS__record_interval_start_in_probe( probeID ) \ Me@178: VMS_impl__record_interval_start_in_probe( probeID ) Me@178: Me@178: void Me@178: VMS_impl__record_interval_end_in_probe( int32 probeID ); Me@178: #define VMS__record_interval_end_in_probe( probeID ) \ Me@178: VMS_impl__record_interval_end_in_probe( probeID ) Me@178: Me@178: void Me@178: VMS_impl__print_stats_of_probe( int32 probeID ); Me@178: #define VMS__print_stats_of_probe( probeID ) \ Me@178: VMS_impl__print_stats_of_probe( probeID ) Me@178: Me@178: void Me@178: VMS_impl__print_stats_of_all_probes(); Me@178: #define VMS__print_stats_of_all_probes() \ Me@178: VMS_impl__print_stats_of_all_probes() Me@178: Me@178: Me@178: #else Me@178: int32 Me@200: VMS_impl__record_time_point_into_new_probe( char *nameStr,SlaveVP *animPr); Me@178: #define VMS__record_time_point_into_new_probe( nameStr, animPr ) \ Me@178: 0 /* do nothing */ Me@178: Me@178: int32 Me@178: VMS_ext_impl__record_time_point_into_new_probe( char *nameStr ); Me@178: #define VMS_ext__record_time_point_into_new_probe( nameStr ) \ Me@178: 0 /* do nothing */ Me@178: Me@178: Me@178: int32 Me@200: VMS_impl__create_single_interval_probe( char *nameStr, SlaveVP *animPr ); Me@178: #define VMS__create_single_interval_probe( nameStr, animPr ) \ Me@178: 0 /* do nothing */ Me@178: Me@178: Me@178: int32 Me@178: VMS_impl__create_histogram_probe( int32 numBins, float64 startValue, Me@200: float64 binWidth, char *nameStr, SlaveVP *animPr ); Me@178: #define VMS__create_histogram_probe( numBins, startValue, \ Me@178: binWidth, nameStr, animPr ) \ Me@178: 0 /* do nothing */ Me@178: Me@178: void Me@200: VMS_impl__index_probe_by_its_name( int32 probeID, SlaveVP *animPr ); Me@178: #define VMS__index_probe_by_its_name( probeID, animPr ) \ Me@178: /* do nothing */ Me@178: Me@178: IntervalProbe * Me@200: VMS_impl__get_probe_by_name( char *probeName, SlaveVP *animPr ); Me@178: #define VMS__get_probe_by_name( probeID, animPr ) \ Me@178: NULL /* do nothing */ Me@178: Me@178: void Me@200: VMS_impl__record_sched_choice_into_probe( int32 probeID, SlaveVP *animPr ); Me@178: #define VMS__record_sched_choice_into_probe( probeID, animPr ) \ Me@178: /* do nothing */ Me@178: Me@178: void Me@178: VMS_impl__record_interval_start_in_probe( int32 probeID ); Me@178: #define VMS__record_interval_start_in_probe( probeID ) \ Me@178: /* do nothing */ Me@178: Me@178: void Me@178: VMS_impl__record_interval_end_in_probe( int32 probeID ); Me@178: #define VMS__record_interval_end_in_probe( probeID ) \ Me@178: /* do nothing */ Me@178: Me@178: inline void doNothing(); Me@178: void Me@178: VMS_impl__print_stats_of_probe( int32 probeID ); Me@178: #define VMS__print_stats_of_probe( probeID ) \ Me@178: doNothing/* do nothing */ Me@178: Me@178: void Me@178: VMS_impl__print_stats_of_all_probes(); Me@178: #define VMS__print_stats_of_all_probes \ Me@178: doNothing/* do nothing */ Me@178: Me@178: #endif /* defined STATS__ENABLE_PROBES */ Me@178: Me@178: #endif /* _PROBES_H */ Me@178: