summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pablo/Makefile.in72
-rw-r--r--pablo/PabloHDF.c176
-rw-r--r--pablo/PabloHDF_MPIO.c2
-rw-r--r--pablo/PabloHDF_RT.c13
-rw-r--r--pablo/PabloHDF_SDDF.c34
-rw-r--r--pablo/ProcTrace.h7
6 files changed, 220 insertions, 84 deletions
diff --git a/pablo/Makefile.in b/pablo/Makefile.in
index 532d045..43a0b62 100644
--- a/pablo/Makefile.in
+++ b/pablo/Makefile.in
@@ -49,16 +49,22 @@ SRCDIRS=./. ../src/.
# variable now has directory paths included in it (which may cause
# problems somewhere). - QAK
#
-LIB_SRC=H5.c H5FDmulti.c H5HG.c H5Oname.c H5T.c H5A.c H5FDsec2.c H5HL.c \
- H5Onull.c H5TB.c H5AC.c H5FDsrb.c H5I.c H5Osdspace.c H5TS.c \
- H5B.c H5FDstdio.c H5MF.c H5Oshared.c H5Tbit.c H5D.c H5FDstream.c \
- H5MM.c H5Ostab.c H5Tconv.c H5E.c H5FL.c H5O.c H5P.c H5Tinit.c \
- H5F.c H5Farray.c H5Oattr.c H5R.c H5Tvlen.c H5FD.c H5Fcontig.c \
- H5Ocomp.c H5S.c H5V.c H5FDcore.c H5Fistore.c H5Ocont.c H5Sall.c \
- H5Z.c H5Fseq.c H5Odtype.c H5Shyper.c H5Zdeflate.c H5FDfamily.c \
- H5G.c H5Oefl.c H5Smpio.c H5detect.c H5FDgass.c H5Gent.c \
- H5Ofill.c H5Snone.c H5FDlog.c H5Gnode.c H5Olayout.c H5Spoint.c \
- H5FDmpio.c H5Gstab.c H5Omtime.c H5Sselect.c
+LIB_SRC=H5.c H5A.c H5AC.c H5B.c H5D.c H5Dio.c H5E.c H5F.c H5FD.c \
+ H5FDcore.c H5FDfamily.c H5FDfphdf5.c H5FDgass.c H5FDlog.c \
+ H5FDmpio.c H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDsrb.c \
+ H5FDstdio.c H5FDstream.c H5FL.c H5FO.c H5FP.c H5FPclient.c \
+ H5FPserver.c H5FS.c H5Fcompact.c H5Fcontig.c H5Fistore.c H5Fseq.c \
+ H5G.c H5Gent.c H5Gnode.c H5Gstab.c H5HG.c H5HL.c H5HP.c H5I.c \
+ H5MF.c H5MM.c H5O.c H5Oattr.c H5Obogus.c H5Ocont.c H5Odtype.c \
+ H5Oefl.c H5Ofill.c H5Olayout.c H5Omtime.c H5Oname.c H5Onull.c \
+ H5Opline.c H5Osdspace.c H5Oshared.c H5Ostab.c H5P.c H5Pdcpl.c \
+ H5Pdxpl.c H5Pfapl.c H5Pfcpl.c H5Ptest.c H5R.c H5RS.c H5S.c H5ST.c \
+ H5Sall.c H5Shyper.c H5Smpio.c H5Snone.c H5Spoint.c H5Sselect.c \
+ H5Stest.c H5T.c H5TB.c H5TS.c H5Tarray.c H5Tbit.c H5Tcommit.c \
+ H5Tcompound.c H5Tconv.c H5Tcset.c H5Tenum.c H5Tfields.c H5Tfixed.c \
+ H5Tfloat.c H5Tinit.c H5Tnative.c H5Toffset.c H5Topaque.c H5Torder.c \
+ H5Tpad.c H5Tprecis.c H5Tstrpad.c H5Tvlen.c H5V.c H5Z.c H5Zdeflate.c \
+ H5Zfletcher32.c H5Zshuffle.c H5Zszip.c H5detect.c
PABLO_OBJ=PabloHDF.o PabloHDF_RT.o PabloHDF_SDDF.o PabloHDF_MPIO.o
@@ -172,8 +178,8 @@ PABLO_CLEAN=HDFentryNames.h HDFidList.h ProcMasks.h HDFentries.txt \
ProcTrace.inc
HDFentries.txt: $(top_srcdir)/src/*.c
- grep "FUNC_ENTER[_INIT ]*(" $(top_srcdir)/src/*.c | \
- sed "s/.*FUNC_ENTER[_INIT ]*( *//;s/[,)].*//" | sort -u > $@
+ grep "FUNC_ENTER[_INITNOAPICLEARFS ]*(" $(top_srcdir)/src/*.[ch] | \
+ sed "s/.*FUNC_ENTER[_INITNOAPICLEARFS ]*( *//;s/[,)].*//" | sort -u > $@
HDFentryNames.h: HDFentries.txt
sed "s/.*/\"&\",/" $? > $@
@@ -213,21 +219,29 @@ H5A.c: $(top_srcdir)/src/H5A.c
H5AC.c: $(top_srcdir)/src/H5AC.c
H5B.c: $(top_srcdir)/src/H5B.c
H5D.c: $(top_srcdir)/src/H5D.c
+H5Dio.c: $(top_srcdir)/src/H5Dio.c
H5E.c: $(top_srcdir)/src/H5E.c
H5F.c: $(top_srcdir)/src/H5F.c
H5FD.c: $(top_srcdir)/src/H5FD.c
H5FDcore.c: $(top_srcdir)/src/H5FDcore.c
H5FDfamily.c: $(top_srcdir)/src/H5FDfamily.c
+H5FDfphdf5.c: $(top_srcdir)/src/H5FDfphdf5.c
H5FDgass.c: $(top_srcdir)/src/H5FDgass.c
H5FDlog.c: $(top_srcdir)/src/H5FDlog.c
H5FDmpio.c: $(top_srcdir)/src/H5FDmpio.c
+H5FDmpiposix.c: $(top_srcdir)/src/H5FDmpiposix.c
H5FDmulti.c: $(top_srcdir)/src/H5FDmulti.c
H5FDsec2.c: $(top_srcdir)/src/H5FDsec2.c
H5FDsrb.c: $(top_srcdir)/src/H5FDsrb.c
H5FDstdio.c: $(top_srcdir)/src/H5FDstdio.c
H5FDstream.c: $(top_srcdir)/src/H5FDstream.c
H5FL.c: $(top_srcdir)/src/H5FL.c
-H5Farray.c: $(top_srcdir)/src/H5Farray.c
+H5FO.c: $(top_srcdir)/src/H5FO.c
+H5FP.c: $(top_srcdir)/src/H5FP.c
+H5FPclient.c: $(top_srcdir)/src/H5FPclient.c
+H5FPserver.c: $(top_srcdir)/src/H5FPserver.c
+H5FS.c: $(top_srcdir)/src/H5FS.c
+H5Fcompact.c: $(top_srcdir)/src/H5Fcompact.c
H5Fcontig.c: $(top_srcdir)/src/H5Fcontig.c
H5Fistore.c: $(top_srcdir)/src/H5Fistore.c
H5Fseq.c: $(top_srcdir)/src/H5Fseq.c
@@ -237,12 +251,13 @@ H5Gnode.c: $(top_srcdir)/src/H5Gnode.c
H5Gstab.c: $(top_srcdir)/src/H5Gstab.c
H5HG.c: $(top_srcdir)/src/H5HG.c
H5HL.c: $(top_srcdir)/src/H5HL.c
+H5HP.c: $(top_srcdir)/src/H5HP.c
H5I.c: $(top_srcdir)/src/H5I.c
H5MF.c: $(top_srcdir)/src/H5MF.c
H5MM.c: $(top_srcdir)/src/H5MM.c
H5O.c: $(top_srcdir)/src/H5O.c
H5Oattr.c: $(top_srcdir)/src/H5Oattr.c
-H5Ocomp.c: $(top_srcdir)/src/H5Ocomp.c
+H5Obogus.c: $(top_srcdir)/src/H5Obogus.c
H5Ocont.c: $(top_srcdir)/src/H5Ocont.c
H5Odtype.c: $(top_srcdir)/src/H5Odtype.c
H5Oefl.c: $(top_srcdir)/src/H5Oefl.c
@@ -251,26 +266,53 @@ H5Olayout.c: $(top_srcdir)/src/H5Olayout.c
H5Omtime.c: $(top_srcdir)/src/H5Omtime.c
H5Oname.c: $(top_srcdir)/src/H5Oname.c
H5Onull.c: $(top_srcdir)/src/H5Onull.c
+H5Opline.c: $(top_srcdir)/src/H5Opline.c
H5Osdspace.c: $(top_srcdir)/src/H5Osdspace.c
H5Oshared.c: $(top_srcdir)/src/H5Oshared.c
H5Ostab.c: $(top_srcdir)/src/H5Ostab.c
H5P.c: $(top_srcdir)/src/H5P.c
+H5Pdcpl.c: $(top_srcdir)/src/H5Pdcpl.c
+H5Pdxpl.c: $(top_srcdir)/src/H5Pdxpl.c
+H5Pfapl.c: $(top_srcdir)/src/H5Pfapl.c
+H5Pfcpl.c: $(top_srcdir)/src/H5Pfcpl.c
+H5Ptest.c: $(top_srcdir)/src/H5Ptest.c
H5R.c: $(top_srcdir)/src/H5R.c
+H5RS.c: $(top_srcdir)/src/H5RS.c
H5S.c: $(top_srcdir)/src/H5S.c
+H5ST.c: $(top_srcdir)/src/H5ST.c
H5Sall.c: $(top_srcdir)/src/H5Sall.c
H5Shyper.c: $(top_srcdir)/src/H5Shyper.c
H5Smpio.c: $(top_srcdir)/src/H5Smpio.c
H5Snone.c: $(top_srcdir)/src/H5Snone.c
H5Spoint.c: $(top_srcdir)/src/H5Spoint.c
H5Sselect.c: $(top_srcdir)/src/H5Sselect.c
+H5Stest.c: $(top_srcdir)/src/H5Stest.c
H5T.c: $(top_srcdir)/src/H5T.c
H5TB.c: $(top_srcdir)/src/H5TB.c
H5TS.c: $(top_srcdir)/src/H5TS.c
+H5Tarray.c: $(top_srcdir)/src/H5Tarray.c
H5Tbit.c: $(top_srcdir)/src/H5Tbit.c
+H5Tcommit.c: $(top_srcdir)/src/H5Tcommit.c
+H5Tcompound.c: $(top_srcdir)/src/H5Tcompound.c
H5Tconv.c: $(top_srcdir)/src/H5Tconv.c
-H5Tinit.c: $(top_builddir)/src/H5Tinit.c
+H5Tcset.c: $(top_srcdir)/src/H5Tcset.c
+H5Tenum.c: $(top_srcdir)/src/H5Tenum.c
+H5Tfields.c: $(top_srcdir)/src/H5Tfields.c
+H5Tfixed.c: $(top_srcdir)/src/H5Tfixed.c
+H5Tfloat.c: $(top_srcdir)/src/H5Tfloat.c
+H5Tinit.c: $(top_srcdir)/src/H5Tinit.c
+H5Tnative.c: $(top_srcdir)/src/H5Tnative.c
+H5Toffset.c: $(top_srcdir)/src/H5Toffset.c
+H5Topaque.c: $(top_srcdir)/src/H5Topaque.c
+H5Torder.c: $(top_srcdir)/src/H5Torder.c
+H5Tpad.c: $(top_srcdir)/src/H5Tpad.c
+H5Tprecis.c: $(top_srcdir)/src/H5Tprecis.c
+H5Tstrpad.c: $(top_srcdir)/src/H5Tstrpad.c
H5Tvlen.c: $(top_srcdir)/src/H5Tvlen.c
H5V.c: $(top_srcdir)/src/H5V.c
H5Z.c: $(top_srcdir)/src/H5Z.c
H5Zdeflate.c: $(top_srcdir)/src/H5Zdeflate.c
+H5Zfletcher32.c: $(top_srcdir)/src/H5Zfletcher32.c
+H5Zshuffle.c: $(top_srcdir)/src/H5Zshuffle.c
+H5Zszip.c: $(top_srcdir)/src/H5Zszip.c
H5detect.c: $(top_srcdir)/src/H5detect.c
diff --git a/pablo/PabloHDF.c b/pablo/PabloHDF.c
index 4c8357a..537ed5a 100644
--- a/pablo/PabloHDF.c
+++ b/pablo/PabloHDF.c
@@ -78,6 +78,7 @@
#include <stdlib.h>
#include <fcntl.h>
#include <stdarg.h>
+#include <limits.h>
#ifndef fileno
int fileno ( FILE * );
#endif
@@ -90,6 +91,11 @@ int fileno ( FILE * );
#define HDFtrace3OPEN__
int HDFtrace3OPEN( const char *, int, mode_t );
+#ifdef TRACELIB_BUILD
+#undef PCF_BUILD
+#endif
+
+#ifndef PCF_BUILD
#include "SDDFparam.h"
#include "TraceParam.h"
@@ -97,6 +103,9 @@ int HDFtrace3OPEN( const char *, int, mode_t );
#include "Trace.h"
#include "IO_TraceParams.h"
+#include "IOTrace.h"
+#endif
+
#include "HDFIOTrace.h"
#ifndef TRUE
@@ -122,7 +131,6 @@ extern void preInitIOTrace( void );
#include "ProcIDs.h"
#include "HDFTrace.h"
-#include "IOTrace.h"
#define ID_HDFprocName 9996
#define ID_malloc 9997
@@ -130,7 +138,7 @@ extern void preInitIOTrace( void );
#define ID_timeStamp 9999
#define DUMMY_HDF 10000
-extern char HDFprocNames[][40] = {
+char HDFprocNames[][40] = {
"noName",
"noName",
"noName",
@@ -142,18 +150,58 @@ extern char HDFprocNames[][40] = {
void startHDFtraceEvent (int );
void endHDFtraceEvent (int , int , char *, int );
+void getHDFprocName( int, char[41] );
-#ifdef TRACELIB_BUILD
-#undef PCF_BUILD
-#endif
+void setHDFcallLevel( int );
+void resetHDFcallLevel( void );
+int HDFcallLevel;
+int MaxHDFcallLevel = INT_MAX;
#ifdef PCF_BUILD
-void hdfCaptureInit( const char* name, int captureType );
+#include "PcUIOinterface.h"
+void hdfCaptureInit( const char* name, int procNum, int captureType );
void hdfCaptureEnd( void );
+void traceHDFentryEvent( int eventID ) ;
+void traceHDFexitEvent( int eventID );
+void basePerformanceInit( const char* name, int procNum );
+void genericBaseInit( int captureType, int procNum );
+void unixIObaseInit( int captureType, int procNum );
+int hdfBaseInit( int captureType,
+ int procNum,
+ int numHDFentries,
+ char HDFprocNames[][40] );
+void timeStamp( void );
+void hdfBaseEnd( void );
+void unixIObaseEnd( void );
+void genericBaseEnd( void );
+void basePerformanceEnd( void );
+/*void* traceMALLOC( size_t bytes );
+FILE* traceFOPEN( const char* fileName, const char* type );
+int traceOPEN( const char *path, int flags, ... ) ;
+int trace3OPEN( const char *path, int flags, mode_t mode ) ;
+int traceCREAT( const char *path, mode_t mode ) ;
+int traceFFLUSH( FILE *stream ) ;
+int traceFCLOSE( FILE *stream ) ;
+int traceCLOSE( int fd ) ;
+ssize_t traceREAD( int fd, void *buf, int nbyte ) ;
+size_t traceFREAD( void *ptr, int size, int nItems, FILE *stream ) ;
+int traceFGETC( FILE *stream ) ;
+char* traceFGETS( char *s, int n, FILE *stream ) ;
+int traceGETW( FILE *stream ) ;
+off_t traceLSEEK( int fd, off_t offset, int whence ) ;
+int traceFSEEK( FILE *stream, off_t offset, int whence ) ;
+int traceFSETPOS( FILE *stream, const fpos_t *position ) ;
+void traceREWIND( FILE *stream ) ;
+ssize_t traceWRITE( int fd, const void *buf, int nbyte ) ;
+size_t traceFWRITE(const void *ptr, int size, int nItems, FILE *stream ) ;
+int traceFPUTC( int c, FILE *stream ) ;
+int traceFPUTS( const char *s, FILE *stream ) ;
+int tracePUTS( const char *s ) ;
+int tracePUTW( int w, FILE *stream ) ;*/
#else
-void HDFinitTrace_RT ( const char * );
-void HDFinitTrace_SDDF ( const char * );
-void hinittracex_ ( char [], int *, int[], int *,unsigned * );
+void HDFinitTrace_RT ( const char *, int procNum );
+void HDFinitTrace_SDDF ( const char *, int procNum );
+void hinittracex_ ( char [], int *, int*, int[], int *,unsigned * );
void hdfendtrace_ ( void ) ;
void HDFendTrace_RT (void );
void HDFendTrace_SDDF( void );
@@ -187,6 +235,7 @@ char *hdfRecordPointer;
void
hinittracex_( char *file,
int *len,
+ int *procNum,
int flags[],
int *nflags,
unsigned *out_sw )
@@ -194,6 +243,7 @@ hinittracex_( char *file,
char *traceFileName;
int i;
traceFileName = (char *)malloc(*len+1);
+ HDFcallLevel = 0;
for ( i = 0; i < *len; ++i )
{
traceFileName[i] = file[i];
@@ -240,19 +290,19 @@ hinittracex_( char *file,
}
}
#ifdef PCF_BUILD
- hdfCaptureInit( traceFileName, OUTPUT_SWITCH );
+ hdfCaptureInit( traceFileName, *procNum, OUTPUT_SWITCH );
#else
suppressMPIOtrace = TRUE;
if ( OUTPUT_SWITCH == RUNTIME_TRACE
|| OUTPUT_SWITCH == MPI_RUNTIME_TRACE )
{
- HDFinitTrace_SDDF( traceFileName );
+ HDFinitTrace_SDDF( traceFileName, *procNum );
IOtracingEnabled = 1;
}
else if ( OUTPUT_SWITCH == SUMMARY_TRACE
|| OUTPUT_SWITCH == MPI_SUMMARY_TRACE )
{
- HDFinitTrace_RT( traceFileName );
+ HDFinitTrace_RT( traceFileName, *procNum );
IOtracingEnabled = 1;
}
else if ( OUTPUT_SWITCH == NO_TRACE )
@@ -271,12 +321,12 @@ hinittracex_( char *file,
#endif /* PCF_BUILD */
}
void
-HDFinitTrace( const char *traceFileName, int id_flag, ... )
+HDFinitTrace( const char *traceFileName, int procNum, int id_flag, ... )
{
int i;
int nIDs;
va_list ap;
-
+ HDFcallLevel = 0;
/*===================================================================*
// Allocate space for trace indicators. *
//===================================================================*/
@@ -322,19 +372,19 @@ HDFinitTrace( const char *traceFileName, int id_flag, ... )
}
}
#ifdef PCF_BUILD
- hdfCaptureInit( traceFileName, OUTPUT_SWITCH );
+ hdfCaptureInit( traceFileName, procNum, OUTPUT_SWITCH );
#else
suppressMPIOtrace = TRUE;
if ( OUTPUT_SWITCH == RUNTIME_TRACE
|| OUTPUT_SWITCH == MPI_RUNTIME_TRACE )
{
- HDFinitTrace_SDDF( traceFileName );
+ HDFinitTrace_SDDF( traceFileName, procNum );
IOtracingEnabled = 1;
}
else if ( OUTPUT_SWITCH == SUMMARY_TRACE
|| OUTPUT_SWITCH == MPI_SUMMARY_TRACE )
{
- HDFinitTrace_RT( traceFileName );
+ HDFinitTrace_RT( traceFileName, procNum );
IOtracingEnabled = 1;
}
else if ( OUTPUT_SWITCH == NO_TRACE )
@@ -364,6 +414,14 @@ void hdfendtrace_( void )
{
HDFendTrace ();
}
+void setHDFcallLevel( int maxLevel )
+{
+ MaxHDFcallLevel = maxLevel;
+}
+void resetHDFcallLevel()
+{
+ MaxHDFcallLevel = INT_MAX;
+}
void HDFendTrace(void)
{
#ifdef PCF_BUILD
@@ -380,55 +438,68 @@ void HDFendTrace(void)
HDFendTrace_RT();
}
#endif /* PCF_BUILD */
+ OUTPUT_SWITCH = NO_TRACE;
+ MaxHDFcallLevel = INT_MAX;
}
void startHDFtraceEvent(int eventID)
{
+ ++HDFcallLevel;
+ if ( HDFcallLevel <= MaxHDFcallLevel )
+ {
#ifdef PCF_BUILD
- traceHDFentryEvent( eventID ) ;
+ if (OUTPUT_SWITCH != NO_TRACE )
+ {
+ traceHDFentryEvent( eventID ) ;
+ }
#else
- if ( OUTPUT_SWITCH == RUNTIME_TRACE
+ if ( OUTPUT_SWITCH == RUNTIME_TRACE
|| OUTPUT_SWITCH == MPI_RUNTIME_TRACE )
- {
- traceEvent( eventID, NULL, 0 ) ;
- }
- else
- {
- HDFtraceEvent_RT( eventID, NULL, 0 ) ;
- }
+ {
+ traceEvent( eventID, NULL, 0 ) ;
+ }
+ else if (OUTPUT_SWITCH != NO_TRACE )
+ {
+ HDFtraceEvent_RT( eventID, NULL, 0 ) ;
+ }
#endif /* PCF_BUILD */
+ }
}
void endHDFtraceEvent(int eventID, int setID, char *setName, int IDtype )
{
+ if ( HDFcallLevel <= MaxHDFcallLevel )
+ {
#ifdef PCF_BUILD
- traceHDFexitEvent( eventID );
+ {
+ traceHDFexitEvent( eventID );
+ }
#else
- HDFsetInfo info;
- info.setID = setID;
- info.setName = setName;
- if ( OUTPUT_SWITCH == RUNTIME_TRACE
+ HDFsetInfo info;
+ info.setID = setID;
+ info.setName = setName;
+ if ( OUTPUT_SWITCH == RUNTIME_TRACE
|| OUTPUT_SWITCH == MPI_RUNTIME_TRACE )
- {
- traceEvent( eventID, (char *)&info, 0 ) ;
- }
- else if ( OUTPUT_SWITCH == SUMMARY_TRACE
+ {
+ traceEvent( eventID, (char *)&info, 0 ) ;
+ }
+ else if ( OUTPUT_SWITCH == SUMMARY_TRACE
|| OUTPUT_SWITCH == MPI_SUMMARY_TRACE )
- {
- HDFtraceEvent_RT( eventID, &info, 0 ) ;
- }
- else if ( OUTPUT_SWITCH != NO_TRACE )
- {
- fprintf(stderr,"endHDFtraceEvent: ");
- fprintf(stderr,"invalid OUTPUT_SWITCH %d, IDtype = %d\n",
+ {
+ HDFtraceEvent_RT( eventID, &info, 0 ) ;
+ }
+ else if ( OUTPUT_SWITCH != NO_TRACE )
+ {
+ fprintf(stderr,"endHDFtraceEvent: ");
+ fprintf(stderr,"invalid OUTPUT_SWITCH %d, IDtype = %d\n",
OUTPUT_SWITCH, IDtype ) ;
- }
+ }
#endif /* PCF_BUILD */
+ }
+ --HDFcallLevel;
}
#ifdef PCF_BUILD
void
-hdfCaptureInit( const char* name, int captureType )
+hdfCaptureInit( const char* name, int procNum, int captureType )
{
- int procNum;
- HDF_get_NodeNum( &procNum );
basePerformanceInit( name, procNum );
genericBaseInit( captureType, procNum );
unixIObaseInit( captureType, procNum );
@@ -439,6 +510,7 @@ hdfCaptureInit( const char* name, int captureType )
procNum,
ID_HDF_Last_Entry,
HDFprocNames );
+ HDFcallLevel = 0;
}
void
hdfCaptureEnd( void )
@@ -456,6 +528,7 @@ hdfCaptureEnd( void )
unixIObaseEnd();
genericBaseEnd();
basePerformanceEnd();
+ MaxHDFcallLevel = INT_MAX;
}
#endif /* PCF_BUILD */
/*****************************************************************************/
@@ -1121,10 +1194,10 @@ int
HDFtracePUTS( const char *s )
{
int ret;
- int fd = fileno( stdout );
#ifdef PCF_BUILD
- tracePUTS( s );
+ ret = tracePUTS( s );
#else
+ int fd = fileno( stdout );
struct read_write_args writeArgs;
if ( IOtracingEnabled )
{
@@ -1146,6 +1219,11 @@ HDFtracePUTS( const char *s )
return( ret );
}
+void getHDFprocName ( int i, char buff[41] )
+{
+ strcpy( buff, HDFprocNames[i] );
+}
+
/*****************************************************************************/
/*+ Routine: int HDFtraceFPUTC( int c, FILE *stream ) +*/
/*+ substitute for fputc() +*/
@@ -1200,11 +1278,11 @@ HDFtraceFPUTC( int c, FILE *stream )
int HDFtraceFPUTS( const char *s, FILE *stream )
{
int ret;
- int fd = fileno( stream );
#ifdef PCF_BUILD
ret = traceFPUTS( s, stream );
#else
+ int fd = fileno( stream );
struct read_write_args writeArgs;
if ( IOtracingEnabled )
{
diff --git a/pablo/PabloHDF_MPIO.c b/pablo/PabloHDF_MPIO.c
index 13ed41a..025e823 100644
--- a/pablo/PabloHDF_MPIO.c
+++ b/pablo/PabloHDF_MPIO.c
@@ -97,6 +97,7 @@
//
//======================================================================*/
#ifdef H5_HAVE_PARALLEL
+void HDFtraceEvent_RT( int , char *, unsigned ) ;
#include "mpi.h"
/************************************************************************/
/* Return the node number. */
@@ -125,6 +126,7 @@ int HDF_get_comm( MPI_Comm );
int HDF_get_Datatype( MPI_Datatype );
int HDF_get_DataRep( char* );
int HDF_get_Bytes( MPI_Datatype, int );
+void HDFtraceIOEvent( int , void *, unsigned );
/* Get the mode at the file openning */
int
diff --git a/pablo/PabloHDF_RT.c b/pablo/PabloHDF_RT.c
index 0b53a45..c71f6e8 100644
--- a/pablo/PabloHDF_RT.c
+++ b/pablo/PabloHDF_RT.c
@@ -123,6 +123,7 @@
#include "SDDFparam.h"
#include <string.h>
#include <stdio.h>
+#include <stdlib.h>
#include <fcntl.h>
/*======================================================================*
// on ipsc/860 don't include this or you'll get multiply defined SEEK_ *
@@ -184,7 +185,7 @@ fileRec_t *HDFfileList;
/*======================================================================*
// Internal Function prototypes *
//======================================================================*/
-void HDFinitTrace_RT( char *, int );
+void HDFinitTrace_RT( char *, int, int );
void HDFendTrace_RT();
int initproctracert_( void );
int initHDFProcTrace_RT( void );
@@ -210,6 +211,8 @@ void printFileMappingsRT( char *, char **, int );
void _hdfNameDescriptor( void );
void _hdfDescriptorRT( char *, char *, int );
void HDFfinalTimeStamp( void );
+void getHDFprocName( int index, char buff[41] );
+void IOtraceInit( char*, int, int );
/*======================================================================*
// Global variables *
//======================================================================*/
@@ -230,7 +233,7 @@ extern char HDFprocNames[][40];
// RETURNS *
// None. *
//======================================================================*/
-void HDFinitTrace_RT( char *fileName, int OUTSW )
+void HDFinitTrace_RT( char *fileName, int procNum, int OUTSW )
{
int error;
TRgetClock( &epoch );
@@ -249,7 +252,7 @@ void HDFinitTrace_RT( char *fileName, int OUTSW )
// of the node as a suffix; if not, only one file is opened *
// and it is not given a suffix. *
//===================================================================*/
- initIOTraceMP( fileName, OUTSW );
+ IOtraceInit( fileName, procNum, OUTSW );
}
/*======================================================================*
// NAME *
@@ -1583,11 +1586,13 @@ void writeHDFRecDescrptrsRT( void )
{
int j, FAMILY;
char BUF1[256], BUF2[256] ;
+ char buff[41];
_hdfNameDescriptor(); /* Descriptor for named identifiers */
for ( j = 0; j < NumHDFProcs; ++j ) {
if ( HDFQueues[j] != NULL ) {
+ getHDFprocName( j, buff );
strcpy( BUF2, "HDF ");
- strcat( BUF2, HDFprocNames[j] );
+ strcat( BUF2, buff );
strcat( BUF2, " Procedure Summary");
strcpy( BUF1, BUF2 );
strcat( BUF1, " Trace");
diff --git a/pablo/PabloHDF_SDDF.c b/pablo/PabloHDF_SDDF.c
index 502e416..6326702 100644
--- a/pablo/PabloHDF_SDDF.c
+++ b/pablo/PabloHDF_SDDF.c
@@ -70,6 +70,7 @@
#include "Trace.h"
#include "IOTrace.h"
#include "HDFTrace.h"
+void IOtraceInit( char*, int, int );
void HDFendTrace_SDDF(void);
void startHDFtraceEvent(int eventID);
void endHDFtraceEvent(int , int , char *, int );
@@ -92,6 +93,8 @@ void disableFileRegionSummaries( void );
void _hdfTraceDescriptor( char *, char *, int );
void createHDFTraceDescriptor( int );
void HDFfinalTimeStamp( void );
+void getHDFprocName( int index, char buff[41] );
+void endIOTrace();
#define PABLO 1
/* on the ipsc/860 we don't include unistd.h */
@@ -102,17 +105,16 @@ void HDFfinalTimeStamp( void );
#define returnRecord(x) return x;
#ifdef H5_HAVE_MPIOTRACE
- int initMPIOTrace( char *, int );
+ int initMPIOTrace( char *, int, int );
void endMPIOTrace( void ) ;
#else
void endMPIOTrace( void ) {return;}
#endif
extern char *hdfRecordPointer;
-extern char HDFprocNames[][40];
/*======================================================================*
// Prototypes of functions in this file. *
//======================================================================*/
-void HDFinitTrace_SDDF( char * );
+void HDFinitTrace_SDDF( char *, int );
/*======================================================================*
// Each procedure being traced has associated with it a distinct pair *
// of entry and exit event IDs. This code maintains a vector of such *
@@ -206,21 +208,21 @@ int *procEntryCalled;
// NAME *
// HDFinitTrace_SDDF -- initalize HDF tracing with SDDF records *
// USAGE *
-// HDFinitTrace_SDDF( traceFileName ) *
+// HDFinitTrace_SDDF( traceFileName, porcNum ) *
// PARAMETERS *
// char *traceFileName -- name of trace file to hold output *
+// int procNum -- processor Number *
// RETURNS *
// None *
//======================================================================*/
-void HDFinitTrace_SDDF( char *traceFileName )
+void HDFinitTrace_SDDF( char *traceFileName, int procNum )
{
/*====================================================================
// set traceFileName and set IO tracing switches. If MPIO *
// tracing is available, MPIO tracing will also be initialized. *
//===================================================================*/
#ifdef H5_HAVE_MPIOTRACE
- int myNode;
- char *buff;
+// int myNode;
/*====================================================================
// in the parallel case, initialize MPI-IO tracing. This *
// will initialize the traceFileName and set the I/O tracing *
@@ -231,15 +233,19 @@ void HDFinitTrace_SDDF( char *traceFileName )
// MPIO initialization be performed and handle the naming of *
// trace files. *
//===================================================================*/
- initMPIOTrace( traceFileName, SUPPRESS_MPIO_TRACE );
- MPI_Comm_rank( MPI_COMM_WORLD, &myNode );
- setTraceProcessorNumber( myNode );
+ initMPIOTrace( traceFileName, procNum, RUNTIME_TRACE );
+// MPI_Comm_rank( MPI_COMM_WORLD, &myNode );
+ setTraceProcessorNumber( procNum );
#else
- initIOTraceMP( traceFileName, RUNTIME_TRACE );
-#endif
+ IOtraceInit( traceFileName, procNum, RUNTIME_TRACE );
/*====================================================================
// complete HDF initiailization. *
//===================================================================*/
+ enableIOdetail();
+ disableLifetimeSummaries();
+ disableTimeWindowSummaries();
+ disableFileRegionSummaries();
+#endif
preInitHDFProcTrace();
initHDFProcTrace( sizeof(procEntries)/sizeof(int), procEntries );
}
@@ -644,9 +650,11 @@ void createHDFTraceDescriptor( int Inx )
{
char BUF1[256];
char BUF2[256] ;
+ char buff[41];
int FAMILY;
+ getHDFprocName( Inx, buff );
strcpy( BUF2, "HDF ");
- strcat( BUF2, HDFprocNames[Inx] );
+ strcat( BUF2, buff );
strcat( BUF2, " Procedure");
strcpy( BUF1, BUF2 );
strcat( BUF1, " Trace");
diff --git a/pablo/ProcTrace.h b/pablo/ProcTrace.h
index 6ff2911..e9e3d31 100644
--- a/pablo/ProcTrace.h
+++ b/pablo/ProcTrace.h
@@ -88,8 +88,8 @@
#undef RUNTIME_TRACE
#endif
enum HDF_IDS {
-NO_TRACE,
-RUNTIME_TRACE,
+NO_TRACE = 0,
+RUNTIME_TRACE = 1,
SUMMARY_TRACE,
MPI_RUNTIME_TRACE,
MPI_SUMMARY_TRACE,
@@ -102,6 +102,7 @@ NUM_HDF_IDS
#define SUPPRESS_MPIO_TRACE 6
#define ID_HDF_Last_Entry ID_ALLHDF
-void HDFinitTrace( const char *, int trace_id, ... );
+void HDFinitTrace( const char *, int procNum, int trace_id, ... );
void HDFendTrace( void );
+void setHDFcallLevel( int );
#endif /* PROCTRACE_H */