[svn-r1179] Changes made to enable automatic building of list of event IDs and to make output of HDF 4 and HDF 5 tracing compatible.

This commit is contained in:
Dan Wells 1999-04-14 16:15:23 -05:00
parent 9526d48dba
commit 31ac744586
3 changed files with 558 additions and 176 deletions

View File

@ -1,176 +0,0 @@
/*
* 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) 1987-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: Dan Wells (dwells@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
*/
/*
* HDFrecord.h: Class to represent HDF records.
*
* $Header$
*/
#ifndef HDF5RECORD_RT_H
#define HDF5RECORD_RT_H
#ifndef NULL
#define NULL 0
#endif
#include <string.h>
#include <stdlib.h>
#include <limits.h>
#include "ProcIDs.h"
#ifndef min
#define min( x , y ) ( x <= y ? x : y )
#endif
#ifndef max
#define max( x , y ) ( x >= y ? x : y )
#endif
/*======================================================================*
// Enumeration of time fields in an HDFrec_t below *
//======================================================================*/
enum TimeFields { HDF_, MPI, Malloc, AllIO, Open, Close, Read, Write, ARead,
AWrite, Seek, Wait, Misc, nTallyFields };
/*======================================================================*
// Enumeration of byte fields in an HDFrec_t below *
//======================================================================*/
enum ByteFields{ MallocBytes, ReadBytes, WriteBytes, AReadBytes, AWriteBytes,
nByteFields };
/*======================================================================*
// Definition of first and last IO event. *
//======================================================================*/
#define FirstIO Open
#define LastIO Misc
#define nBkts 4
#define ONEK 1024
int BktLim[] = { 1, 4*ONEK, 64*ONEK, 256*ONEK, INT_MAX } ;
/*======================================================================*
// Definition of structure used to account activity in an HDF call *
//======================================================================*/
typedef struct {
int nCalls; /* number of proc calls */
CLOCK lastCall; /* time of last call */
CLOCK incDur; /* inclusive duration */
CLOCK excDur; /* exclusive duration */
CLOCK times[nTallyFields]; /* Tally op/calls times */
int counts[nTallyFields]; /* Tally op/calls counts */
int bytes[nByteFields]; /* Tally bytes transferred */
int Hists[nByteFields][nBkts]; /* Historgrams */
long hdfID; /* data set ID */
long xRef; /* data set cross reference */
} HDFrec_t;
/*======================================================================*
// Node used to maintain linked lists of HDF procedure activity. *
//======================================================================*/
typedef struct HDFnode {
CLOCK lastIOtime; /* last IO time stamp */
HDFrec_t record; /* data */
struct HDFnode *ptr; /* link pointer */
int eventID; /* event ID */
} HDFnode_t;
/*======================================================================*
// Structure used to produce SDDF packets for Named identifiers. *
//======================================================================*/
typedef struct {
int packetLength; /* bytes in packet */
int packetType; /* == PKT_DATA */
int packetTag; /* == FAMILY_<name> */
int fileType; /* Type of data set */
int fileID; /* File ID */
int nameLen; /* length of file */
} HDFNamePacket_t;
/*======================================================================*
// Node used to form linked lists to track named identifiers. *
//======================================================================*/
typedef struct fileRec {
struct fileRec *ptr;
long hdfID;
long PabloID;
char *fileName;
} fileRec_t;
/*=======================================================================
// Utility programs to determine field index for a given eventID *
//=====================================================================*/
int getHDFFieldIndex( int eventID );
int getHDFByteFieldIndex( int eventID );
/*
* Define flags to distinguish misc i/o begin from misc i/o end
*/
#define MISC_BEGIN 0
#define MISC_END 1
#endif /* HDF5RECORD_RT_H */

419
pablo/HDFIOTrace.h Normal file
View File

@ -0,0 +1,419 @@
/*
* 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( 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 /* HAVE_PARALLEL */
#endif /* HAVE_PARALLEL */
#ifdef __cplusplus
}
#endif
#endif /* HDFIOTRACE conditional */

139
pablo/HDFTrace.h Normal file
View File

@ -0,0 +1,139 @@
/* 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) 1987-1998
// 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.
//
// Project Manager and Principal Investigator:
// Daniel A. Reed (reed@cs.uiuc.edu)
//
// Funded in part by the Defense Advanced Research Projects Agency under
// DARPA contracts DABT63-94-C0049 (SIO Initiative), F30602-96-C-0161,
// and DABT63-96-C-0027 by the National Science Foundation under the PACI
// program and grants NSF CDA 94-01124 and ASC 97-20202, and by the
// Department of Energy under contracts DOE B-341494, W-7405-ENG-48, and
// 1-B-333164.
//======================================================================*/
#ifndef HDFTRACE_H
#define HDFTRACE_H
/************************************************************************/
/* A shared char * pointer (defined in HDF_Descriptors.c) and Macro */
/* definitions */
/************************************************************************/
extern char *hdfRecordPointer;
/************************************************************************/
/* The following are used in tagging HDF packets. Avoid using FAMILY */
/* tags in the range 0100000 to 0200000 */
/************************************************************************/
#define HDF_FAMILY 0100000
#define HDF_SUMMARY_FAMILY 0140000
/************************************************************************/
/* Number of fields in the packets. */
/************************************************************************/
#define NUM_FIELDS 17
/*
* "WRITE_HDF_ATTR" macro to output an attribute pair.
*/
#ifndef WRITE_HDF_ATTR
#define WRITE_HDF_ATTR( attrKey, attrValue ) \
sddfWriteString( &hdfRecordPointer, attrKey ); \
sddfWriteString( &hdfRecordPointer, attrValue );
#endif /* WRITE_HDF_ATTR */
/*
* "WRITE_HDF_FIELD" macro to output a field with a single attribute pair.
*/
#ifndef WRITE_HDF_FIELD
#define WRITE_HDF_FIELD( name, attrKey, attrValue, type, dimension ) \
sddfWriteString( &hdfRecordPointer, name ); \
sddfWriteInteger( &hdfRecordPointer, 1 ); \
sddfWriteString( &hdfRecordPointer, attrKey ); \
sddfWriteString( &hdfRecordPointer, attrValue ); \
sddfWriteInteger( &hdfRecordPointer, type ); \
sddfWriteInteger( &hdfRecordPointer, dimension );
#endif /* WRITE_HDF_FIELD */
/*
* "WRITE_HDF_FIELD2" to output a field with two attribute pairs.
*/
#ifndef WRITE_HDF_FIELD2
#define WRITE_HDF_FIELD2( name, aKey1, aValue1, aKey2, aValue2, type, dimension ) \
sddfWriteString( &hdfRecordPointer, name ); \
sddfWriteInteger( &hdfRecordPointer, 2 ); \
sddfWriteString( &hdfRecordPointer, aKey1 ); \
sddfWriteString( &hdfRecordPointer, aValue1 ); \
sddfWriteString( &hdfRecordPointer, aKey2 ); \
sddfWriteString( &hdfRecordPointer, aValue2 ); \
sddfWriteInteger( &hdfRecordPointer, type ); \
sddfWriteInteger( &hdfRecordPointer, dimension );
#endif /* WRITE_HDF_FIELD2*/
#define FAMILY_NAME 0260 /* Data Set Name Record */
#define FAMILY_MISC 0270
#define FAMILY_HDFPROCNAME 0300
typedef struct {
long setID;
char *setName;
} HDFsetInfo ;
#endif /* HDFTRACE_H */