mirror of
https://github.com/HDFGroup/hdf5.git
synced 2024-11-27 02:10:55 +08:00
5fa81dec82
Purpose: feature Description: allows the option of building the library libhdf-inst.a so that it can link with either the Pablo Trace Libraries or with the Pablo Performance Capture Facility (PCF) Solution: Added code for conditional compilation using the PCF_BUILD flag. When the library is made, the user can specify PABLO_BUILD=PCF which will cause the -DPCF_BUILD to be passed to the compiler. Platforms tested: Solaris, IRIX64
424 lines
12 KiB
C
424 lines
12 KiB
C
/*
|
|
* This file is part of the Pablo Performance Analysis Environment
|
|
*
|
|
* (R)
|
|
* The Pablo Performance Analysis Environment software is NOT in
|
|
* the public domain. However, it is freely available without fee for
|
|
* education, research, and non-profit purposes. By obtaining copies
|
|
* of this and other files that comprise the Pablo Performance Analysis
|
|
* Environment, you, the Licensee, agree to abide by the following
|
|
* conditions and understandings with respect to the copyrighted software:
|
|
*
|
|
* 1. The software is copyrighted in the name of the Board of Trustees
|
|
* of the University of Illinois (UI), and ownership of the software
|
|
* remains with the UI.
|
|
*
|
|
* 2. Permission to use, copy, and modify this software and its documentation
|
|
* for education, research, and non-profit purposes is hereby granted
|
|
* to Licensee, provided that the copyright notice, the original author's
|
|
* names and unit identification, and this permission notice appear on
|
|
* all such copies, and that no charge be made for such copies. Any
|
|
* entity desiring permission to incorporate this software into commercial
|
|
* products should contact:
|
|
*
|
|
* Professor Daniel A. Reed reed@cs.uiuc.edu
|
|
* University of Illinois
|
|
* Department of Computer Science
|
|
* 2413 Digital Computer Laboratory
|
|
* 1304 West Springfield Avenue
|
|
* Urbana, Illinois 61801
|
|
* USA
|
|
*
|
|
* 3. Licensee may not use the name, logo, or any other symbol of the UI
|
|
* nor the names of any of its employees nor any adaptation thereof in
|
|
* advertizing or publicity pertaining to the software without specific
|
|
* prior written approval of the UI.
|
|
*
|
|
* 4. THE UI MAKES NO REPRESENTATIONS ABOUT THE SUITABILITY OF THE
|
|
* SOFTWARE FOR ANY PURPOSE. IT IS PROVIDED "AS IS" WITHOUT EXPRESS
|
|
* OR IMPLIED WARRANTY.
|
|
*
|
|
* 5. The UI shall not be liable for any damages suffered by Licensee from
|
|
* the use of this software.
|
|
*
|
|
* 6. The software was developed under agreements between the UI and the
|
|
* Federal Government which entitle the Government to certain rights.
|
|
*
|
|
**************************************************************************
|
|
*
|
|
* Developed by: The Pablo Research Group
|
|
* University of Illinois at Urbana-Champaign
|
|
* Department of Computer Science
|
|
* 1304 W. Springfield Avenue
|
|
* Urbana, IL 61801
|
|
*
|
|
* http://www-pablo.cs.uiuc.edu
|
|
*
|
|
* Send comments to: pablo-feedback@guitar.cs.uiuc.edu
|
|
*
|
|
* Copyright (c) 1991-1996
|
|
* The University of Illinois Board of Trustees.
|
|
* All Rights Reserved.
|
|
*
|
|
* PABLO is a registered trademark of
|
|
* The Board of Trustees of the University of Illinois
|
|
* registered in the U.S. Patent and Trademark Office.
|
|
*
|
|
* Author: Ruth A. Aydt (aydt@cs.uiuc.edu)
|
|
* Author: Tara M. Madhyastha (tara@cs.uiuc.edu)
|
|
*
|
|
* Project Manager and Principal Investigator:
|
|
* Daniel A. Reed (reed@cs.uiuc.edu)
|
|
*
|
|
* Funded in part by National Science Foundation grants NSF CCR87-06653
|
|
* and NSF CDA87-22836 (Tapestry), DARPA contracts DABT63-91-K-0004,
|
|
* DABT63-93-C-0040, DABT63-94-C-0049 (SIO), and F30602-96-C-0161, NASA
|
|
* contracts NAG-1-613 (ICLASS), USRA 5555-22, and NGT-51023, and a
|
|
* collaborative research agreement with the Intel Supercomputer
|
|
* Systems Division
|
|
*/
|
|
|
|
/*
|
|
* HDFIOTrace.h: This header file can be included in c source files to
|
|
* automatically redefine the I/O function calls to the
|
|
* tracing versions when "IOTRACE" is defined.
|
|
*
|
|
* It also contains function declarations for the I/O trace
|
|
* routines called from user code and constant values that may
|
|
* be needed by the user.
|
|
*
|
|
*/
|
|
#ifndef HDFIOTrace_h
|
|
#define HDFIOTrace_h
|
|
|
|
|
|
/************************************************************************/
|
|
/* These defines and the external variable OUTPUT_SWITCH are used in */
|
|
/* for HDF and MPI-IO tracing to govern the type of output produced. */
|
|
/************************************************************************/
|
|
extern int OUTPUT_SWITCH; /* default is SDDF records */
|
|
|
|
#if defined(__STDC__) || defined(__cplusplus)
|
|
#define PROTO(x) x
|
|
#else
|
|
#define PROTO(x) ()
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* #include <stdio.h> */
|
|
#include <sys/types.h>
|
|
|
|
void startHDFtraceEvent (int );
|
|
void endHDFtraceEvent (int , int , char *, int );
|
|
|
|
FILE *HDFtraceFOPEN( const char *filename, const char *type ) ;
|
|
#ifndef HDFtrace3OPEN__
|
|
int HDFtrace3OPEN( const char *path, int flags, ... ) ;
|
|
#endif
|
|
int HDFtraceCREAT( const char *path, mode_t mode );
|
|
int HDFtraceFFLUSH( FILE *stream ) ;
|
|
int HDFtraceFCLOSE( FILE *stream ) ;
|
|
int HDFtraceCLOSE( int fd ) ;
|
|
ssize_t HDFtraceREAD( int fd, void *buf, size_t nbyte );
|
|
size_t HDFtraceFREAD( void *ptr, size_t size, size_t nitems, FILE *stream );
|
|
void *HDFtraceMALLOC( size_t );
|
|
off_t HDFtraceLSEEK( int fd, off_t offset, int whence ) ;
|
|
int HDFtraceFSEEK( FILE *stream, long offset, int whence ) ;
|
|
int HDFtraceFSETPOS( FILE *stream, const fpos_t *position ) ;
|
|
void HDFtraceREWIND( FILE *stream ) ;
|
|
ssize_t HDFtraceWRITE( int fd, const void *buf, size_t nbytes );
|
|
size_t HDFtraceFWRITE( const void *, size_t , size_t , FILE * );
|
|
int HDFtracePUTS( const char *s ) ;
|
|
int HDFtraceFPUTC( int c, FILE *stream ) ;
|
|
int HDFtraceFPUTS( const char *s, FILE *stream ) ;
|
|
|
|
#ifdef HDFIOTRACE
|
|
/*
|
|
* If IOTRACE is defined, then redefine standard I/O routines to tracing
|
|
* versions. Also include the appropriate .h files so the function
|
|
* declarations from them will be redefined to traced versions.
|
|
*/
|
|
|
|
#ifdef fopen
|
|
# undef fopen
|
|
#endif
|
|
#ifdef open
|
|
# undef open
|
|
#endif
|
|
#ifdef creat
|
|
# undef creat
|
|
#endif
|
|
|
|
#ifdef fflush
|
|
# undef fflush
|
|
#endif
|
|
#ifdef fclose
|
|
# undef fclose
|
|
#endif
|
|
#ifdef close
|
|
# undef close
|
|
#endif
|
|
|
|
#ifdef read
|
|
# undef read
|
|
#endif
|
|
#ifdef fread
|
|
# undef fread
|
|
#endif
|
|
#ifdef fgetc
|
|
# undef fgetc
|
|
#endif
|
|
#ifdef fgets
|
|
# undef fgets
|
|
#endif
|
|
#ifdef gets
|
|
# undef gets
|
|
#endif
|
|
#ifdef getw
|
|
# undef getw
|
|
#endif
|
|
|
|
#ifdef lseek
|
|
# undef lseek
|
|
#endif
|
|
#ifdef fseek
|
|
# undef fseek
|
|
#endif
|
|
#ifdef rewind
|
|
# undef rewind
|
|
#endif
|
|
#ifdef fsetpos
|
|
# undef fsetpos
|
|
#endif
|
|
|
|
#ifdef write
|
|
# undef write
|
|
#endif
|
|
#ifdef fwrite
|
|
# undef fwrite
|
|
#endif
|
|
#ifdef fputc
|
|
# undef fputc
|
|
#endif
|
|
#ifdef fputs
|
|
# undef fputs
|
|
#endif
|
|
#ifdef puts
|
|
# undef puts
|
|
#endif
|
|
#ifdef putw
|
|
# undef putw
|
|
#endif
|
|
|
|
#ifdef malloc
|
|
# undef malloc
|
|
#endif
|
|
|
|
#define fopen (FILE *)HDFtraceFOPEN
|
|
#define open HDFtrace3OPEN
|
|
#define creat HDFtraceCREAT
|
|
|
|
#define fflush HDFtraceFFLUSH
|
|
#define fclose HDFtraceFCLOSE
|
|
#define close HDFtraceCLOSE
|
|
|
|
#define read HDFtraceREAD
|
|
#define fread HDFtraceFREAD
|
|
#define fgetc HDFtraceFGETC
|
|
#define fgets HDFtraceFGETS
|
|
#define gets HDFtraceGETS
|
|
#define getw HDFtraceGETW
|
|
|
|
#define lseek HDFtraceLSEEK
|
|
#define fseek HDFtraceFSEEK
|
|
#define rewind HDFtraceREWIND
|
|
#define fsetpos HDFtraceFSETPOS
|
|
|
|
#define write HDFtraceWRITE
|
|
#define fwrite HDFtraceFWRITE
|
|
#define fputc HDFtraceFPUTC
|
|
#define fputs HDFtraceFPUTS
|
|
#define puts HDFtracePUTS
|
|
#define putw HDFtracePUTW
|
|
|
|
#define malloc HDFtraceMALLOC
|
|
|
|
#include <stdio.h>
|
|
#include <fcntl.h>
|
|
|
|
/*
|
|
* On the iPSC/860 we don't include unistd.h or we get warnings about
|
|
* SEEK_* multiply defined.
|
|
*/
|
|
#ifndef __NX
|
|
#include <unistd.h>
|
|
#endif
|
|
|
|
|
|
#include <stdio.h>
|
|
/*
|
|
* Function declarations for routines that can be called from user code.
|
|
*/
|
|
void enableIOtracing( void );
|
|
void disableIOtracing( void );
|
|
|
|
void enableIOdetail( void );
|
|
void disableIOdetail( void );
|
|
|
|
void enableLifetimeSummaries( void );
|
|
void disableLifetimeSummaries( void );
|
|
|
|
void enableTimeWindowSummaries ( double );
|
|
void disableTimeWindowSummaries( void );
|
|
void setTimeWindowSize ( double );
|
|
void outputTimeWindowSummaries( void );
|
|
|
|
void enableFileRegionSummaries ( int );
|
|
void disableFileRegionSummaries( void );
|
|
void setFileRegionSize ( int );
|
|
void outputFileRegionSummaries( void );
|
|
|
|
int HDFtrace2OPEN ( char*, int );
|
|
void HDFtraceReadBegin ( int, int, int );
|
|
void HDFtraceReadEnd ( int );
|
|
void HDFtraceWriteBegin ( int, int, int );
|
|
void HDFtraceWriteEnd ( int );
|
|
void HDFtraceIOBegin ( int, int );
|
|
void HDFtraceIOEnd ( int, double, char * );
|
|
|
|
#ifdef HAVE_PARALLEL
|
|
|
|
#include "HDFmpioProtos.h"
|
|
|
|
/*
|
|
#ifdef MPI_File_open
|
|
#undef MPI_File_open
|
|
#endif
|
|
#ifdef MPI_File_close
|
|
#undef MPI_File_close
|
|
#endif
|
|
#ifdef MPI_File_delete
|
|
#undef MPI_File_delete
|
|
#endif
|
|
#ifdef MPI_File_set_size
|
|
#undef MPI_File_set_size
|
|
#endif
|
|
#ifdef MPI_File_preallocate
|
|
#undef MPI_File_preallocate
|
|
#endif
|
|
#ifdef MPI_File_get_size
|
|
#undef MPI_File_get_size
|
|
#endif
|
|
#ifdef MPI_File_get_group
|
|
#undef MPI_File_get_group
|
|
#endif
|
|
#ifdef MPI_File_get_amode
|
|
#undef MPI_File_get_amode
|
|
#endif
|
|
#ifdef MPI_File_set_view
|
|
#undef MPI_File_set_view
|
|
#endif
|
|
#ifdef MPI_File_get_view
|
|
#undef MPI_File_get_view
|
|
#endif
|
|
#ifdef MPI_File_read_at
|
|
#undef MPI_File_read_at
|
|
#endif
|
|
#ifdef MPI_File_read_at_all
|
|
#undef MPI_File_read_at_all
|
|
#endif
|
|
#ifdef MPI_File_write_at
|
|
#undef MPI_File_write_at
|
|
#endif
|
|
#ifdef MPI_File_write_at_all
|
|
#undef MPI_File_write_at_all
|
|
#endif
|
|
#ifdef MPI_File_iread_at
|
|
#undef MPI_File_iread_at
|
|
#endif
|
|
#ifdef MPI_File_iwrite_at
|
|
#undef MPI_File_iwrite_at
|
|
#endif
|
|
#ifdef MPI_File_read
|
|
#undef MPI_File_read
|
|
#endif
|
|
#ifdef MPI_File_read_all
|
|
#undef MPI_File_read_all
|
|
#endif
|
|
#ifdef MPI_File_write
|
|
#undef MPI_File_write
|
|
#endif
|
|
#ifdef MPI_File_write_all
|
|
#undef MPI_File_write_all
|
|
#endif
|
|
#ifdef MPI_File_iread
|
|
#undef MPI_File_iread
|
|
#endif
|
|
#ifdef MPI_File_iwrite
|
|
#undef MPI_File_iwrite
|
|
#endif
|
|
#ifdef MPI_File_seek
|
|
#undef MPI_File_seek
|
|
#endif
|
|
#ifdef MPI_File_get_position
|
|
#undef MPI_File_get_position
|
|
#endif
|
|
#ifdef MPI_File_get_byte_offset
|
|
#undef MPI_File_get_byte_offset
|
|
#endif
|
|
#ifdef MPI_File_get_type_extent
|
|
#undef MPI_File_get_type_extent
|
|
#endif
|
|
#ifdef MPI_File_set_atomicity
|
|
#undef MPI_File_set_atomicity
|
|
#endif
|
|
#ifdef MPI_File_get_atomicity
|
|
#undef MPI_File_get_atomicity
|
|
#endif
|
|
#ifdef MPI_File_sync
|
|
#undef MPI_File_sync
|
|
#endif
|
|
|
|
#define MPI_File_open HDF_MPI_File_open
|
|
#define MPI_File_close HDF_MPI_File_close
|
|
#define MPI_File_delete HDF_MPI_File_delete
|
|
#define MPI_File_set_size HDF_MPI_File_set_size
|
|
#define MPI_File_preallocate HDF_MPI_File_preallocate
|
|
#define MPI_File_get_size HDF_MPI_File_get_size
|
|
#define MPI_File_get_group HDF_MPI_File_get_group
|
|
#define MPI_File_get_amode HDF_MPI_File_get_amode
|
|
#define MPI_File_set_view HDF_MPI_File_set_view
|
|
#define MPI_File_get_view HDF_MPI_File_get_view
|
|
#define MPI_File_read_at HDF_MPI_File_read_at
|
|
#define MPI_File_read_at_all HDF_MPI_File_read_at_all
|
|
#define MPI_File_write_at HDF_MPI_File_write_at
|
|
#define MPI_File_write_at_all HDF_MPI_File_write_at_all
|
|
#define MPI_File_iread_at HDF_MPI_File_iread_at
|
|
#define MPI_File_iwrite_at HDF_MPI_File_iwrite_at
|
|
#define MPI_File_read HDF_MPI_File_read
|
|
#define MPI_File_read_all HDF_MPI_File_read_all
|
|
#define MPI_File_write HDF_MPI_File_write
|
|
#define MPI_File_write_all HDF_MPI_File_write_all
|
|
#define MPI_File_iread HDF_MPI_File_iread
|
|
#define MPI_File_iwrite HDF_MPI_File_iwrite
|
|
#define MPI_File_seek HDF_MPI_File_seek
|
|
#define MPI_File_get_position HDF_MPI_File_get_position
|
|
#define MPI_File_get_byte_offset HDF_MPI_File_get_byte_offset
|
|
#define MPI_File_get_type_extent HDF_MPI_File_get_type_extent
|
|
#define MPI_File_set_atomicity HDF_MPI_File_set_atomicity
|
|
#define MPI_File_get_atomicity HDF_MPI_File_get_atomicity
|
|
#define MPI_File_sync HDF_MPI_File_sync
|
|
#endif
|
|
*/
|
|
#endif
|
|
#endif
|
|
#ifdef __cplusplus
|
|
}
|
|
|
|
#endif /* HAVE_PARALLEL */
|
|
|
|
#endif /* HDFIOTRACE conditional */
|