[svn-r796] Pablo instrumentation support files.

This commit is contained in:
Dan Wells 1998-10-26 15:07:31 -05:00
parent f7545efc76
commit 4d5f1b72de
5 changed files with 5762 additions and 0 deletions

976
pablo/HDFentries.txt Normal file
View File

@ -0,0 +1,976 @@
DFANaddfds
DFANaddfid
DFANgetdesc
DFANgetdesclen
DFANgetfds
DFANgetfdslen
DFANgetfid
DFANgetfidlen
DFANgetlabel
DFANgetlablen
DFANlablist
DFANlastref
DFANputdesc
DFANputlabel
DFANclear
DFPaddpal
DFPgetpal
DFPlastref
DFPnpals
DFPputpal
DFPreadref
DFPrestart
DFPwriteref
DFR8addimage
DFR8getdims
DFR8getimage
DFR8lastref
DFR8nimages
DFR8putimage
DFR8readref
DFR8restart
DFR8setcompress
DFR8setpalette
DFR8writeref
DFR8Istart
DFSDadddata
DFSDclear
DFSDendslab
DFSDendslice
DFSDgetcal
DFSDgetdata
DFSDgetdatalen
DFSDgetdatastrs
DFSDgetdimlen
DFSDgetdims
DFSDgetdimscale
DFSDgetdimstrs
DFSDgetfillvalue
DFSDgetNT
DFSDgetrange
DFSDgetslice
DFSDlastref
DFSDndatasets
DFSDpre32sdg
DFSDputdata
DFSDputslice
DFSDreadref
DFSDreadslab
DFSDrestart
DFSDsetcal
DFSDsetdatastrs
DFSDsetdims
DFSDsetdimscale
DFSDsetdimstrs
DFSDsetfillvalue
DFSDsetlengths
DFSDsetNT
DFSDsetrange
DFSDstartslab
DFSDstartslice
DFSDwriteref
DFSDwriteslab
DF24addimage
DF24getdims
DF24getimage
DF24lastref
DF24nimages
DF24putimage
DF24readref
DF24reqil
DF24restart
DF24setcompress
DF24setdims
DF24setil
Happendable
Hclose
Hdeldd
Hdupdd
Hendaccess
Hfind
Hgetelement
Hgetfileversion
Hgetlibversion
Hinquire
Hishdf
HLcreate
Hlength
Hnewref
Hnextread
Hnumber
Hoffset
Hopen
Hputelement
Hread
Hseek
Hstartread
Hstartwrite
Hsync
Htrunc
Hwrite
HXcreate
HXsetcreatedir
HXsetdir
HLconvert
Hstartaccess
Hisappendable
Htell
Htagnewref
Hcache
Hsetaccesstype
Hexist
Hsetlength
Hfidinquire
HDdont_atexit
HDreuse_tagref
HIstart
HPregister_term_func
HIbitstart
HMCcreate
HMCsetMaxcache
HMCPstread
HMCPstwrite
HMCPseek
HMCPchunkread
HMCreadChunk
HMCPread
HMCPchunkwrite
HMCwriteChunk
HMCPwrite
HMCPendaccess
HMCPinfo
HMCPinquire
HEclear
HEprint
HEpush
HEreport
HEstring
SDattrinfo
SDcreate
SDdiminfo
SDend
SDendaccess
SDfileinfo
SDfindattr
SDgetcal
SDgetchunkinfo
SDgetdatastrs
SDgetdimid
SDgetdimscale
SDgetdimstrs
SDgetfillvalue
SDgetinfo
SDgetrange
SDidtoref
SDiscoordvar
SDisdimval_bwcomp
SDisrecord
SDnametoindex
SDreadattr
SDreadchunk
SDreaddata
SDreftoindex
SDselect
SDsetaccesstype
SDsetattr
SDsetblocksize
SDsetcal
SDsetchunk
SDsetchunkcache
SDsetcompress
SDsetdatastrs
SDsetdimname
SDsetdimscale
SDsetdimstrs
SDsetdimval_comp
SDsetexternalfile
SDsetfillmode
SDsetfillvalue
SDsetnbitdataset
SDsetrag
SDsetrange
SDstart
SDwritechunk
SDwritedata
VFfieldesize
VFfieldisize
VFfieldname
VFfieldorder
VFfieldtype
VFnfields
Vaddtagref
Vattach
Vdeletetagref
Vdetach
Vgetclass
Vgetid
Vgetname
Vgettagref
Vgettagrefs
Vinqtagref
Vinquire
Vinsert
Vlone
Vntagrefs
Vsetclass
Vsetname
Vinitialize
Vfinish
Vfind
Vfindclass
vpackvs
vunpackvs
vpackvg
vunpackvg
Vsetattr
Vgetversion
Vnattrs
Vfindattr
Vattrinfo
Vgetattr
VHmakegroup
VHstoredata
VHstoredatam
VSattach
VSdetach
VSelts
VSfdefine
VSfexist
VSfind
VSgetclass
VSgetfields
VSgetid
VSgetinterlace
VSgetname
VSinquire
VSlone
VSread
VSseek
VSsetclass
VSsetfields
VSsetinterlace
VSsetname
VSsizeof
VSwrite
VSappendable
VSdelete
VSfindclass
VSfpack
VSfindex
VSsetattr
VSnattrs
VSfnattrs
VSfindattr
VSattrinfo
VSgetattr
VSisattr
ANstart
ANfileinfo
ANend
ANcreate
ANcreatef
ANselect
ANnumann
ANannlist
ANannlen
ANreadann
ANwriteann
ANendaccess
GRstart
GRfileinfo
GRend
GRcreate
GRselect
GRnametoindex
GRgetiminfo
GRwriteimage
GRreadimage
GRendaccess
GRgetdimid
GRsetdimname
GRdiminfo
GRidtoref
GRreftoindex
GRreqlutil
GRreqimageil
GRgetlutid
GRgetlutinfo
GRwritelut
GRreadlut
GRsetexternalfile
GRsetaccesstype
GRsetcompress
GRsetattr
GRattrinfo
GRgetattr
GRfindattr
GRluttoref
GRsetchunk
GRgetchunkinfo
GRsetchunkcache
HAinit_group
HAdestroy_group
HAregister_atom
HAatom_object
HAatom_group
HAremove_atom
HAsearch_atom
DAcreate_array
DAdestroy_array
DAsize_array
DAget_elem
DAset_elem
DAdel_elem
HULcreate_list
HULdestroy_list
HULadd_node
HULsearch_node
HULfirst_node
HULnext_node
HULremove_node
HDFnewentry
SDcheckempty
H5AC_create
H5AC_debug
H5AC_dest
H5AC_find
H5AC_flush
H5AC_protect
H5AC_rename
H5AC_set
H5AC_unprotect
H5A_close
H5A_copy
H5A_create
H5A_entof
H5A_get_index
H5A_init_interface
H5A_open
H5A_read
H5A_write
H5Aclose
H5Acreate
H5Aget_name
H5Aget_num_attrs
H5Aget_space
H5Aget_type
H5Aiterate
H5Aopen_idx
H5Aopen_name
H5Aread
H5Awrite
H5B_assert
H5B_create
H5B_debug
H5B_decode_key
H5B_decode_keys
H5B_find
H5B_flush
H5B_insert
H5B_insert_child
H5B_insert_helper
H5B_iterate
H5B_load
H5B_nodesize
H5B_remove
H5B_remove_helper
H5B_split
H5D_allocate
H5D_close
H5D_create
H5D_extend
H5D_get_space
H5D_init_interface
H5D_init_storage
H5D_open
H5D_read
H5D_typeof
H5D_write
H5Dclose
H5Dcreate
H5Dextend
H5Dget_create_plist
H5Dget_space
H5Dget_type
H5Dopen
H5Dread
H5Dwrite
H5E_clear
H5E_walk
H5Eclear
H5Eget_auto
H5Eprint
H5Eset_auto
H5Ewalk
H5F_addr_cmp
H5F_addr_defined
H5F_addr_zerop
H5F_arr_create
H5F_arr_read
H5F_arr_write
H5F_block_read
H5F_block_write
H5F_close
H5F_compare_files
H5F_core_access
H5F_core_close
H5F_core_open
H5F_core_read
H5F_core_write
H5F_debug
H5F_dest
H5F_fam_access
H5F_fam_close
H5F_fam_flush
H5F_fam_open
H5F_fam_read
H5F_fam_write
H5F_flush
H5F_init_interface
H5F_istore_allocate
H5F_istore_cmp2
H5F_istore_cmp3
H5F_istore_create
H5F_istore_debug
H5F_istore_debug_key
H5F_istore_decode_key
H5F_istore_dest
H5F_istore_encode_key
H5F_istore_flush
H5F_istore_flush_entry
H5F_istore_found
H5F_istore_get_addr
H5F_istore_init
H5F_istore_insert
H5F_istore_lock
H5F_istore_new_node
H5F_istore_preempt
H5F_istore_prune
H5F_istore_read
H5F_istore_stats
H5F_istore_unlock
H5F_istore_write
H5F_locate_signature
H5F_low_alloc
H5F_low_class
H5F_low_close
H5F_low_flush
H5F_low_open
H5F_low_read
H5F_low_seteof
H5F_low_size
H5F_low_write
H5F_mount
H5F_mountpoint
H5F_mpio_access
H5F_mpio_close
H5F_mpio_flush
H5F_mpio_open
H5F_mpio_read
H5F_mpio_tas_allsame
H5F_mpio_write
H5F_new
H5F_open
H5F_sec2_close
H5F_sec2_open
H5F_sec2_read
H5F_sec2_write
H5F_split_access
H5F_split_alloc
H5F_split_close
H5F_split_extend
H5F_split_flush
H5F_split_open
H5F_split_read
H5F_split_write
H5F_stdio_close
H5F_stdio_flush
H5F_stdio_open
H5F_stdio_read
H5F_stdio_write
H5F_unmount
H5Fclose
H5Fcreate
H5Fflush
H5Fget_access_plist
H5Fget_create_plist
H5Fis_hdf5
H5Fmount
H5Fopen
H5Funmount
H5G_basename
H5G_close
H5G_create
H5G_ent_cache
H5G_ent_debug
H5G_ent_decode
H5G_ent_decode_vec
H5G_ent_encode
H5G_ent_encode_vec
H5G_ent_modified
H5G_find
H5G_get_comment
H5G_get_objinfo
H5G_getcwg
H5G_init_interface
H5G_insert
H5G_link
H5G_linkval
H5G_loc
H5G_mkroot
H5G_move
H5G_namei
H5G_node_cmp2
H5G_node_cmp3
H5G_node_create
H5G_node_debug
H5G_node_decode_key
H5G_node_encode_key
H5G_node_flush
H5G_node_found
H5G_node_insert
H5G_node_iterate
H5G_node_load
H5G_node_remove
H5G_open
H5G_pop
H5G_push
H5G_reopen
H5G_set
H5G_set_comment
H5G_stab_create
H5G_stab_find
H5G_stab_insert
H5G_stab_remove
H5G_traverse_slink
H5G_unlink
H5Gclose
H5Gcreate
H5Gget_comment
H5Gget_linkval
H5Gget_objinfo
H5Giterate
H5Glink
H5Gmove
H5Gopen
H5Gpop
H5Gpush
H5Gset
H5Gset_comment
H5Gunlink
H5HG_alloc
H5HG_create
H5HG_debug
H5HG_flush
H5HG_insert
H5HG_link
H5HG_load
H5HG_peek
H5HG_read
H5HG_remove
H5HL_create
H5HL_debug
H5HL_flush
H5HL_insert
H5HL_load
H5HL_peek
H5HL_read
H5HL_remove
H5HL_write
H5I_dec_ref
H5I_destroy_group
H5I_find_id
H5I_get_id_node
H5I_get_type
H5I_group
H5I_inc_ref
H5I_init_group
H5I_init_interface
H5I_object
H5I_register
H5I_release_id_node
H5I_remove
H5I_search
H5Iget_type
H5MF_acceptable
H5MF_alloc
H5MF_realloc
H5MF_xfree
H5MM_strdup
H5O_alloc
H5O_alloc_extend_chunk
H5O_alloc_new_chunk
H5O_attr_copy
H5O_attr_debug
H5O_attr_decode
H5O_attr_encode
H5O_attr_reset
H5O_attr_size
H5O_close
H5O_cont_debug
H5O_cont_decode
H5O_cont_encode
H5O_copy
H5O_count
H5O_create
H5O_debug
H5O_dtype_copy
H5O_dtype_debug
H5O_dtype_decode
H5O_dtype_decode_helper
H5O_dtype_encode
H5O_dtype_encode_helper
H5O_dtype_get_share
H5O_dtype_reset
H5O_dtype_set_share
H5O_dtype_size
H5O_efl_copy
H5O_efl_debug
H5O_efl_decode
H5O_efl_encode
H5O_efl_read
H5O_efl_reset
H5O_efl_size
H5O_efl_total_size
H5O_efl_write
H5O_find_in_ohdr
H5O_fill_decode
H5O_fill_encode
H5O_fill_copy
H5O_fill_size
H5O_fill_reset
H5O_fill_debug
H5O_fill_convert
H5O_flush
H5O_free
H5O_init_interface
H5O_layout_copy
H5O_layout_debug
H5O_layout_decode
H5O_layout_encode
H5O_layout_size
H5O_link
H5O_load
H5O_modify
H5O_mtime_copy
H5O_mtime_debug
H5O_mtime_decode
H5O_mtime_encode
H5O_mtime_size
H5O_name_copy
H5O_name_debug
H5O_name_decode
H5O_name_encode
H5O_name_reset
H5O_name_size
H5O_open
H5O_pline_copy
H5O_pline_debug
H5O_pline_decode
H5O_pline_encode
H5O_pline_reset
H5O_pline_size
H5O_read
H5O_remove
H5O_reset
H5O_sdspace_copy
H5O_sdspace_debug
H5O_sdspace_decode
H5O_sdspace_encode
H5O_sdspace_reset
H5O_sdspace_size
H5O_share
H5O_shared_debug
H5O_shared_decode
H5O_shared_encode
H5O_shared_size
H5O_stab_copy
H5O_stab_debug
H5O_stab_decode
H5O_stab_encode
H5O_stab_fast
H5O_stab_size
H5O_touch
H5O_touch_oh
H5P_close
H5P_copy
H5P_create
H5P_get_class
H5P_init_interface
H5Pclose
H5Pcopy
H5Pcreate
H5Pget_alignment
H5Pget_btree_ratios
H5Pget_buffer
H5Pget_cache
H5Pget_chunk
H5Pget_class
H5Pget_core
H5Pget_driver
H5Pget_external
H5Pget_external_count
H5Pget_family
H5Pget_fill_value
H5Pget_filter
H5Pget_hyper_cache
H5Pget_istore_k
H5Pget_layout
H5Pget_mpi
H5Pget_nfilters
H5Pget_sec2
H5Pget_sizes
H5Pget_split
H5Pget_stdio
H5Pget_sym_k
H5Pget_userblock
H5Pget_version
H5Pget_xfer
H5Pset_alignment
H5Pset_buffer
H5Pset_cache
H5Pset_chunk
H5Pset_core
H5Pset_deflate
H5Pset_external
H5Pset_family
H5Pset_fill_value
H5Pset_filter
H5Pset_hyper_cache
H5Pset_istore_k
H5Pset_layout
H5Pset_mpi
H5Pset_preserve
H5Pset_sec2
H5Pset_sizeof_addr
H5Pset_split
H5Pset_stdio
H5Pset_sym_k
H5Pset_userblock
H5Pset_xfer
H5R_close
H5R_create
H5R_fix_overflow
H5R_init_interface
H5R_open
H5R_read
H5R_write
H5Rclose
H5Rcreate
H5Ropen
H5Rread
H5Rwrite
H5RAcreate
H5RA_create
H5RAopen
H5RA_open
H5RAclose
H5RA_close
H5RA_init_interface
H5RAwrite
H5RA_write
H5RA_fix_overflow
H5RAread
H5RA_read
H5S_all_favail
H5S_all_fgath
H5S_all_fscat
H5S_all_init
H5S_all_mgath
H5S_all_mscat
H5S_all_npoints
H5S_all_release
H5S_close
H5S_cmp
H5S_copy
H5S_create
H5S_debug
H5S_extend
H5S_extent_copy
H5S_extent_release
H5S_find
H5S_get_npoints_max
H5S_get_select_npoints
H5S_get_simple_extent_dims
H5S_get_simple_extent_ndims
H5S_get_simple_extent_npoints
H5S_hyper_add
H5S_hyper_block_cache
H5S_hyper_block_read
H5S_hyper_block_write
H5S_hyper_bsearch
H5S_hyper_clip
H5S_hyper_copy
H5S_hyper_favail
H5S_hyper_fgath
H5S_hyper_fread
H5S_hyper_fscat
H5S_hyper_fwrite
H5S_hyper_get_regions
H5S_hyper_init
H5S_hyper_mgath
H5S_hyper_mread
H5S_hyper_mscat
H5S_hyper_mwrite
H5S_hyper_node_add
H5S_hyper_node_prepend
H5S_hyper_npoints
H5S_hyper_release
H5S_hyper_sel_iter_release
H5S_hyper_select_valid
H5S_init_interface
H5S_is_simple
H5S_modify
H5S_mpio_all_type
H5S_mpio_hyper_type
H5S_mpio_space_type
H5S_mpio_spaces_read
H5S_mpio_spaces_write
H5S_mpio_spaces_xfer
H5S_point_add
H5S_point_copy
H5S_point_favail
H5S_point_fgath
H5S_point_fscat
H5S_point_init
H5S_point_mgath
H5S_point_mscat
H5S_point_npoints
H5S_point_release
H5S_point_select_valid
H5S_read
H5S_register
H5S_release_simple
H5S_sel_iter_release
H5S_select_copy
H5S_select_hyperslab
H5S_select_init
H5S_select_release
H5S_select_valid
H5S_set_extent_simple
H5Sclose
H5Scopy
H5Screate
H5Screate_simple
H5Sget_select_npoints
H5Sget_simple_extent_dims
H5Sget_simple_extent_ndims
H5Sget_simple_extent_npoints
H5Sget_simple_extent_type
H5Sis_simple
H5Soffset_simple
H5Sselect_all
H5Sselect_elements
H5Sselect_hyperslab
H5Sselect_none
H5Sselect_valid
H5Sset_extent_none
H5Sset_extent_simple
H5TB_buf_ptr
H5TB_close
H5TB_garbage_coll
H5TB_get_buf
H5TB_init_interface
H5TB_release_buf
H5TB_resize_buf
H5T_bit_get_d
H5T_close
H5T_commit
H5T_conv_double_float
H5T_conv_f_f
H5T_conv_float_double
H5T_conv_i32le_f64le
H5T_conv_i_i
H5T_conv_noop
H5T_conv_order
H5T_conv_s_s
H5T_conv_struct
H5T_conv_struct_init
H5T_copy
H5T_create
H5T_debug
H5T_entof
H5T_equal
H5T_find
H5T_get_size
H5T_init
H5T_init_interface
H5T_insert
H5T_is_atomic
H5T_lock
H5T_open
H5T_pack
H5T_path_find
H5T_sort_by_offset
H5T_unlock_cb
H5Tclose
H5Tcommit
H5Tcommitted
H5Tconvert
H5Tcopy
H5Tcreate
H5Tequal
H5Tfind
H5Tget_class
H5Tget_cset
H5Tget_ebias
H5Tget_fields
H5Tget_inpad
H5Tget_member_dims
H5Tget_member_name
H5Tget_member_offset
H5Tget_member_type
H5Tget_norm
H5Tget_num_members
H5Tget_offset
H5Tget_order
H5Tget_overflow
H5Tget_pad
H5Tget_precision
H5Tget_sign
H5Tget_size
H5Tget_strpad
H5Tinsert
H5Tinsert_array
H5Tlock
H5Topen
H5Tpack
H5Tregister_hard
H5Tregister_soft
H5Tset_cset
H5Tset_ebias
H5Tset_fields
H5Tset_inpad
H5Tset_norm
H5Tset_offset
H5Tset_order
H5Tset_overflow
H5Tset_pad
H5Tset_prec
H5Tset_sign
H5Tset_size
H5Tset_strpad
H5Tunregister
H5V_array_fill
H5V_hyper_copy
H5V_hyper_fill
H5V_hyper_stride
H5V_stride_copy
H5V_stride_copy2
H5V_stride_fill
H5V_stride_optimize1
H5V_stride_optimize2
H5Z_append
H5Z_filter_deflate
H5Z_find
H5Z_init_interface
H5Z_pipeline
H5Z_register
H5Zregister
H5_add_exit
H5_init_interface
H5_init_library
H5_init_thread
H5dont_atexit
H5get_libversion
H5open

1423
pablo/Makefile.in Normal file

File diff suppressed because it is too large Load Diff

862
pablo/PabloHDF.c Normal file
View File

@ -0,0 +1,862 @@
/* 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.
//========================================================================*/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#ifndef fileno
int fileno ( FILE * );
#endif
/* on ipsc/860 don't include this or you'll get multiply defined SEEK_* */
#ifndef __NX
#include <unistd.h>
#endif
#define HDFtrace3OPEN__
int HDFtrace3OPEN( const char *, int, mode_t );
/*#include "Assert_TrLib.h"*/
#include "SDDFparam.h"
#include "TraceParam.h"
#include "SystemDepend.h"
#include "Trace.h"
#include "IO_TraceParams.h"
#include "HDFIOTrace.h"
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
/* mode_t is not defined on the ipsc/860 so we define it here */
#ifdef __NX
typedef unsigned int mode_t;
#endif
int OUTPUT_SWITCH;
extern void preInitIOTrace( void );
#include "ProcIDs.h"
#include "HDFTrace.h"
#include "IOTrace.h"
#define NO_OUTPUT 0
#define SDDF_OUTPUT 1
#define RT_OUTPUT 2
void HDFinitTrace_RT ( const char *, unsigned int );
void HDFinitTrace_SDDF ( const char *, unsigned int );
void hinittracex_ ( int [], int *, unsigned *, int * );
void hdfendtrace_ ( void ) ;
void HDFendTrace (void);
void HDFendTrace_RT (void);
void HDFendTrace_SDDF(void);
void startHDFtraceEvent (int );
int computeProcMask (int eventID);
int computePacketTag(int eventID);
void endHDFtraceEvent (int , int , char *, int );
void traceEvent ( int , char *, unsigned );
void HDFtraceEvent_RT ( int , HDFsetInfo *, unsigned );
void HDFtraceIOEvent( int , void *, unsigned );
uint procTrace;
extern int IOtracingEnabled;
char *hdfRecordPointer;
/*======================================================================*
// NAME *
// HDFinitTrace -- initialize HDF tracing *
// USAGE *
// VOID HDFinitTrace( traceFileName, procTraceMask, out_sw ) *
// char *traceFileName; IN: name of the generated trace output *
// file *
// uint32 procTraceMask; IN: families of procedures to trace *
// int out_sw IN: indicates whether to produce SDDF *
// file or Final Summary *
// RETURNS *
// None. *
//======================================================================*/
/*======================================================================*
// fortran to C interface. To insure portability, the character array *
// passed in Fortran is converted to an integer array using the ICHAR *
// function. This program converts it from integer to char, then *
// passes it to the C initialization routine. *
//======================================================================*/
void hinittracex_( int *file, int *len, unsigned *procMask, int *out_sw )
{
char *fileName;
int i;
fileName = (char *)malloc(*len+1);
for ( i = 0; i < *len; ++i ) {
fileName[i] = file[i];
}
fileName[*len+1] = 0;
HDFinitTrace ( fileName, *procMask, *out_sw );
}
void HDFinitTrace( const char *traceFileName, unsigned procTraceMask,
unsigned out_sw )
{
OUTPUT_SWITCH = out_sw;
if ( out_sw == SDDF_OUTPUT ) {
HDFinitTrace_SDDF( traceFileName, procTraceMask );
IOtracingEnabled = 1;
} else if ( out_sw == RT_OUTPUT ) {
HDFinitTrace_RT( traceFileName, procTraceMask );
IOtracingEnabled = 1;
} else if ( out_sw == NO_OUTPUT ) {
procTrace = 0;
IOtracingEnabled = 0;
} else {
fprintf(stderr,">> Error in HDFinitTrace: the third argument ");
fprintf(stderr,"must have the value 0, 1, <<<\n");
fprintf(stderr,">> or 2. The value received was %u.", out_sw);
fprintf(stderr," Exiting program. <<<\n");
exit (-1);
}
}
/*======================================================================*
// NAME *
// HDFendTrace -- end HDF tracing *
// USAGE *
// VOID HDFendTrace(VOID) *
// RETURNS *
// None. *
//======================================================================*/
void hdfendtrace_( void )
{
HDFendTrace ();
}
void HDFendTrace(void)
{
if ( OUTPUT_SWITCH == SDDF_OUTPUT ) {
HDFendTrace_SDDF( );
} else if ( OUTPUT_SWITCH == RT_OUTPUT ) {
HDFendTrace_RT( );
}
procTrace = 0;
}
void startHDFtraceEvent(int eventID)
{
if ( OUTPUT_SWITCH == SDDF_OUTPUT ) {
traceEvent( eventID, NULL, 0 ) ;
} else {
HDFtraceEvent_RT( eventID, NULL, 0 ) ;
}
}
void endHDFtraceEvent(int eventID, int setID, char *setName, int IDtype )
{
HDFsetInfo info;
info.setID = setID;
info.setName = setName;
if ( OUTPUT_SWITCH == SDDF_OUTPUT ) {
traceEvent( eventID, (char *)&info, 0 ) ;
} else if (OUTPUT_SWITCH == RT_OUTPUT ) {
HDFtraceEvent_RT( eventID, &info, 0 ) ;
} else if ( OUTPUT_SWITCH < 0 ) {
fprintf(stderr,"endHDFtraceEvent: ");
fprintf(stderr,"invalid OUTPUT_SWITCH %d, IDtype = %d\n",
OUTPUT_SWITCH, IDtype ) ;
}
}
/******************************************************************************/
/*+ Open routines +*/
/*+ ------------- +*/
/*+ +*/
/*+ Routine: FILE *HDFtraceFOPEN( const char *filename, const char *type ) +*/
/*+ substitute for fopen() +*/
/*+ generates fopenBeginID, fopenEndID +*/
/*+ record Open (fopenBegin) +*/
/*+ Mode = -1 +*/
/*+ +*/
FILE *HDFtraceFOPEN( const char *filename, const char *type )
{
FILE *fp;
int fd, id;
int flags = 0;
struct open_args openArgs;
size_t typeLen;
if ( IOtracingEnabled ) {
strcpy( openArgs.filename, filename );
/* check for 'b' - usually if 2 chars, second is '+' */
typeLen = strlen( type );
if ( ( typeLen == 2 ) && ( type [1] == 'b' ) ) {
typeLen = 1;
}
if ( typeLen == 1 ) {
switch( type[0] ) {
case 'r':
flags = flags | O_RDONLY;
break;
case 'w':
flags = O_TRUNC | O_CREAT | O_WRONLY;
break;
case 'a':
flags = flags | O_APPEND | O_CREAT | O_WRONLY;
break;
}
} else {
switch( type[0] ) {
case 'r':
flags = O_RDWR;
break;
case 'w':
flags = O_TRUNC | O_CREAT | O_RDWR;
break;
case 'a':
flags = O_APPEND | O_CREAT | O_RDWR;
break;
}
}
openArgs.flags = flags;
openArgs.mode= -1;
HDFtraceIOEvent( fopenBeginID, (void *)&openArgs, sizeof(openArgs) );
}
fp = fopen( filename, type );
if ( fp != NULL ) {
fd = fileno( fp );
id = set_c_mappedID( fd );
} else {
id = -1;
}
if ( IOtracingEnabled ) {
HDFtraceIOEvent( fopenEndID, (void *) &id, int_SIZE );
}
return( fp );
}
/*+ Routine: int HDFtraceCREAT( const char *path, mode_t mode ) +*/
/*+ substitute for creat() +*/
/*+ generates openBeginID, openEndID +*/
/*+ record Open (openBeginID) +*/
/*+ +*/
int HDFtraceCREAT( const char *path, mode_t mode )
{
struct open_args openArgs;
int fd;
int id;
if ( IOtracingEnabled ) {
strcpy( openArgs.filename, path );
openArgs.flags = O_WRONLY | O_CREAT | O_TRUNC;
openArgs.mode = (int) mode;
HDFtraceIOEvent( openBeginID, (void *)&openArgs, sizeof(openArgs) );
}
fd = creat( path, mode );
id = set_c_mappedID( fd );
if ( IOtracingEnabled ) {
HDFtraceIOEvent( openEndID, (void *) &id, int_SIZE );
}
return( fd );
}
/******************************************************************************/
/*+ Flush routines +*/
/*+ -------------- +*/
/*+ +*/
/*+ Routine: int HDFtraceFFLUSH( FILE *stream ) +*/
/*+ substitute for fflush() +*/
/*+ generates fflushBeginID, fflushEndID +*/
/*+ record Flush (fflushBeginID) +*/
/*+ +*/
int HDFtraceFFLUSH( FILE *stream )
{
int ret;
int id;
int fd;
if ( IOtracingEnabled ) {
/*
* If stream is NULL, all files open for write are flushed.
* We show this with a -2 in the trace record as too much overhead
* to try and tell what files those are and generate individual
* trace records.
*/
if ( stream == NULL ) {
id = -2;
} else {
fd = fileno( stream );
id = c_mappedID( fd );
HDFtraceIOEvent( fflushBeginID, (void *) 0, int_SIZE );
}
}
ret = fflush( stream );
if ( IOtracingEnabled ) {
HDFtraceIOEvent( fflushEndID, (void *) &id, 0 );
}
/*
* Note that if fflush called on stream open for reading, the file pointer
* is moved to EOF if it isn't there already. We don't account for that
* in our file positioning information.
*/
return( ret );
}
/******************************************************************************/
/*+ Close routines +*/
/*+ -------------- +*/
/*+ +*/
/*+ Routine: int HDFtraceFCLOSE( FILE *stream ) +*/
/*+ substitute for fclose() +*/
/*+ generates fcloseBeginID, fcloseEndID +*/
/*+ record Close (fcloseBeginID) +*/
/*+ +*/
int HDFtraceFCLOSE( FILE *stream )
{
int ret;
int id;
int fd = fileno( stream );
if ( IOtracingEnabled ) {
id = c_mappedID( fd );
HDFtraceIOEvent( fcloseBeginID, (void *) &id, int_SIZE );
}
ret = fclose( stream );
if ( IOtracingEnabled ) {
HDFtraceIOEvent( fcloseEndID, (void *) 0, 0 );
}
return( ret );
}
/*+ Routine: int HDFtrace3OPEN( char *path, int flags, mode_t mode ) +*/
/*+ substitute for open() when called with 3 arguments +*/
/*+ generates openBeginID, openEndID +*/
/*+ record Open (openBeginID) +*/
/*+ +*/
int HDFtrace3OPEN( const char *path, int flags, mode_t mode )
{
struct open_args openArgs;
int fd;
int id;
if ( IOtracingEnabled ) {
strcpy( openArgs.filename, path );
openArgs.flags = flags;
openArgs.mode = (int) mode;
HDFtraceIOEvent( openBeginID, (char *)&openArgs, sizeof(openArgs) );
}
fd = open( path, flags, mode );
id = set_c_mappedID( fd );
if ( IOtracingEnabled ) {
HDFtraceIOEvent( openEndID, (char *) &id, int_SIZE );
}
return( fd );
}
/*+ Routine: int HDFtraceCLOSE( int fd ) +*/
/*+ substitute for close() +*/
/*+ generates closeBeginID, closeEndID +*/
/*+ record Close (closeBeginID) +*/
/*+ +*/
int HDFtraceCLOSE( int fd )
{
int ret;
int id;
if ( IOtracingEnabled ) {
id = c_mappedID( fd );
HDFtraceIOEvent( closeBeginID, (void *) &id, int_SIZE );
}
ret = close( fd );
if ( IOtracingEnabled ) {
HDFtraceIOEvent( closeEndID, (void *) 0, 0 );
}
return( ret );
}
/******************************************************************************/
/*+ Read routines +*/
/*+ ------------- +*/
/*+ +*/
/*+ Routine: int HDFtraceREAD( int fd, char *buf, int nbyte ) +*/
/*+ substitute for read() +*/
/*+ generates readBeginID, readEndID +*/
/*+ record Read (readBeginID) +*/
/*+ Number Variables = 1 +*/
/*+ Cause = -1 +*/
/*+ +*/
size_t HDFtraceREAD( int fd, char *buf, int nbyte )
{
struct read_write_args readArgs;
size_t ret;
int bytes;
if ( IOtracingEnabled ) {
readArgs.fileID = c_mappedID( fd );
readArgs.numVariables = 1;
readArgs.cause = -1;
HDFtraceIOEvent( readBeginID, (void *) &readArgs, sizeof(readArgs) );
}
ret = read( fd, buf, nbyte );
if ( IOtracingEnabled ) {
if ( ret > 0 ) {
bytes = (int)ret;
} else {
bytes = 0;
}
HDFtraceIOEvent( readEndID, (void *) &bytes, int_SIZE );
}
return( ret );
}
/*+ Routine: int HDFtraceFREAD( char *ptr, int size, int nitems, +*/
/*+ FILE *stream) +*/
/*+ substitute for fread() +*/
/*+ generates freadBeginID, freadEndID +*/
/*+ record Read (freadBeginID) +*/
/*+ Number Variables = nitems +*/
/*+ Cause = -1 +*/
/*+ +*/
size_t HDFtraceFREAD( void *ptr, int size, int nitems, FILE *stream )
{
struct read_write_args readArgs;
size_t ret;
int nbytes;
int fd = fileno( stream );
if ( IOtracingEnabled ) {
readArgs.fileID = c_mappedID( fd );
readArgs.numVariables = nitems;
readArgs.cause = -1;
HDFtraceIOEvent( freadBeginID, (void *) &readArgs, sizeof(readArgs) );
}
ret = fread( ptr, size, nitems, stream );
if ( IOtracingEnabled ) {
if ( ret > 0 ) {
nbytes = (int)ret * size ;
} else {
nbytes = 0;
}
HDFtraceIOEvent( freadEndID, (void *) &nbytes, int_SIZE );
}
return( ret );
}
/******************************************************************************/
/*+ Seek routines +*/
/*+ ------------- +*/
/*+ +*/
/*+ Routine: off_t HDFtraceLSEEK( int fd, off_t offset, int whence ) +*/
/*+ substitute for lseek() +*/
/*+ generates lseekBeginID, lseekEndID +*/
/*+ record Seek (lseekBeginID) +*/
/*+ +*/
off_t HDFtraceLSEEK( int fd, off_t offset, int whence )
{
struct seek_args seekArgs;
off_t ret;
long arg;
if ( IOtracingEnabled ) {
seekArgs.fileID = c_mappedID( fd );
seekArgs.offset = (int) offset;
seekArgs.whence = whence;
HDFtraceIOEvent( lseekBeginID, (void *) &seekArgs, sizeof(seekArgs) );
}
ret = lseek( fd, offset, whence );
if ( IOtracingEnabled ) {
arg = (long) ret;
HDFtraceIOEvent( lseekEndID, (void *)&arg, long_SIZE );
}
return( ret );
}
/*+ routine: int HDF traceFSEEK( FILE *stream, long offset, int whence ) +*/
/*+ substitute for fseek() +*/
/*+ generates fseekBeginID, fseekEndID +*/
/*+ record Seek (fseekBeginID) +*/
/*+ +*/
int HDFtraceFSEEK( FILE *stream, long offset, int whence )
{
struct seek_args seekArgs;
int ret;
long arg;
int fd = fileno( stream );
if ( IOtracingEnabled ) {
seekArgs.fileID = c_mappedID( fd );;
seekArgs.offset = (int) offset;
seekArgs.whence = whence;
HDFtraceIOEvent( fseekBeginID, (void *) &seekArgs, sizeof(seekArgs) );
}
ret = fseek( stream, offset, whence );
if ( IOtracingEnabled ) {
arg = ftell( stream );
HDFtraceIOEvent( fseekEndID, (void *)&arg, long_SIZE );
}
return( ret );
}
#ifdef fpos_t
/*+ Routine: int HDFtraceFSETPOS( FILE *stream, const fpos_t *position ) +*/
/*+ substitute for fsetpos() +*/
/*+ generates fsetposBeginID, fsetposEndID +*/
/*+ record Seek (fsetposBeginID) +*/
/*+ +*/
int HDFtraceFSETPOS( FILE stream, const fpos_t *position )
{
struct seek_args seekArgs;
int ret;
long arg;
int fd = fileno( stream );
if ( IOtracingEnabled ) {
seekArgs.fileID = c_mappedID( fd );;
seekArgs.offset = (int) *position;
seekArgs.whence = SEEK_SET;
HDFtraceIOEvent( fsetposBeginID, (void *) &seekArgs, sizeof(seekArgs) );
}
ret = fsetpos( stream, position );
if ( IOtracingEnabled ) {
arg = (long) *position;
HDFtraceIOEvent( fsetposEndID, (void *)&arg, long_SIZE );
}
return( ret );
}
#endif /* fpos_t */
/*+ Routine: void HDFtraceREWIND ( FILE *stream ) +*/
/*+ substitute for rewind() +*/
/*+ generates rewindBeginID, rewindEndID +*/
/*+ record Seek (rewindBeginID) +*/
/*+ Offset = 0 +*/
/*+ Whence = SEEK_SET +*/
/*+ +*/
void HDFtraceREWIND( FILE *stream )
{
struct seek_args seekArgs;
long arg;
int fd = fileno( stream );
if ( IOtracingEnabled ) {
seekArgs.fileID = c_mappedID( fd );
seekArgs.offset = 0;
seekArgs.whence = SEEK_SET;
HDFtraceIOEvent( rewindBeginID, (void *) &seekArgs, sizeof(seekArgs) );
}
rewind( stream );
if ( IOtracingEnabled ) {
arg = 0;
HDFtraceIOEvent( rewindEndID, (void *)&arg, long_SIZE );
}
return;
}
/******************************************************************************/
/*+ Write routines +*/
/*+ -------------- +*/
/*+ +*/
/*+ Routine: int HDFtraceWRITE( int fd, char *buf, int nbyte ) +*/
/*+ substitute for write() +*/
/*+ generates writeBeginID, writeEndID +*/
/*+ record Write (writeBeginID) +*/
/*+ Number Variables = 1 +*/
/*+ Cause = -1 +*/
/*+ +*/
size_t HDFtraceWRITE( int fd, const char *buf, int nbyte )
{
struct read_write_args writeArgs;
size_t ret;
int bytes;
if ( IOtracingEnabled ) {
writeArgs.fileID = c_mappedID( fd );
writeArgs.numVariables = 1;
writeArgs.cause = -1;
HDFtraceIOEvent( writeBeginID, (void *) &writeArgs, sizeof(writeArgs) );
}
ret = write( fd, buf, nbyte );
if ( IOtracingEnabled ) {
if ( ret > 0 ) {
bytes = (int)ret;
} else {
bytes = 0;
}
HDFtraceIOEvent( writeEndID, (void *) &bytes, int_SIZE );
}
return( ret );
}
/*+ Routine: size_t HDFtraceFWRITE( const char *ptr, int size, int nitems, +*/
/*+ FILE *stream ) +*/
/*+ substitute for fwrite() +*/
/*+ generates fwriteBeginID, fwriteEndID +*/
/*+ record Write (fwriteBeginID) +*/
/*+ Number Variables = nitems +*/
/*+ Cause = -1 +*/
/*+ +*/
size_t HDFtraceFWRITE( const char *ptr, int size, int nitems, FILE *stream )
{
struct read_write_args writeArgs;
size_t ret;
int nbytes;
int fd = fileno( stream );
if ( IOtracingEnabled ) {
writeArgs.fileID = c_mappedID( fd );
writeArgs.numVariables = nitems;
writeArgs.cause = -1;
HDFtraceIOEvent( fwriteBeginID, (void *) &writeArgs, sizeof(writeArgs) );
}
ret = fwrite( ptr, size, nitems, stream );
if ( IOtracingEnabled ) {
if ( ret > 0 ) {
nbytes = (int)ret * size ;
} else {
nbytes = 0;
}
HDFtraceIOEvent( fwriteEndID, (void *) &nbytes, int_SIZE );
}
return( ret );
}
/*+ Routine: int HDFtracePUTS( char *s ) +*/
/*+ substitute for puts() +*/
/*+ generates fwriteBeginID, fwriteEndID +*/
/*+ record Write (fwriteBeginID) +*/
/*+ Number Variables = 1 +*/
/*+ Cause = -1 +*/
/*+ +*/
int HDFtracePUTS( char *s )
{
struct read_write_args writeArgs;
int ret;
int fd = fileno( stdout );
if ( IOtracingEnabled ) {
writeArgs.fileID = c_mappedID( fd );
writeArgs.numVariables = 1;
writeArgs.cause = -1;
HDFtraceIOEvent( fwriteBeginID, (void *) &writeArgs, sizeof(writeArgs) );
}
ret = puts( s );
if ( IOtracingEnabled ) {
HDFtraceIOEvent( fwriteEndID, (void *) &ret, int_SIZE );
}
return( ret );
}
/*+ Routine: int HDFtraceFPUTC( int c, FILE *stream ) +*/
/*+ substitute for fputc() +*/
/*+ generates fwriteBeginID, fwriteEndID +*/
/*+ record Write (fwriteBeginID) +*/
/*+ Number Variables = 1 +*/
/*+ Cause = -1 +*/
/*+ +*/
int HDFtraceFPUTC( int c, FILE *stream )
{
struct read_write_args writeArgs;
int ret;
int nbytes = char_SIZE;
int fd = fileno( stream );
if ( IOtracingEnabled ) {
writeArgs.fileID = c_mappedID( fd );
writeArgs.numVariables = 1;
writeArgs.cause = -1;
HDFtraceIOEvent( fwriteBeginID, (void *) &writeArgs, sizeof(writeArgs) );
}
ret = fputc( c, stream );
if ( IOtracingEnabled ) {
if ( ret == EOF ) {
nbytes = 0;
HDFtraceIOEvent( fwriteEndID, (void *) &nbytes, int_SIZE );
}
}
return( ret );
}
/*+ Routine: int HDFtraceFPUTS( char *s, FILE *stream ) +*/
/*+ substitute for fputs() +*/
/*+ generates fwriteBeginID, fwriteEndID +*/
/*+ record Write (fwriteBeginID) +*/
/*+ Number Variables = 1 +*/
/*+ Cause = -1 +*/
/*+ +*/
int HDFtraceFPUTS( const char *s, FILE *stream )
{
struct read_write_args writeArgs;
int ret;
int fd = fileno( stream );
if ( IOtracingEnabled ) {
writeArgs.fileID = c_mappedID( fd );
writeArgs.numVariables = 1;
writeArgs.cause = -1;
HDFtraceIOEvent(fwriteBeginID, (void *)&writeArgs, sizeof(writeArgs));
}
ret = fputs( s, stream );
if ( IOtracingEnabled ) {
HDFtraceIOEvent( fwriteEndID, (void *) &ret, int_SIZE );
}
return( ret );
}
void *HDFtraceMALLOC(size_t bytes )
{
void *ptr;
size_t byte_req;
byte_req = bytes;
if ( IOtracingEnabled ) {
HDFtraceIOEvent ( ID_malloc, &byte_req, sizeof(size_t) );
}
ptr = malloc( bytes );
if ( IOtracingEnabled ) {
HDFtraceIOEvent ( -ID_malloc, NULL, 0 );
}
return ptr ;
}
void HDFtraceIOEvent( int eventType, void *dataPtr, unsigned dataLen )
{
if ( OUTPUT_SWITCH == 1 ) {
traceEvent( eventType, dataPtr, dataLen );
} else {
HDFtraceEvent_RT( eventType, (HDFsetInfo *)dataPtr, dataLen );
}
}

1473
pablo/PabloHDF_RT.c Normal file

File diff suppressed because it is too large Load Diff

1028
pablo/PabloHDF_SDDF.c Normal file

File diff suppressed because it is too large Load Diff