mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-19 16:50:46 +08:00
Merge remote-tracking branch 'hdffv/develop' into rebased-fprintf-experiment
This commit is contained in:
commit
d85cd245d2
CMakeLists.txtMANIFESTMakefile.amconfigure.ac
bin
c++/src
config
cmake
gnu-warnings
examples
fortran
hl
fortran/src
src
test
gen_test_ds.ch5hltest.htest_ds.ctest_dset_append.ctest_image.ctest_ld.ctest_lite.ctest_packet.ctest_table.c
tools/gif2h5
java
release_docs
src
CMakeLists.txtH5.cH5A.cH5AC.cH5ACdbg.cH5ACmodule.hH5ACmpio.cH5ACprivate.hH5ACpublic.hH5Abtree2.cH5Adense.cH5Adeprec.cH5Aint.cH5Amodule.hH5Apkg.hH5B.cH5B2.cH5B2cache.cH5B2dbg.cH5B2hdr.cH5B2int.cH5B2internal.cH5B2leaf.cH5B2module.hH5B2stat.cH5B2test.cH5Bcache.cH5C.cH5CS.cH5CX.cH5Cdbg.cH5Cimage.cH5Cmodule.hH5Cmpio.cH5Cpkg.hH5Cprivate.hH5Cpublic.hH5Dbtree.cH5Dbtree2.cH5Dchunk.cH5Dcompact.cH5Dcontig.cH5Ddeprec.cH5Defl.cH5Dfill.c
@ -236,7 +236,7 @@ string (REGEX REPLACE ".*#define[ \t]+H5_VERS_MINOR[ \t]+([0-9]*).*$"
|
||||
"\\1" H5_VERS_MINOR ${_h5public_h_contents})
|
||||
string (REGEX REPLACE ".*#define[ \t]+H5_VERS_RELEASE[ \t]+([0-9]*).*$"
|
||||
"\\1" H5_VERS_RELEASE ${_h5public_h_contents})
|
||||
string (REGEX REPLACE ".*#define[ \t]+H5_VERS_SUBRELEASE[ \t]+\"([0-9A-Za-z._]*)\".*$"
|
||||
string (REGEX REPLACE ".*#define[ \t]+H5_VERS_SUBRELEASE[ \t]+\"([0-9A-Za-z._\-]*)\".*$"
|
||||
"\\1" H5_VERS_SUBRELEASE ${_h5public_h_contents})
|
||||
#message (STATUS "VERSION: ${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}-${H5_VERS_SUBRELEASE}")
|
||||
|
||||
@ -339,9 +339,11 @@ set (HDF5_PACKAGE_VERSION "${H5_VERS_MAJOR}.${H5_VERS_MINOR}.${H5_VERS_RELEASE}"
|
||||
set (HDF5_PACKAGE_VERSION_MAJOR "${H5_VERS_MAJOR}.${H5_VERS_MINOR}")
|
||||
set (HDF5_PACKAGE_VERSION_MINOR "${H5_VERS_RELEASE}")
|
||||
if (H5_VERS_SUBRELEASE)
|
||||
set (HDF5_PACKAGE_VERSION_STRING "${HDF5_PACKAGE_VERSION}-${H5_VERS_SUBRELEASE}")
|
||||
set (HDF5_PACKAGE_VERSION_STRING "${HDF5_PACKAGE_VERSION}.${H5_VERS_SUBRELEASE}")
|
||||
set (HDF5_RELEASE_VERSION_STRING "${HDF5_PACKAGE_VERSION}-${H5_VERS_SUBRELEASE}")
|
||||
else ()
|
||||
set (HDF5_PACKAGE_VERSION_STRING "${HDF5_PACKAGE_VERSION}")
|
||||
set (HDF5_RELEASE_VERSION_STRING "${HDF5_PACKAGE_VERSION}")
|
||||
endif ()
|
||||
set (HDF5_LIB_PACKAGE_SOVERSION "${H5_LIB_SOVERS_MAJOR}.${H5_LIB_SOVERS_RELEASE}.${H5_LIB_SOVERS_MINOR}")
|
||||
set (HDF5_LIB_PACKAGE_SOVERSION_MAJOR "${H5_LIB_SOVERS_MAJOR}")
|
||||
|
28
MANIFEST
28
MANIFEST
@ -692,6 +692,7 @@
|
||||
./src/H5FDlog.h
|
||||
./src/H5FDmirror.c
|
||||
./src/H5FDmirror.h
|
||||
./src/H5FDmirror_priv.h
|
||||
./src/H5FDmodule.h
|
||||
./src/H5FDmpi.c
|
||||
./src/H5FDmpi.h
|
||||
@ -2492,6 +2493,7 @@
|
||||
./tools/test/h5diff/testfiles/h5diff_80.txt
|
||||
./tools/test/h5diff/testfiles/h5diff_800.txt
|
||||
./tools/test/h5diff/testfiles/h5diff_801.txt
|
||||
./tools/test/h5diff/testfiles/h5diff_830.txt
|
||||
./tools/test/h5diff/testfiles/h5diff_90.txt
|
||||
./tools/test/h5diff/testfiles/h5diff_100.txt
|
||||
./tools/test/h5diff/testfiles/h5diff_101.txt
|
||||
@ -2662,6 +2664,7 @@
|
||||
#test files for h5repack
|
||||
./tools/test/h5repack/testfiles/README
|
||||
./tools/test/h5repack/testfiles/bounds_latest_latest.h5
|
||||
./tools/test/h5repack/testfiles/h5copy_extlinks_src.h5
|
||||
./tools/test/h5repack/testfiles/h5repack_aggr.h5
|
||||
./tools/test/h5repack/testfiles/h5repack_attr.h5
|
||||
./tools/test/h5repack/testfiles/h5repack_attr_refs.h5
|
||||
@ -2740,6 +2743,31 @@
|
||||
./tools/test/h5repack/testfiles/4_vds.h5-vds_compa-v.ddl
|
||||
./tools/test/h5repack/testfiles/attrregion.tattrreg.h5.ddl
|
||||
./tools/test/h5repack/testfiles/dataregion.tdatareg.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlink-base.textlink.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlink-merge.textlink.h5.tst
|
||||
./tools/test/h5repack/testfiles/textlink-mergeprune.textlink.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlink-prune.textlink.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlinkfar-base.textlinkfar.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlinkfar-merge.textlinkfar.h5.tst
|
||||
./tools/test/h5repack/testfiles/textlinkfar-mergeprune.textlinkfar.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlinkfar-prune.textlinkfar.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlinksrc-base.textlinksrc.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlinksrc-merge.textlinksrc.h5.tst
|
||||
./tools/test/h5repack/testfiles/textlinksrc-mergeprune.textlinksrc.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlinksrc-prune.textlinksrc.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlinktar-base.textlinktar.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlinktar-merge.textlinktar.h5.tst
|
||||
./tools/test/h5repack/testfiles/textlinktar-mergeprune.textlinktar.h5.ddl
|
||||
./tools/test/h5repack/testfiles/textlinktar-prune.textlinktar.h5.ddl
|
||||
./tools/test/h5repack/testfiles/tsoftlinks-base.tsoftlinks.h5.ddl
|
||||
./tools/test/h5repack/testfiles/tsoftlinks-merge.tsoftlinks.h5.tst
|
||||
./tools/test/h5repack/testfiles/tsoftlinks-mergeprune.tsoftlinks.h5.ddl
|
||||
./tools/test/h5repack/testfiles/tsoftlinks-prune.tsoftlinks.h5.ddl
|
||||
./tools/test/h5repack/testfiles/h5copy_extlinks_src-base.h5copy_extlinks_src.h5.ddl
|
||||
./tools/test/h5repack/testfiles/h5copy_extlinks_src-merge.h5copy_extlinks_src.h5.tst
|
||||
./tools/test/h5repack/testfiles/h5copy_extlinks_src-mergeprune.h5copy_extlinks_src.h5.ddl
|
||||
./tools/test/h5repack/testfiles/h5copy_extlinks_src-prune.h5copy_extlinks_src.h5.ddl
|
||||
./tools/test/h5repack/testfiles/h5copy_extlinks_trg.h5
|
||||
|
||||
# jam utility and tests
|
||||
./tools/src/h5jam/Makefile.am
|
||||
|
@ -190,10 +190,10 @@ trace:
|
||||
# Run tests with different Virtual File Drivers.
|
||||
# Currently, only invoke check-vfd in the test directory.
|
||||
check-vfd:
|
||||
for d in src utils test; do \
|
||||
if test $$d != .; then \
|
||||
(cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
|
||||
fi; \
|
||||
for d in src utils test; do \
|
||||
if test $$d != .; then \
|
||||
(cd $$d && $(MAKE) $(AM_MAKEFLAGS) $@) || exit 1; \
|
||||
fi; \
|
||||
done
|
||||
|
||||
# Run tests with different passthrough Virtual Object Layer Connectors.
|
||||
|
@ -17,7 +17,7 @@ use Text::Tabs;
|
||||
# If you do not have access to either file, you may request a copy from
|
||||
# help@hdfgroup.org.
|
||||
#
|
||||
# Robb Matzke, matzke@llnl.gov
|
||||
# Robb Matzke
|
||||
# 30 Aug 1997
|
||||
#
|
||||
# Purpose: This script will read standard input which should be a
|
||||
|
@ -17,7 +17,7 @@ use strict;
|
||||
# If you do not have access to either file, you may request a copy from
|
||||
# help@hdfgroup.org.
|
||||
#
|
||||
# Robb Matzke <matzke@llnl.gov>
|
||||
# Robb Matzke
|
||||
# 17 July 1998
|
||||
|
||||
### Purpose
|
||||
|
216
bin/release
216
bin/release
@ -39,7 +39,7 @@ USAGE()
|
||||
{
|
||||
cat << EOF
|
||||
Usage: $0 -d <dir> [--docver BRANCHNAME] [-h] [--nocheck] [--private] <methods> ...
|
||||
-d DIR The name of the directory where the releas(es) should be
|
||||
-d DIR The name of the directory where the releas(es) should be
|
||||
placed.
|
||||
--docver BRANCHNAME This is added for 1.8 and beyond to get the correct
|
||||
version of documentation files from the hdf5docs
|
||||
@ -53,10 +53,10 @@ The other command-line options are the names of the programs to use
|
||||
for compressing the resulting tar archive (if none are given then
|
||||
"tar" is assumed):
|
||||
|
||||
tar -- use tar and don't do any compressing.
|
||||
gzip -- use gzip with "-9" and append ".gz" to the output name.
|
||||
tar -- use tar and don't do any compressing.
|
||||
gzip -- use gzip with "-9" and append ".gz" to the output name.
|
||||
bzip2 -- use bzip2 with "-9" and append ".bz2" to the output name.
|
||||
zip -- convert all text files to DOS style and form a zip file for Windows use.
|
||||
zip -- convert all text files to DOS style and form a zip file for Windows use.
|
||||
cmake-tgz -- create a tar file using the gzip default level with a build-unix.sh
|
||||
command file and all other CMake files needed to build HDF5 source
|
||||
using CMake on unix machines.
|
||||
@ -122,8 +122,8 @@ EOF
|
||||
tar2zip()
|
||||
{
|
||||
if [ $# -ne 3 ]; then
|
||||
echo "usage: tar2zip <tarfilename> <zipfilename>"
|
||||
return 1
|
||||
echo "usage: tar2zip <tarfilename> <zipfilename>"
|
||||
return 1
|
||||
fi
|
||||
ztmpdir=/tmp/ztmpdir$$
|
||||
mkdir -p $ztmpdir
|
||||
@ -135,10 +135,10 @@ tar2zip()
|
||||
(cd $ztmpdir; tar xf -) < $tarfile
|
||||
# sanity check
|
||||
if [ ! -d $ztmpdir/$version ]; then
|
||||
echo "untar did not create $ztmpdir/$version source dir"
|
||||
# cleanup
|
||||
rm -rf $ztmpdir
|
||||
return 1
|
||||
echo "untar did not create $ztmpdir/$version source dir"
|
||||
# cleanup
|
||||
rm -rf $ztmpdir
|
||||
return 1
|
||||
fi
|
||||
# step 2: convert text files
|
||||
# There maybe a simpler way to do this.
|
||||
@ -147,11 +147,11 @@ tar2zip()
|
||||
# -q quiet mode
|
||||
# grep redirect output to /dev/null because -q or -s are not portable.
|
||||
find $ztmpdir/$version | \
|
||||
while read inf; do \
|
||||
if file $inf | grep "$inf\: .*text" > /dev/null 2>&1 ; then \
|
||||
unix2dos -q -k $inf; \
|
||||
fi\
|
||||
done
|
||||
while read inf; do \
|
||||
if file $inf | grep "$inf\: .*text" > /dev/null 2>&1 ; then \
|
||||
unix2dos -q -k $inf; \
|
||||
fi\
|
||||
done
|
||||
# step 3: make zipball
|
||||
# -9 maximum compression
|
||||
# -y Store symbolic links as such in the zip archive
|
||||
@ -202,8 +202,8 @@ tar2zip()
|
||||
tar2cmakezip()
|
||||
{
|
||||
if [ $# -ne 3 ]; then
|
||||
echo "usage: tar2cmakezip <tarfilename> <zipfilename>"
|
||||
return 1
|
||||
echo "usage: tar2cmakezip <tarfilename> <zipfilename>"
|
||||
return 1
|
||||
fi
|
||||
cmziptmpdir=/tmp/cmziptmpdir$$
|
||||
cmziptmpsubdir=$cmziptmpdir/CMake-$HDF5_VERS
|
||||
@ -216,10 +216,10 @@ tar2cmakezip()
|
||||
(cd $cmziptmpsubdir; tar xf -) < $tarfile
|
||||
# sanity check
|
||||
if [ ! -d $cmziptmpsubdir/$version ]; then
|
||||
echo "untar did not create $cmziptmpsubdir/$version source dir"
|
||||
# cleanup
|
||||
rm -rf $cmziptmpdir
|
||||
return 1
|
||||
echo "untar did not create $cmziptmpsubdir/$version source dir"
|
||||
# cleanup
|
||||
rm -rf $cmziptmpdir
|
||||
return 1
|
||||
fi
|
||||
|
||||
# step 2: add batch file for building CMake on window
|
||||
@ -245,11 +245,11 @@ tar2cmakezip()
|
||||
# -q quiet mode
|
||||
# grep redirect output to /dev/null because -q or -s are not portable.
|
||||
find $cmziptmpsubdir/$version | \
|
||||
while read inf; do \
|
||||
if file $inf | grep "$inf\: .*text" > /dev/null 2>&1 ; then \
|
||||
unix2dos -q -k $inf; \
|
||||
fi\
|
||||
done
|
||||
while read inf; do \
|
||||
if file $inf | grep "$inf\: .*text" > /dev/null 2>&1 ; then \
|
||||
unix2dos -q -k $inf; \
|
||||
fi\
|
||||
done
|
||||
|
||||
# step 3: make zipball
|
||||
# -9 maximum compression
|
||||
@ -301,8 +301,8 @@ tar2cmakezip()
|
||||
tar2cmaketgz()
|
||||
{
|
||||
if [ $# -ne 3 ]; then
|
||||
echo "usage: tar2cmaketgz <tarfilename> <tgzfilename>"
|
||||
return 1
|
||||
echo "usage: tar2cmaketgz <tarfilename> <tgzfilename>"
|
||||
return 1
|
||||
fi
|
||||
cmgztmpdir=/tmp/cmgztmpdir$$
|
||||
cmgztmpsubdir=$cmgztmpdir/CMake-$HDF5_VERS
|
||||
@ -315,10 +315,10 @@ tar2cmaketgz()
|
||||
(cd $cmgztmpsubdir; tar xf -) < $tarfile
|
||||
# sanity check
|
||||
if [ ! -d $cmgztmpsubdir/$version ]; then
|
||||
echo "untar did not create $cmgztmpsubdir/$version source dir"
|
||||
# cleanup
|
||||
rm -rf $cmgztmpdir
|
||||
return 1
|
||||
echo "untar did not create $cmgztmpsubdir/$version source dir"
|
||||
# cleanup
|
||||
rm -rf $cmgztmpdir
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
@ -384,8 +384,8 @@ tar2cmaketgz()
|
||||
tar2hpccmaketgz()
|
||||
{
|
||||
if [ $# -ne 3 ]; then
|
||||
echo "usage: tar2hpccmaketgz <tarfilename> <tgzfilename>"
|
||||
return 1
|
||||
echo "usage: tar2hpccmaketgz <tarfilename> <tgzfilename>"
|
||||
return 1
|
||||
fi
|
||||
cmgztmpdir=/tmp/cmgztmpdir$$
|
||||
cmgztmpsubdir=$cmgztmpdir/HPC-CMake-$HDF5_VERS
|
||||
@ -398,10 +398,10 @@ tar2hpccmaketgz()
|
||||
(cd $cmgztmpsubdir; tar xf -) < $tarfile
|
||||
# sanity check
|
||||
if [ ! -d $cmgztmpsubdir/$version ]; then
|
||||
echo "untar did not create $cmgztmpsubdir/$version source dir"
|
||||
# cleanup
|
||||
rm -rf $cmgztmpdir
|
||||
return 1
|
||||
echo "untar did not create $cmgztmpsubdir/$version source dir"
|
||||
# cleanup
|
||||
rm -rf $cmgztmpdir
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
@ -442,7 +442,7 @@ check=yes
|
||||
release_date=`date +%F`
|
||||
today=`date +%Y%m%d`
|
||||
pmode='no'
|
||||
tmpdir="../#release_tmp.$$" # tmp work directory
|
||||
tmpdir="../#release_tmp.$$" # tmp work directory
|
||||
DOC_URL=https://git@bitbucket.hdfgroup.org/scm/hdffv/hdf5doc.git
|
||||
CPPLUS_RM_NAME=cpplus_RM
|
||||
MAINT_MODE_ENABLED=""
|
||||
@ -459,11 +459,11 @@ fi
|
||||
RESTORE_VERSION()
|
||||
{
|
||||
if [ X-${VERS_OLD} != X- ]; then
|
||||
echo restoring version information back to $VERS_OLD
|
||||
rm -f config/lt_vers.am
|
||||
cp $tmpdir/lt_vers.am config/lt_vers.am
|
||||
bin/h5vers -s $VERS_OLD
|
||||
VERS_OLD=
|
||||
echo restoring version information back to $VERS_OLD
|
||||
rm -f config/lt_vers.am
|
||||
cp $tmpdir/lt_vers.am config/lt_vers.am
|
||||
bin/h5vers -s $VERS_OLD
|
||||
VERS_OLD=
|
||||
fi
|
||||
}
|
||||
|
||||
@ -473,32 +473,32 @@ while [ -n "$1" ]; do
|
||||
arg=$1
|
||||
shift
|
||||
case "$arg" in
|
||||
-d)
|
||||
DEST=$1
|
||||
shift
|
||||
;;
|
||||
--nocheck)
|
||||
check=no
|
||||
;;
|
||||
-h)
|
||||
USAGE
|
||||
exit 0
|
||||
;;
|
||||
--private)
|
||||
pmode=yes
|
||||
;;
|
||||
-d)
|
||||
DEST=$1
|
||||
shift
|
||||
;;
|
||||
--nocheck)
|
||||
check=no
|
||||
;;
|
||||
-h)
|
||||
USAGE
|
||||
exit 0
|
||||
;;
|
||||
--private)
|
||||
pmode=yes
|
||||
;;
|
||||
--docver)
|
||||
DOCVERSION=$1
|
||||
shift
|
||||
;;
|
||||
-*)
|
||||
echo "Unknown switch: $arg" 1>&2
|
||||
USAGE
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
methods="$methods $arg"
|
||||
;;
|
||||
-*)
|
||||
echo "Unknown switch: $arg" 1>&2
|
||||
USAGE
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
methods="$methods $arg"
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
@ -553,7 +553,7 @@ if [ "X$fail" = "Xyes" ]; then
|
||||
echo "--nocheck argument to the bin/release command."
|
||||
exit 1
|
||||
else
|
||||
echo "Continuing anyway..."
|
||||
echo "Continuing anyway..."
|
||||
fi
|
||||
fi
|
||||
|
||||
@ -595,61 +595,61 @@ MD5file=$HDF5_VERS.md5
|
||||
cp /dev/null $DEST/$MD5file
|
||||
for comp in $methods; do
|
||||
case $comp in
|
||||
tar)
|
||||
cp -p $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.tar
|
||||
(cd $DEST; md5sum $HDF5_VERS.tar >> $MD5file)
|
||||
;;
|
||||
gzip)
|
||||
test "$verbose" && echo " Running gzip..." 1>&2
|
||||
gzip -9 <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.gz
|
||||
(cd $DEST; md5sum $HDF5_VERS.tar.gz >> $MD5file)
|
||||
;;
|
||||
tar)
|
||||
cp -p $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.tar
|
||||
(cd $DEST; md5sum $HDF5_VERS.tar >> $MD5file)
|
||||
;;
|
||||
gzip)
|
||||
test "$verbose" && echo " Running gzip..." 1>&2
|
||||
gzip -9 <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.gz
|
||||
(cd $DEST; md5sum $HDF5_VERS.tar.gz >> $MD5file)
|
||||
;;
|
||||
cmake-tgz)
|
||||
test "$verbose" && echo " Creating CMake tar.gz file..." 1>&2
|
||||
tar2cmaketgz $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/CMake-$HDF5_VERS.tar.gz 1>&2
|
||||
(cd $DEST; md5sum CMake-$HDF5_VERS.tar.gz >> $MD5file)
|
||||
test "$verbose" && echo " Creating CMake tar.gz file..." 1>&2
|
||||
tar2cmaketgz $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/CMake-$HDF5_VERS.tar.gz 1>&2
|
||||
(cd $DEST; md5sum CMake-$HDF5_VERS.tar.gz >> $MD5file)
|
||||
;;
|
||||
hpc-cmake-tgz)
|
||||
test "$verbose" && echo " Creating HPC-CMake tar.gz file..." 1>&2
|
||||
tar2hpccmaketgz $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/HPC-CMake-$HDF5_VERS.tar.gz 1>&2
|
||||
(cd $DEST; md5sum HPC-CMake-$HDF5_VERS.tar.gz >> $MD5file)
|
||||
test "$verbose" && echo " Creating HPC-CMake tar.gz file..." 1>&2
|
||||
tar2hpccmaketgz $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/HPC-CMake-$HDF5_VERS.tar.gz 1>&2
|
||||
(cd $DEST; md5sum HPC-CMake-$HDF5_VERS.tar.gz >> $MD5file)
|
||||
;;
|
||||
bzip2)
|
||||
test "$verbose" && echo " Running bzip2..." 1>&2
|
||||
bzip2 -9 <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.bz2
|
||||
(cd $DEST; md5sum $HDF5_VERS.tar.bz2 >> $MD5file)
|
||||
;;
|
||||
zip)
|
||||
test "$verbose" && echo " Creating zip ball..." 1>&2
|
||||
tar2zip $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.zip 1>&2
|
||||
(cd $DEST; md5sum $HDF5_VERS.zip >> $MD5file)
|
||||
;;
|
||||
bzip2)
|
||||
test "$verbose" && echo " Running bzip2..." 1>&2
|
||||
bzip2 -9 <$tmpdir/$HDF5_VERS.tar >$DEST/$HDF5_VERS.tar.bz2
|
||||
(cd $DEST; md5sum $HDF5_VERS.tar.bz2 >> $MD5file)
|
||||
;;
|
||||
zip)
|
||||
test "$verbose" && echo " Creating zip ball..." 1>&2
|
||||
tar2zip $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/$HDF5_VERS.zip 1>&2
|
||||
(cd $DEST; md5sum $HDF5_VERS.zip >> $MD5file)
|
||||
;;
|
||||
cmake-zip)
|
||||
test "$verbose" && echo " Creating CMake-zip ball..." 1>&2
|
||||
tar2cmakezip $HDF5_VERS $tmpdir/$HDF5_VERS.tar $DEST/CMake-$HDF5_VERS.zip 1>&2
|
||||
(cd $DEST; md5sum CMake-$HDF5_VERS.zip >> $MD5file)
|
||||
;;
|
||||
doc)
|
||||
doc)
|
||||
if [ "${DOCVERSION}" = "" ]; then
|
||||
DOCVERSION=master
|
||||
fi
|
||||
test "$verbose" && echo " Creating docs..." 1>&2
|
||||
# Check out docs from git repo
|
||||
(cd $tmpdir; git clone -q $DOC_URL ${DOCVERSION} > /dev/null) || exit 1
|
||||
test "$verbose" && echo " Creating docs..." 1>&2
|
||||
# Check out docs from git repo
|
||||
(cd $tmpdir; git clone -q $DOC_URL ${DOCVERSION} > /dev/null) || exit 1
|
||||
# Create doxygen C++ RM
|
||||
(cd c++/src && doxygen cpp_doc_config > /dev/null ) || exit 1
|
||||
# Replace version of C++ RM with just-created version
|
||||
rm -rf $tmpdir/${DOCVERSION}/html/$CPPLUS_RM_NAME || exit 1
|
||||
mv c++/src/$CPPLUS_RM_NAME $tmpdir/${DOCVERSION}/html/$CPPLUS_RM_NAME || exit 1
|
||||
(cd c++/src && doxygen cpp_doc_config > /dev/null ) || exit 1
|
||||
# Replace version of C++ RM with just-created version
|
||||
rm -rf $tmpdir/${DOCVERSION}/html/$CPPLUS_RM_NAME || exit 1
|
||||
mv c++/src/$CPPLUS_RM_NAME $tmpdir/${DOCVERSION}/html/$CPPLUS_RM_NAME || exit 1
|
||||
# Compress the docs and move them to the release area
|
||||
mv $tmpdir/${DOCVERSION} $tmpdir/${HDF5_VERS}_docs || exit 1
|
||||
(cd $tmpdir && tar cf ${HDF5_VERS}_docs.tar ${HDF5_VERS}_docs) || exit 1
|
||||
mv $tmpdir/${HDF5_VERS}_docs.tar $DEST || exit 1
|
||||
;;
|
||||
*)
|
||||
echo "***Error*** Unknown method $comp"
|
||||
exit 1
|
||||
;;
|
||||
mv $tmpdir/${DOCVERSION} $tmpdir/${HDF5_VERS}_docs || exit 1
|
||||
(cd $tmpdir && tar cf ${HDF5_VERS}_docs.tar ${HDF5_VERS}_docs) || exit 1
|
||||
mv $tmpdir/${HDF5_VERS}_docs.tar $DEST || exit 1
|
||||
;;
|
||||
*)
|
||||
echo "***Error*** Unknown method $comp"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
|
@ -15,7 +15,7 @@ use warnings;
|
||||
# http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have
|
||||
# access to either file, you may request a copy from help@hdfgroup.org.
|
||||
#
|
||||
# Quincey Koziol, koziol@hdfgroup.org
|
||||
# Quincey Koziol
|
||||
# 9 Aug 2013
|
||||
#
|
||||
# Purpose: Given an input file containing the output from a build of the
|
||||
|
@ -684,6 +684,53 @@ unsigned FileAccPropList::getGcReferences() const
|
||||
return(gc_ref);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Function: FileAccPropList::setFileLocking
|
||||
///\brief Sets file locking flags.
|
||||
///\param use_file_locking - IN: Flag that determines if file locks should
|
||||
// be used or not.
|
||||
///\param ignore_when_disabled - IN: Flag that determines if file locks
|
||||
// should be be used when disabled on the file system or not.
|
||||
///\exception H5::PropListIException
|
||||
///\par Description
|
||||
/// For information, please refer to the H5Pset_file_locking API in
|
||||
/// the HDF5 C Reference Manual.
|
||||
// Programmer Dana Robinson - 2020
|
||||
//--------------------------------------------------------------------------
|
||||
void FileAccPropList::setFileLocking(hbool_t use_file_locking, hbool_t ignore_when_disabled) const
|
||||
{
|
||||
herr_t ret_value = H5Pset_file_locking(id, use_file_locking, ignore_when_disabled);
|
||||
|
||||
if (ret_value < 0)
|
||||
{
|
||||
throw PropListIException("FileAccPropList::setFileLocking", "H5Pset_file_locking failed");
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Function: FileAccPropList::getFileLocking
|
||||
///\brief Gets file locking flags.
|
||||
///\param use_file_locking - OUT: Flag that determines if file locks
|
||||
// should be used or not.
|
||||
///\param ignore_when_disabled - OUT: Flag that determines if file locks
|
||||
// should be be used when disabled on the file system or not.
|
||||
///\exception H5::PropListIException
|
||||
///\par Description
|
||||
/// For information, please refer to the H5Pget_file_locking API in
|
||||
/// the HDF5 C Reference Manual.
|
||||
// Programmer Dana Robinson - 2020
|
||||
//--------------------------------------------------------------------------
|
||||
void FileAccPropList::getFileLocking(hbool_t& use_file_locking, hbool_t& ignore_when_disabled) const
|
||||
{
|
||||
herr_t ret_value = H5Pget_file_locking(id, &use_file_locking, &ignore_when_disabled);
|
||||
|
||||
if (ret_value < 0)
|
||||
{
|
||||
throw PropListIException("FileAccPropList::getFileLocking", "H5Pget_file_locking failed");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Function: FileAccPropList::setLibverBounds
|
||||
///\brief Sets bounds on versions of library format to be used when creating
|
||||
|
@ -126,6 +126,12 @@ class H5_DLLCPP FileAccPropList : public PropList {
|
||||
// Returns garbage collecting references setting.
|
||||
unsigned getGcReferences() const;
|
||||
|
||||
// Sets file locking parameters.
|
||||
void setFileLocking(hbool_t use_file_locking, hbool_t ignore_when_disabled) const;
|
||||
|
||||
// Gets file locking parameters.
|
||||
void getFileLocking(hbool_t& use_file_locking, hbool_t& ignore_when_disabled) const;
|
||||
|
||||
// Sets bounds on versions of library format to be used when creating
|
||||
// or writing objects.
|
||||
void setLibverBounds(H5F_libver_t libver_low, H5F_libver_t libver_high) const;
|
||||
|
@ -61,6 +61,31 @@ if (HDF5_ENABLE_CODESTACK)
|
||||
endif ()
|
||||
MARK_AS_ADVANCED (HDF5_ENABLE_CODESTACK)
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Check if they would like to use file locking by default
|
||||
#-----------------------------------------------------------------------------
|
||||
option (HDF5_USE_FILE_LOCKING "Use file locking by default (mainly for SWMR)" ON)
|
||||
if (HDF5_USE_FILE_LOCKING)
|
||||
set (${HDF_PREFIX}_USE_FILE_LOCKING 1)
|
||||
endif ()
|
||||
|
||||
# ----------------------------------------------------------------------
|
||||
# Check if they would like to ignore file locks when disabled on a file system
|
||||
#-----------------------------------------------------------------------------
|
||||
option (HDF5_IGNORE_DISABLED_FILE_LOCKS "Ignore file locks when disabled on file system" ON)
|
||||
if (HDF5_IGNORE_DISABLED_FILE_LOCKS)
|
||||
set (${HDF_PREFIX}_IGNORE_DISABLED_FILE_LOCKS 1)
|
||||
endif ()
|
||||
|
||||
# Set the libhdf5.settings file variable
|
||||
if (HDF5_IGNORE_DISABLED_FILE_LOCKS AND HDF5_USE_FILE_LOCKING)
|
||||
set (HDF5_FILE_LOCKING_SETTING "best-effort")
|
||||
elseif (HDF5_IGNORE_DISABLED_FILE_LOCKS)
|
||||
set (HDF5_FILE_LOCKING_SETTING "yes")
|
||||
else ()
|
||||
set (HDF5_FILE_LOCKING_SETTING "no")
|
||||
endif ()
|
||||
|
||||
#-----------------------------------------------------------------------------
|
||||
# Are we going to use HSIZE_T
|
||||
#-----------------------------------------------------------------------------
|
||||
|
@ -489,6 +489,9 @@
|
||||
/* Define if the compiler understands __inline__ */
|
||||
#cmakedefine H5_HAVE___INLINE__ @H5_HAVE___INLINE__@
|
||||
|
||||
/* Define if the library will ignore file locks when disabled */
|
||||
#cmakedefine H5_IGNORE_DISABLED_FILE_LOCKS @H5_IGNORE_DISABLED_FILE_LOCKS@
|
||||
|
||||
/* Define if the high-level library headers should be included in hdf5.h */
|
||||
#cmakedefine H5_INCLUDE_HL @H5_INCLUDE_HL@
|
||||
|
||||
@ -729,6 +732,9 @@
|
||||
/* Define using v1.14 public API symbols by default */
|
||||
#cmakedefine H5_USE_114_API_DEFAULT @H5_USE_114_API_DEFAULT@
|
||||
|
||||
/* Define if the library will use file locking */
|
||||
#cmakedefine H5_USE_FILE_LOCKING @H5_USE_FILE_LOCKING@
|
||||
|
||||
/* Define if a memory checking tool will be used on the library, to cause
|
||||
library to be very picky about memory operations and also disable the
|
||||
internal free list manager code. */
|
||||
|
@ -85,5 +85,6 @@ Parallel Filtered Dataset Writes: @PARALLEL_FILTERED_WRITES@
|
||||
Using memory checker: @HDF5_ENABLE_USING_MEMCHECKER@
|
||||
Memory allocation sanity checks: @HDF5_MEMORY_ALLOC_SANITY_CHECK@
|
||||
Function Stack Tracing: @HDF5_ENABLE_CODESTACK@
|
||||
Use file locking: @HDF5_FILE_LOCKING_SETTING@
|
||||
Strict File Format Checks: @HDF5_STRICT_FORMAT_CHECKS@
|
||||
Optimization Instrumentation: @HDF5_Enable_Instrument@
|
||||
|
@ -21,6 +21,7 @@ cmake_minimum_required (VERSION 3.12)
|
||||
# ctest -S HDF5config.cmake,OPTION=VALUE -C Release -VV -O test.log
|
||||
# where valid options for OPTION are:
|
||||
# BUILD_GENERATOR - The cmake build generator:
|
||||
# MinGW * MinGW Makefiles
|
||||
# Unix * Unix Makefiles
|
||||
# VS2019 * Visual Studio 16 2019
|
||||
# VS201964 * Visual Studio 16 2019
|
||||
@ -167,7 +168,11 @@ if (NOT DEFINED HPC)
|
||||
## Set the following to unique id your computer ##
|
||||
set (CTEST_SITE "WIN7${BUILD_GENERATOR}.XXXX")
|
||||
else ()
|
||||
set (CTEST_CMAKE_GENERATOR "Unix Makefiles")
|
||||
if (MINGW)
|
||||
set (CTEST_CMAKE_GENERATOR "MinGW Makefiles")
|
||||
else ()
|
||||
set (CTEST_CMAKE_GENERATOR "Unix Makefiles")
|
||||
endif ()
|
||||
## Set the following to unique id your computer ##
|
||||
if (APPLE)
|
||||
set (CTEST_SITE "MAC.XXXX")
|
||||
|
@ -9,6 +9,9 @@
|
||||
|
||||
# warning flag added for GCC >= 4.5
|
||||
-Wstrict-overflow=5
|
||||
# This warning can only be truly addressed using the gcc extension of
|
||||
# using D to indicate doubles (e.g., 1.23D).
|
||||
-Wno-unsuffixed-float-constants
|
||||
|
||||
# warning flags added for GCC >= 4.6
|
||||
-Wdouble-promotion
|
||||
|
@ -5,7 +5,6 @@
|
||||
# the variable is never *used* before it has been initialized?
|
||||
#
|
||||
-Wjump-misses-init
|
||||
-Wunsuffixed-float-constants
|
||||
|
||||
# developer warning flag added for GCC >= 4.6
|
||||
-Wsuggest-attribute=const
|
||||
|
@ -1,6 +1,5 @@
|
||||
# no-developer warning flag added for GCC >= 4.5
|
||||
-Wno-jump-misses-init
|
||||
-Wno-unsuffixed-float-constants
|
||||
|
||||
# no-developer warning flag added for GCC >= 4.6
|
||||
-Wno-suggest-attribute=const
|
||||
|
62
configure.ac
62
configure.ac
@ -1594,19 +1594,19 @@ case "X-$withval" in
|
||||
AM_CPPFLAGS="$AM_CPPFLAGS -I$szlib_inc"
|
||||
fi
|
||||
|
||||
AC_CHECK_HEADERS([szlib.h],
|
||||
[HAVE_SZLIB_H="yes"],
|
||||
[CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"] [unset HAVE_SZLIB])
|
||||
|
||||
if test -n "$szlib_lib"; then
|
||||
LDFLAGS="$LDFLAGS -L$szlib_lib"
|
||||
AM_LDFLAGS="$AM_LDFLAGS -L$szlib_lib"
|
||||
fi
|
||||
|
||||
if test "x$HAVE_SZLIB" = "xyes" -a "x$HAVE_SZLIB_H" = "xyes"; then
|
||||
if test "x$HAVE_SZLIB" = "xyes"; then
|
||||
AC_CHECK_LIB([sz], [SZ_BufftoBuffCompress],,
|
||||
[CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"; LDFLAGS="$saved_LDFLAGS"; AM_LDFLAGS="$saved_AM_LDFLAGS"; unset HAVE_SZLIB])
|
||||
if test -z "$HAVE_SZLIB"; then
|
||||
if test -n "$HAVE_SZLIB"; then
|
||||
AC_CHECK_HEADERS([szlib.h],
|
||||
[HAVE_SZLIB_H="yes"],
|
||||
[CPPFLAGS="$saved_CPPFLAGS"; AM_CPPFLAGS="$saved_AM_CPPFLAGS"] [unset HAVE_SZLIB])
|
||||
else
|
||||
AC_MSG_RESULT([Using SZ_BufftoBuffCompress from libsz in $szlib_lib failed. Szip not enabled.])
|
||||
fi
|
||||
fi
|
||||
@ -2315,6 +2315,56 @@ case "X-$OPTIMIZATION" in
|
||||
;;
|
||||
esac
|
||||
|
||||
## ----------------------------------------------------------------------
|
||||
## Check if file locking should be used
|
||||
##
|
||||
AC_MSG_CHECKING([enable file locking])
|
||||
AC_ARG_ENABLE([file-locking],
|
||||
[AS_HELP_STRING([--enable-file-locking=(yes|no|best-effort)],
|
||||
[Sets the default for whether or not to use file
|
||||
locking when opening files. Can be overridden
|
||||
with the HDF5_USE_FILE_LOCKING environment variable
|
||||
and the H5Pset_file_locking() API call.
|
||||
best-effort attempts to use file locking but does
|
||||
not fail when file locks have been disabled on
|
||||
the file system (useful with Lustre).
|
||||
[default=best-effort]
|
||||
])],
|
||||
[DESIRED_FILE_LOCKING=$enableval])
|
||||
|
||||
## Set defaults
|
||||
if test "X-$DESIRED_FILE_LOCKING" = X- ; then
|
||||
DESIRED_FILE_LOCKING=best-effort
|
||||
fi
|
||||
|
||||
## Allow this variable to be substituted in
|
||||
## other files (src/libhdf5.settings.in, etc.)
|
||||
AC_SUBST([DESIRED_FILE_LOCKING])
|
||||
AC_SUBST([USE_FILE_LOCKING])
|
||||
AC_SUBST([IGNORE_DISABLED_FILE_LOCKS])
|
||||
|
||||
case "X-$DESIRED_FILE_LOCKING" in
|
||||
X-best-effort)
|
||||
AC_MSG_RESULT([best-effort])
|
||||
AC_DEFINE([USE_FILE_LOCKING], [1],
|
||||
[Define if the library will use file locking])
|
||||
AC_DEFINE([IGNORE_DISABLED_FILE_LOCKS], [1],
|
||||
[Define if the library will ignore file locks when disabled])
|
||||
;;
|
||||
X-yes)
|
||||
AC_MSG_RESULT([yes])
|
||||
AC_DEFINE([USE_FILE_LOCKING], [1],
|
||||
[Define if the library will use file locking])
|
||||
;;
|
||||
X-no)
|
||||
AC_MSG_RESULT([no])
|
||||
;;
|
||||
*)
|
||||
AC_MSG_ERROR([Unrecognized value: $USE_FILE_LOCKING])
|
||||
;;
|
||||
esac
|
||||
|
||||
|
||||
## ----------------------------------------------------------------------
|
||||
## Enable/disable internal package-level debugging output
|
||||
##
|
||||
|
@ -98,7 +98,7 @@ int main () {
|
||||
|
||||
for (i=0; i<numfilt; i++) {
|
||||
nelmts = 0;
|
||||
filter_type = H5Pget_filter2 (plist_id, 0, &flags, &nelmts, NULL, 0, NULL,
|
||||
filter_type = H5Pget_filter2 (plist_id, i, &flags, &nelmts, NULL, 0, NULL,
|
||||
&filter_info);
|
||||
printf ("Filter Type: ");
|
||||
switch (filter_type) {
|
||||
|
@ -8263,5 +8263,107 @@ END SUBROUTINE h5pget_virtual_dsetname_f
|
||||
|
||||
END SUBROUTINE h5pget_vol_id_f
|
||||
|
||||
!****s* H5P (F03)/h5pget_file_locking_f_F03
|
||||
!
|
||||
! NAME
|
||||
! h5pget_file_locking_f
|
||||
!
|
||||
! PURPOSE
|
||||
! Gets the file locking properties. File locking is mainly used to help
|
||||
! enforce SWMR semantics.
|
||||
!
|
||||
! INPUTS
|
||||
! fapl_id - Target file access property list identifier.
|
||||
!
|
||||
! OUTPUTS
|
||||
! use_file_locking - Whether or not to use file locks.
|
||||
! ignore_disabled_locks - Whether or not to ignore file locks when locking
|
||||
! is disabled on a file system.
|
||||
! hdferr - error code:
|
||||
! 0 on success and -1 on failure
|
||||
!
|
||||
! AUTHOR
|
||||
! Dana Robinson
|
||||
! Summer 2020
|
||||
!
|
||||
! Fortran2003 Interface:
|
||||
SUBROUTINE h5pget_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, hdferr)
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T) , INTENT(IN) :: fapl_id
|
||||
LOGICAL , INTENT(OUT) :: use_file_locking
|
||||
LOGICAL , INTENT(OUT) :: ignore_disabled_locks
|
||||
INTEGER , INTENT(OUT) :: hdferr
|
||||
!*****
|
||||
LOGICAL(C_BOOL) :: c_use_flag
|
||||
LOGICAL(C_BOOL) :: c_ignore_flag
|
||||
|
||||
INTERFACE
|
||||
INTEGER FUNCTION h5pget_file_locking(fapl_id, use_file_locking, ignore_disabled_locks) BIND(C, NAME='H5Pget_file_locking')
|
||||
IMPORT :: HID_T, C_BOOL
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T), INTENT(IN), VALUE :: fapl_id
|
||||
LOGICAL(C_BOOL), INTENT(OUT) :: use_file_locking
|
||||
LOGICAL(C_BOOL), INTENT(OUT) :: ignore_disabled_locks
|
||||
END FUNCTION h5pget_file_locking
|
||||
END INTERFACE
|
||||
|
||||
hdferr = INT(h5pget_file_locking(fapl_id, c_use_flag, c_ignore_flag))
|
||||
|
||||
! Transfer value of C C_BOOL type to Fortran LOGICAL
|
||||
use_file_locking = c_use_flag
|
||||
ignore_disabled_locks = c_ignore_flag
|
||||
|
||||
END SUBROUTINE h5pget_file_locking_f
|
||||
|
||||
!****s* H5P (F03)/h5pset_file_locking_f_F03
|
||||
!
|
||||
! NAME
|
||||
! h5pset_file_locking_f
|
||||
!
|
||||
! PURPOSE
|
||||
! Sets the file locking properties. File locking is mainly used to help
|
||||
! enforce SWMR semantics.
|
||||
!
|
||||
! INPUTS
|
||||
! fapl_id - Target file access property list identifier.
|
||||
! use_file_locking - Whether or not to use file locks.
|
||||
! ignore_disabled_locks - Whether or not to ignore file locks when locking
|
||||
! is disabled on a file system.
|
||||
! hdferr - error code:
|
||||
! 0 on success and -1 on failure
|
||||
!
|
||||
! AUTHOR
|
||||
! Dana Robinson
|
||||
! Summer 2020
|
||||
!
|
||||
! Fortran2003 Interface:
|
||||
SUBROUTINE h5pset_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, hdferr)
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T) , INTENT(IN) :: fapl_id
|
||||
LOGICAL , INTENT(IN) :: use_file_locking
|
||||
LOGICAL , INTENT(IN) :: ignore_disabled_locks
|
||||
INTEGER , INTENT(OUT) :: hdferr
|
||||
!*****
|
||||
LOGICAL(C_BOOL) :: c_use_flag
|
||||
LOGICAL(C_BOOL) :: c_ignore_flag
|
||||
|
||||
INTERFACE
|
||||
INTEGER FUNCTION h5pset_file_locking(fapl_id, use_file_locking, ignore_disabled_locks) BIND(C, NAME='H5Pset_file_locking')
|
||||
IMPORT :: HID_T, C_BOOL
|
||||
IMPLICIT NONE
|
||||
INTEGER(HID_T), INTENT(IN), VALUE :: fapl_id
|
||||
LOGICAL(C_BOOL), INTENT(IN), VALUE :: use_file_locking
|
||||
LOGICAL(C_BOOL), INTENT(IN), VALUE :: ignore_disabled_locks
|
||||
END FUNCTION h5pset_file_locking
|
||||
END INTERFACE
|
||||
|
||||
! Transfer value of Fortran LOGICAL to C C_BOOL type
|
||||
c_use_flag = use_file_locking
|
||||
c_ignore_flag = ignore_disabled_locks
|
||||
|
||||
hdferr = INT(h5pset_file_locking(fapl_id, c_use_flag, c_ignore_flag))
|
||||
|
||||
END SUBROUTINE h5pset_file_locking_f
|
||||
|
||||
END MODULE H5P
|
||||
|
||||
|
@ -339,6 +339,8 @@ H5P_mp_H5PGET_DSET_NO_ATTRS_HINT_F
|
||||
H5P_mp_H5PSET_DSET_NO_ATTRS_HINT_F
|
||||
H5P_mp_H5PSET_VOL_F
|
||||
H5P_mp_H5PGET_VOL_ID_F
|
||||
H5P_mp_H5PSET_FILE_LOCKING_F
|
||||
H5P_mp_H5PGET_FILE_LOCKING_F
|
||||
; Parallel
|
||||
@H5_NOPAREXP@H5P_mp_H5PSET_FAPL_MPIO_F
|
||||
@H5_NOPAREXP@H5P_mp_H5PGET_FAPL_MPIO_F
|
||||
|
@ -183,9 +183,13 @@ PROGRAM fortranlibtest
|
||||
CALL write_test_status(ret_total_error, ' Multi file driver test', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_chunk_cache (cleanup, ret_total_error)
|
||||
CALL test_chunk_cache(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Dataset chunk cache configuration', total_error)
|
||||
|
||||
ret_total_error = 0
|
||||
CALL test_misc_properties(cleanup, ret_total_error)
|
||||
CALL write_test_status(ret_total_error, ' Miscellaneous properties', total_error)
|
||||
|
||||
!
|
||||
! '========================================='
|
||||
! 'Testing ATTRIBUTE interface '
|
||||
|
@ -724,4 +724,77 @@ SUBROUTINE test_chunk_cache(cleanup, total_error)
|
||||
|
||||
END SUBROUTINE test_chunk_cache
|
||||
|
||||
!-------------------------------------------------------------------------
|
||||
! Function: test_misc_properties
|
||||
!
|
||||
! Purpose: Tests setting and getting of miscellaneous properties. Does
|
||||
! not test the underlying functionality as that is done in
|
||||
! the C library tests.
|
||||
!
|
||||
! Tests APIs:
|
||||
! H5P_GET/SET_FILE_LOCKING_F
|
||||
!
|
||||
! Return: Success: 0
|
||||
! Failure: -1
|
||||
!
|
||||
!-------------------------------------------------------------------------
|
||||
!
|
||||
SUBROUTINE test_misc_properties(cleanup, total_error)
|
||||
|
||||
IMPLICIT NONE
|
||||
LOGICAL, INTENT(IN) :: cleanup
|
||||
INTEGER, INTENT(INOUT) :: total_error
|
||||
|
||||
INTEGER(hid_t) :: fapl_id = -1 ! Local fapl
|
||||
LOGICAL :: use_file_locking ! (H5Pset/get_file_locking_f)
|
||||
LOGICAL :: ignore_disabled_locks ! (H5Pset/get_file_locking_f)
|
||||
INTEGER :: error
|
||||
|
||||
! Create a default fapl
|
||||
CALL H5Pcreate_f(H5P_FILE_ACCESS_F, fapl_id, error)
|
||||
CALL check("H5Pcreate_f", error, total_error)
|
||||
|
||||
! Test H5Pset/get_file_locking_f
|
||||
! true values
|
||||
use_file_locking = .TRUE.
|
||||
ignore_disabled_locks = .TRUE.
|
||||
CALL h5pset_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, error)
|
||||
CALL check("h5pset_set_file_locking_f", error, total_error)
|
||||
use_file_locking = .FALSE.
|
||||
ignore_disabled_locks = .FALSE.
|
||||
CALL h5pget_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, error)
|
||||
CALL check("h5pget_set_file_locking_f", error, total_error)
|
||||
if(use_file_locking .neqv. .TRUE.) then
|
||||
total_error = total_error + 1
|
||||
write(*,*) "Got wrong use_file_locking flag from h5pget_file_locking_f"
|
||||
endif
|
||||
if(ignore_disabled_locks .neqv. .TRUE.) then
|
||||
total_error = total_error + 1
|
||||
write(*,*) "Got wrong ignore_disabled_locks flag from h5pget_file_locking_f"
|
||||
endif
|
||||
|
||||
! false values
|
||||
use_file_locking = .FALSE.
|
||||
ignore_disabled_locks = .FALSE.
|
||||
CALL h5pset_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, error)
|
||||
CALL check("h5pset_set_file_locking_f", error, total_error)
|
||||
use_file_locking = .TRUE.
|
||||
ignore_disabled_locks = .TRUE.
|
||||
CALL h5pget_file_locking_f(fapl_id, use_file_locking, ignore_disabled_locks, error)
|
||||
CALL check("h5pget_set_file_locking_f", error, total_error)
|
||||
if(use_file_locking .neqv. .FALSE.) then
|
||||
total_error = total_error + 1
|
||||
write(*,*) "Got wrong use_file_locking flag from h5pget_file_locking_f"
|
||||
endif
|
||||
if(ignore_disabled_locks .neqv. .FALSE.) then
|
||||
total_error = total_error + 1
|
||||
write(*,*) "Got wrong ignore_disabled_locks flag from h5pget_file_locking_f"
|
||||
endif
|
||||
|
||||
! Close the fapl
|
||||
CALL H5Pclose_f(fapl_id, error)
|
||||
CALL check("H5Pclose_f", error, total_error)
|
||||
|
||||
END SUBROUTINE test_misc_properties
|
||||
|
||||
END MODULE TH5P
|
||||
|
@ -34,7 +34,7 @@ herr_t H5IM_get_palette(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
@ -127,7 +127,7 @@ herr_t H5IMmake_image_8bitf(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
@ -244,7 +244,7 @@ herr_t H5IMmake_image_24bitf(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
@ -302,7 +302,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
@ -395,7 +395,7 @@ herr_t H5IMmake_palettef(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
@ -434,7 +434,7 @@ herr_t H5IMget_palettef(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 10, 2005
|
||||
*
|
||||
|
@ -24,7 +24,7 @@
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -85,7 +85,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -138,7 +138,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -207,7 +207,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -292,7 +292,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
@ -341,7 +341,7 @@ h5imis_image_c(hid_t_f *loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
@ -396,7 +396,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
@ -461,7 +461,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
@ -527,7 +527,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06 2004
|
||||
*
|
||||
@ -588,7 +588,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06 2004
|
||||
*
|
||||
@ -655,7 +655,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06 2004
|
||||
*
|
||||
@ -714,7 +714,7 @@ done:
|
||||
*
|
||||
* Return: true, false, fail
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
|
@ -41,7 +41,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -95,7 +95,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -142,7 +142,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -204,7 +204,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -267,7 +267,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -313,7 +313,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -364,7 +364,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -416,7 +416,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -467,7 +467,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -516,7 +516,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -567,7 +567,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -619,7 +619,7 @@ CONTAINS
|
||||
!
|
||||
! Return: true, false, fail
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
|
@ -24,7 +24,7 @@
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -94,7 +94,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -153,7 +153,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -218,7 +218,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -274,7 +274,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -373,7 +373,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -460,7 +460,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -535,7 +535,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -595,7 +595,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -643,7 +643,7 @@ h5ltfind_dataset_c(hid_t_f *loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
@ -722,7 +722,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -791,7 +791,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 09, 2004
|
||||
*
|
||||
|
@ -164,7 +164,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 1, 2004
|
||||
!
|
||||
@ -385,7 +385,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -426,7 +426,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -595,7 +595,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -770,7 +770,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -933,7 +933,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -983,7 +983,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 22, 2004
|
||||
!
|
||||
@ -1092,7 +1092,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1143,7 +1143,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1193,7 +1193,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1245,7 +1245,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1350,7 +1350,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1397,7 +1397,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1443,7 +1443,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1490,7 +1490,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1551,7 +1551,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 30, 2004
|
||||
!
|
||||
@ -1600,7 +1600,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1644,7 +1644,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 30, 2004
|
||||
!
|
||||
@ -1703,7 +1703,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 05, 2004
|
||||
!
|
||||
@ -1757,7 +1757,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: September 30, 2004
|
||||
!
|
||||
|
@ -26,7 +26,7 @@
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 06, 2004
|
||||
*
|
||||
@ -301,7 +301,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 12, 2004
|
||||
*
|
||||
@ -350,7 +350,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 12, 2004
|
||||
*
|
||||
@ -398,7 +398,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 12, 2004
|
||||
*
|
||||
@ -443,7 +443,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 12, 2004
|
||||
*
|
||||
@ -487,7 +487,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 13, 2004
|
||||
*
|
||||
@ -534,7 +534,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 13, 2004
|
||||
*
|
||||
@ -580,7 +580,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 12, 2004
|
||||
*
|
||||
@ -627,7 +627,7 @@ done:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 13, 2004
|
||||
*
|
||||
|
@ -172,7 +172,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 06, 2004
|
||||
!
|
||||
@ -424,7 +424,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Writes one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 12, 2004
|
||||
!
|
||||
@ -505,7 +505,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Reads one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 12, 2004
|
||||
!
|
||||
@ -586,7 +586,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Writes one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 12, 2004
|
||||
!
|
||||
@ -661,7 +661,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Reads one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 12, 2004
|
||||
!
|
||||
@ -734,7 +734,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Inserts one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 13, 2004
|
||||
!
|
||||
@ -807,7 +807,7 @@ CONTAINS
|
||||
!
|
||||
! Purpose: Inserts one field
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 13, 2004
|
||||
!
|
||||
@ -858,7 +858,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 13, 2004
|
||||
!
|
||||
@ -909,7 +909,7 @@ CONTAINS
|
||||
!
|
||||
! Return: Success: 0, Failure: -1
|
||||
!
|
||||
! Programmer: pvn@ncsa.uiuc.edu
|
||||
! Programmer: Pedro Vicente
|
||||
!
|
||||
! Date: October 13, 2004
|
||||
!
|
||||
|
635
hl/src/H5DS.c
635
hl/src/H5DS.c
@ -11,9 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "H5DSprivate.h"
|
||||
#include "H5LTprivate.h"
|
||||
#include "H5IMprivate.h"
|
||||
@ -25,29 +22,24 @@ static herr_t H5DS_is_reserved(hid_t did);
|
||||
static hid_t H5DS_get_REFLIST_type(void);
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSset_scale
|
||||
*
|
||||
* Purpose: The dataset DSID is converted to a Dimension Scale dataset.
|
||||
* Creates the CLASS attribute, set to the value "DIMENSION_SCALE"
|
||||
* and an empty REFERENCE_LIST attribute.
|
||||
* If DIMNAME is specified, then an attribute called NAME is created,
|
||||
* with the value DIMNAME.
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
herr_t H5DSset_scale(hid_t dsid,
|
||||
const char *dimname)
|
||||
* Function: H5DSset_scale
|
||||
*
|
||||
* Purpose: The dataset DSID is converted to a Dimension Scale dataset.
|
||||
* Creates the CLASS attribute, set to the value "DIMENSION_SCALE"
|
||||
* and an empty REFERENCE_LIST attribute.
|
||||
* If DIMNAME is specified, then an attribute called NAME is created,
|
||||
* with the value DIMNAME.
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5DSset_scale(hid_t dsid, const char *dimname)
|
||||
{
|
||||
int has_dimlist;
|
||||
H5I_type_t it;
|
||||
@ -95,34 +87,28 @@ herr_t H5DSset_scale(hid_t dsid,
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSattach_scale
|
||||
*
|
||||
* Purpose: Define Dimension Scale DSID to be associated with dimension IDX
|
||||
* of Dataset DID. Entries are created in the DIMENSION_LIST and
|
||||
* REFERENCE_LIST attributes.
|
||||
*
|
||||
* Return:
|
||||
* Success: SUCCEED
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* If DSID is not a Dimension Scale
|
||||
* If DID is a Dimension Scale (A Dimension Scale cannot have scales)
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: December 20, 2004
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
herr_t H5DSattach_scale(hid_t did,
|
||||
hid_t dsid,
|
||||
unsigned int idx)
|
||||
* Function: H5DSattach_scale
|
||||
*
|
||||
* Purpose: Define Dimension Scale DSID to be associated with dimension IDX
|
||||
* of Dataset DID. Entries are created in the DIMENSION_LIST and
|
||||
* REFERENCE_LIST attributes.
|
||||
*
|
||||
* Return:
|
||||
* Success: SUCCEED
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* If DSID is not a Dimension Scale
|
||||
* If DID is a Dimension Scale (A Dimension Scale cannot have scales)
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: December 20, 2004
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5DSattach_scale(hid_t did, hid_t dsid, unsigned int idx)
|
||||
{
|
||||
int has_dimlist;
|
||||
int has_reflist;
|
||||
@ -547,39 +533,31 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSdetach_scale
|
||||
*
|
||||
* Purpose: If possible, deletes association of Dimension Scale DSID with
|
||||
* dimension IDX of Dataset DID. This deletes the entries in the
|
||||
* DIMENSION_LIST and REFERENCE_LIST attributes.
|
||||
*
|
||||
* Return:
|
||||
* Success: SUCCEED
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* The dataset DID or DSID do not exist.
|
||||
* The DSID is not a Dimension Scale
|
||||
* DSID is not attached to DID.
|
||||
* Note that a scale may be associated with more than dimension of the same dataset.
|
||||
* If so, the detach operation only deletes one of the associations, for DID.
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: December 20, 2004
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications: Function didn't delete DIMENSION_LIST attribute, when
|
||||
* all dimension scales were detached from a dataset; added.
|
||||
* 2010/05/13 EIP
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
herr_t H5DSdetach_scale(hid_t did,
|
||||
hid_t dsid,
|
||||
unsigned int idx)
|
||||
* Function: H5DSdetach_scale
|
||||
*
|
||||
* Purpose: If possible, deletes association of Dimension Scale DSID with
|
||||
* dimension IDX of Dataset DID. This deletes the entries in the
|
||||
* DIMENSION_LIST and REFERENCE_LIST attributes.
|
||||
*
|
||||
* Return:
|
||||
* Success: SUCCEED
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* The dataset DID or DSID do not exist.
|
||||
* The DSID is not a Dimension Scale
|
||||
* DSID is not attached to DID.
|
||||
* Note that a scale may be associated with more than dimension of the same dataset.
|
||||
* If so, the detach operation only deletes one of the associations, for DID.
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: December 20, 2004
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5DSdetach_scale(hid_t did, hid_t dsid, unsigned int idx)
|
||||
{
|
||||
int has_dimlist;
|
||||
int has_reflist;
|
||||
@ -940,35 +918,29 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSis_attached
|
||||
*
|
||||
* Purpose: Report if dimension scale DSID is currently attached to
|
||||
* dimension IDX of dataset DID by checking if DID has a pointer in the REFERENCE_LIST
|
||||
* attribute and DSID (scale ) has a pointer in the DIMENSION_LIST attribute
|
||||
*
|
||||
* Return:
|
||||
* 1: both the DS and the dataset pointers match
|
||||
* 0: one of them or both do not match
|
||||
* FAIL (-1): error
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* If DSID is not a Dimension Scale
|
||||
* If DID is a Dimension Scale (A Dimension Scale cannot have scales)
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: February 18, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
htri_t H5DSis_attached(hid_t did,
|
||||
hid_t dsid,
|
||||
unsigned int idx)
|
||||
* Function: H5DSis_attached
|
||||
*
|
||||
* Purpose: Report if dimension scale DSID is currently attached to
|
||||
* dimension IDX of dataset DID by checking if DID has a pointer in the REFERENCE_LIST
|
||||
* attribute and DSID (scale ) has a pointer in the DIMENSION_LIST attribute
|
||||
*
|
||||
* Return:
|
||||
* 1: both the DS and the dataset pointers match
|
||||
* 0: one of them or both do not match
|
||||
* FAIL (-1): error
|
||||
*
|
||||
* Fails if: Bad arguments
|
||||
* If DSID is not a Dimension Scale
|
||||
* If DID is a Dimension Scale (A Dimension Scale cannot have scales)
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: February 18, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
htri_t
|
||||
H5DSis_attached(hid_t did, hid_t dsid, unsigned int idx)
|
||||
{
|
||||
int has_dimlist;
|
||||
int has_reflist;
|
||||
@ -1249,54 +1221,47 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSiterate_scales
|
||||
*
|
||||
* Purpose: H5DSiterate_scales iterates over the scales attached to dimension DIM
|
||||
* of dataset DID. For each scale in the list, the visitor_data and some
|
||||
* additional information, specified below, are passed to the visitor function.
|
||||
* The iteration begins with the IDX object in the group and the next element
|
||||
* to be processed by the operator is returned in IDX. If IDX is NULL, then the
|
||||
* iterator starts at zero.
|
||||
*
|
||||
* Parameters:
|
||||
*
|
||||
* hid_t DID; IN: the dataset
|
||||
* unsigned int DIM; IN: the dimension of the dataset
|
||||
* int *DS_IDX; IN/OUT: on input the dimension scale index to start iterating,
|
||||
* on output the next index to visit. If NULL, start at
|
||||
* the first position.
|
||||
* H5DS_iterate_t VISITOR; IN: the visitor function
|
||||
* void *VISITOR_DATA; IN: arbitrary data to pass to the visitor function.
|
||||
*
|
||||
* Iterate over all scales of DIM, calling an application callback
|
||||
* with the item, key and any operator data.
|
||||
*
|
||||
* The operator callback receives a pointer to the item ,
|
||||
* and the pointer to the operator data passed
|
||||
* in to H5SL_iterate ('op_data'). The return values from an operator are:
|
||||
* A. Zero causes the iterator to continue, returning zero when all
|
||||
* nodes of that type have been processed.
|
||||
* B. Positive causes the iterator to immediately return that positive
|
||||
* value, indicating short-circuit success.
|
||||
* C. Negative causes the iterator to immediately return that value,
|
||||
* indicating failure.
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 31, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
herr_t H5DSiterate_scales(hid_t did,
|
||||
unsigned int dim,
|
||||
int *ds_idx,
|
||||
H5DS_iterate_t visitor,
|
||||
void *visitor_data )
|
||||
* Function: H5DSiterate_scales
|
||||
*
|
||||
* Purpose: H5DSiterate_scales iterates over the scales attached to dimension DIM
|
||||
* of dataset DID. For each scale in the list, the visitor_data and some
|
||||
* additional information, specified below, are passed to the visitor function.
|
||||
* The iteration begins with the IDX object in the group and the next element
|
||||
* to be processed by the operator is returned in IDX. If IDX is NULL, then the
|
||||
* iterator starts at zero.
|
||||
*
|
||||
* Parameters:
|
||||
*
|
||||
* hid_t DID; IN: the dataset
|
||||
* unsigned int DIM; IN: the dimension of the dataset
|
||||
* int *DS_IDX; IN/OUT: on input the dimension scale index to start iterating,
|
||||
* on output the next index to visit. If NULL, start at
|
||||
* the first position.
|
||||
* H5DS_iterate_t VISITOR; IN: the visitor function
|
||||
* void *VISITOR_DATA; IN: arbitrary data to pass to the visitor function.
|
||||
*
|
||||
* Iterate over all scales of DIM, calling an application callback
|
||||
* with the item, key and any operator data.
|
||||
*
|
||||
* The operator callback receives a pointer to the item ,
|
||||
* and the pointer to the operator data passed
|
||||
* in to H5SL_iterate ('op_data'). The return values from an operator are:
|
||||
* A. Zero causes the iterator to continue, returning zero when all
|
||||
* nodes of that type have been processed.
|
||||
* B. Positive causes the iterator to immediately return that positive
|
||||
* value, indicating short-circuit success.
|
||||
* C. Negative causes the iterator to immediately return that value,
|
||||
* indicating failure.
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 31, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5DSiterate_scales(hid_t did, unsigned int dim, int *ds_idx,
|
||||
H5DS_iterate_t visitor, void *visitor_data )
|
||||
{
|
||||
hid_t scale_id;
|
||||
int rank;
|
||||
@ -1450,24 +1415,20 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSset_label
|
||||
*
|
||||
* Purpose: Set label for the dimension IDX of dataset DID to the value LABEL
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 11, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
herr_t H5DSset_label(hid_t did, unsigned int idx, const char *label)
|
||||
* Function: H5DSset_label
|
||||
*
|
||||
* Purpose: Set label for the dimension IDX of dataset DID to the value LABEL
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 11, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5DSset_label(hid_t did, unsigned int idx, const char *label)
|
||||
{
|
||||
int has_labels;
|
||||
hid_t sid = -1; /* space ID */
|
||||
@ -1481,6 +1442,9 @@ herr_t H5DSset_label(hid_t did, unsigned int idx, const char *label)
|
||||
char ** buf; /* discarding the 'const' qualifier in the free */
|
||||
char const ** const_buf; /* buf calls */
|
||||
} u;
|
||||
|
||||
HDmemset(&u, 0, sizeof(u));
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* parameter checking
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1656,29 +1620,24 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSget_label
|
||||
*
|
||||
* Purpose: Read the label LABEL for dimension IDX of dataset DID
|
||||
* Up to 'size' characters are stored in 'label' followed by a '\0' string
|
||||
* terminator. If the label is longer than 'size'-1,
|
||||
* the string terminator is stored in the last position of the buffer to
|
||||
* properly terminate the string.
|
||||
*
|
||||
* Return: 0 if no label found, size of label if found, Failure: FAIL
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 11, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
* JIRA HDFFV-7673: Added a check to see if the label name exists,
|
||||
* if not then returns zero. July 30, 2011. MSB
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
ssize_t H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size)
|
||||
* Function: H5DSget_label
|
||||
*
|
||||
* Purpose: Read the label LABEL for dimension IDX of dataset DID
|
||||
* Up to 'size' characters are stored in 'label' followed by a '\0' string
|
||||
* terminator. If the label is longer than 'size'-1,
|
||||
* the string terminator is stored in the last position of the buffer to
|
||||
* properly terminate the string.
|
||||
*
|
||||
* Return: 0 if no label found, size of label if found, Failure: FAIL
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 11, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
ssize_t
|
||||
H5DSget_label(hid_t did, unsigned int idx, char *label, size_t size)
|
||||
{
|
||||
int has_labels;
|
||||
hid_t sid = -1; /* space ID */
|
||||
@ -1818,32 +1777,24 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSget_scale_name
|
||||
*
|
||||
* Purpose: Read the name of dataset scale DID into buffer NAME
|
||||
* Up to 'size' characters are stored in 'name' followed by a '\0' string
|
||||
* terminator. If the name is longer than 'size'-1,
|
||||
* the string terminator is stored in the last position of the buffer to
|
||||
* properly terminate the string.
|
||||
*
|
||||
* Return: size of name if found, zero if not found, Failure: FAIL
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
* The size of the name returned should not include the NULL termination
|
||||
* in its value so as to be consistent with other HDF5 APIs.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
ssize_t H5DSget_scale_name(hid_t did,
|
||||
char *name,
|
||||
size_t size)
|
||||
* Function: H5DSget_scale_name
|
||||
*
|
||||
* Purpose: Read the name of dataset scale DID into buffer NAME
|
||||
* Up to 'size' characters are stored in 'name' followed by a '\0' string
|
||||
* terminator. If the name is longer than 'size'-1,
|
||||
* the string terminator is stored in the last position of the buffer to
|
||||
* properly terminate the string.
|
||||
*
|
||||
* Return: size of name if found, zero if not found, Failure: FAIL
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
ssize_t
|
||||
H5DSget_scale_name(hid_t did, char *name, size_t size)
|
||||
{
|
||||
hid_t aid; /* attribute ID */
|
||||
hid_t tid = -1; /* attribute type ID */
|
||||
@ -1945,51 +1896,49 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSis_scale
|
||||
*
|
||||
* Purpose: check if the dataset DID is a dimension scale
|
||||
*
|
||||
* Return: 1, is, 0, not, FAIL, error
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
* Function: H5DSis_scale
|
||||
*
|
||||
* Purpose: check if the dataset DID is a dimension scale
|
||||
*
|
||||
* Return: 1, is, 0, not, FAIL, error
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
htri_t H5DSis_scale(hid_t did)
|
||||
{
|
||||
hid_t tid = -1; /* attribute type ID */
|
||||
hid_t aid = -1; /* attribute ID */
|
||||
herr_t has_class; /* has the "CLASS" attribute */
|
||||
htri_t is_ds; /* boolean return value */
|
||||
H5I_type_t it; /* ID type */
|
||||
char *buf; /* Name of attribute */
|
||||
hsize_t storage_size; /* Size of storage for attribute */
|
||||
hid_t tid = -1; /* attribute type ID */
|
||||
hid_t aid = -1; /* attribute ID */
|
||||
herr_t attr_class; /* has the "CLASS" attribute */
|
||||
htri_t is_ds = -1; /* set to "not a dimension scale" */
|
||||
H5I_type_t it; /* type of identifier */
|
||||
char *buf = NULL; /* buffer to read name of attribute */
|
||||
size_t string_size; /* size of storage for the attribute */
|
||||
H5T_class_t type_class;
|
||||
H5T_str_t strpad;
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
/*------------------------------------------------------------------------
|
||||
* parameter checking
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
/* get ID type */
|
||||
if ((it = H5Iget_type(did)) < 0)
|
||||
return FAIL;
|
||||
goto out;
|
||||
|
||||
if(H5I_DATASET != it)
|
||||
return FAIL;
|
||||
goto out;
|
||||
|
||||
/* try to find the attribute "CLASS" on the dataset */
|
||||
if((has_class = H5LT_find_attribute(did, "CLASS")) < 0)
|
||||
return FAIL;
|
||||
if((attr_class = H5LT_find_attribute(did, "CLASS")) < 0)
|
||||
goto out;
|
||||
|
||||
if(has_class == 0)
|
||||
if(attr_class == 0) {
|
||||
is_ds = 0;
|
||||
|
||||
goto out;
|
||||
}
|
||||
else
|
||||
{
|
||||
if((aid = H5Aopen(did, "CLASS", H5P_DEFAULT)) < 0)
|
||||
@ -1998,19 +1947,33 @@ htri_t H5DSis_scale(hid_t did)
|
||||
if((tid = H5Aget_type(aid)) < 0)
|
||||
goto out;
|
||||
|
||||
/* check to make sure attribute is a string */
|
||||
if(H5T_STRING != H5Tget_class(tid))
|
||||
/* check to make sure attribute is a string;
|
||||
if not, then it is not dimension scale */
|
||||
if((type_class = H5Tget_class(tid)) < 0)
|
||||
goto out;
|
||||
|
||||
/* check to make sure string is null-terminated */
|
||||
if(H5T_STR_NULLTERM != H5Tget_strpad(tid))
|
||||
if(H5T_STRING != type_class) {
|
||||
is_ds = 0;
|
||||
goto out;
|
||||
|
||||
/* allocate buffer large enough to hold string */
|
||||
if((storage_size = H5Aget_storage_size(aid)) == 0)
|
||||
}
|
||||
/* check to make sure string is null-terminated;
|
||||
if not, then it is not dimension scale */
|
||||
if((strpad = H5Tget_strpad(tid)) < 0 )
|
||||
goto out;
|
||||
if(H5T_STR_NULLTERM != strpad) {
|
||||
is_ds = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
buf = (char*)HDmalloc( (size_t)storage_size * sizeof(char) + 1);
|
||||
/* According to Spec string is ASCII and its size should be 16 to hold
|
||||
"DIMENSION_SCALE" string */
|
||||
if((string_size = H5Tget_size(tid)) == 0)
|
||||
goto out;
|
||||
if(string_size != 16) {
|
||||
is_ds = 0;
|
||||
goto out;
|
||||
}
|
||||
|
||||
buf = (char*)HDmalloc((size_t)string_size * sizeof(char));
|
||||
if(buf == NULL)
|
||||
goto out;
|
||||
|
||||
@ -2019,10 +1982,9 @@ htri_t H5DSis_scale(hid_t did)
|
||||
goto out;
|
||||
|
||||
/* compare strings */
|
||||
if(HDstrncmp(buf, DIMENSION_SCALE_CLASS, MIN(HDstrlen(DIMENSION_SCALE_CLASS),HDstrlen(buf)))==0)
|
||||
if(HDstrncmp(buf, DIMENSION_SCALE_CLASS,
|
||||
MIN(HDstrlen(DIMENSION_SCALE_CLASS),HDstrlen(buf)))==0)
|
||||
is_ds = 1;
|
||||
else
|
||||
is_ds = 0;
|
||||
|
||||
HDfree(buf);
|
||||
|
||||
@ -2031,44 +1993,35 @@ htri_t H5DSis_scale(hid_t did)
|
||||
|
||||
if (H5Aclose(aid) < 0)
|
||||
goto out;
|
||||
|
||||
|
||||
}
|
||||
|
||||
return is_ds;
|
||||
|
||||
/* error zone */
|
||||
out:
|
||||
H5E_BEGIN_TRY {
|
||||
H5Aclose(aid);
|
||||
H5Tclose(tid);
|
||||
} H5E_END_TRY;
|
||||
return FAIL;
|
||||
|
||||
if(is_ds < 0) {
|
||||
HDfree(buf);
|
||||
H5E_BEGIN_TRY {
|
||||
H5Aclose(aid);
|
||||
H5Tclose(tid);
|
||||
} H5E_END_TRY;
|
||||
}
|
||||
return is_ds;
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DSget_num_scales
|
||||
*
|
||||
* Purpose: get the number of scales linked to the IDX dimension of dataset DID
|
||||
*
|
||||
* Return:
|
||||
* Success: number of scales
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: January 13, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
int H5DSget_num_scales(hid_t did,
|
||||
unsigned int idx)
|
||||
* Function: H5DSget_num_scales
|
||||
*
|
||||
* Purpose: get the number of scales linked to the IDX dimension of dataset DID
|
||||
*
|
||||
* Return:
|
||||
* Success: number of scales
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 13, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
int
|
||||
H5DSget_num_scales(hid_t did, unsigned int idx)
|
||||
{
|
||||
int has_dimlist;
|
||||
hid_t sid; /* space ID */
|
||||
@ -2171,25 +2124,20 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DS_is_reserved
|
||||
*
|
||||
* Purpose: Verify that a dataset's CLASS is either an image, palette or table
|
||||
*
|
||||
* Return: true, false, fail
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
*
|
||||
* Date: March 19, 2005
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static
|
||||
herr_t H5DS_is_reserved(hid_t did)
|
||||
* Function: H5DS_is_reserved
|
||||
*
|
||||
* Purpose: Verify that a dataset's CLASS is either an image, palette or table
|
||||
*
|
||||
* Return: true, false, fail
|
||||
*
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 19, 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
H5DS_is_reserved(hid_t did)
|
||||
{
|
||||
int has_class;
|
||||
hid_t tid = -1;
|
||||
@ -2262,26 +2210,21 @@ out:
|
||||
}
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5DS_get_REFLIST_type
|
||||
*
|
||||
* Purpose: This is a helper function to return a native type for
|
||||
* the REFERENCE_LIST attribute.
|
||||
*
|
||||
* Return: Type identifier on success and negative on failure
|
||||
*
|
||||
* Programmer: epourmal@hdfgroup.org
|
||||
*
|
||||
* Date: May 22, 2010
|
||||
*
|
||||
* Comments:
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
static
|
||||
hid_t H5DS_get_REFLIST_type(void)
|
||||
* Function: H5DS_get_REFLIST_type
|
||||
*
|
||||
* Purpose: This is a helper function to return a native type for
|
||||
* the REFERENCE_LIST attribute.
|
||||
*
|
||||
* Return: Type identifier on success and negative on failure
|
||||
*
|
||||
* Programmer: Elena Pourmal
|
||||
*
|
||||
* Date: May 22, 2010
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static hid_t
|
||||
H5DS_get_REFLIST_type(void)
|
||||
{
|
||||
hid_t ntid_t = -1;
|
||||
|
||||
|
@ -13,8 +13,6 @@
|
||||
|
||||
#include "H5IMprivate.h"
|
||||
#include "H5LTprivate.h"
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5IMmake_image_8bit
|
||||
@ -23,7 +21,7 @@
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: June 13, 2001
|
||||
*
|
||||
@ -77,7 +75,7 @@ herr_t H5IMmake_image_8bit( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: June 13, 2001
|
||||
*
|
||||
@ -162,7 +160,7 @@ herr_t H5IMmake_image_24bit( hid_t loc_id,
|
||||
*
|
||||
* Return:
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 28, 2001
|
||||
*
|
||||
@ -204,7 +202,7 @@ static herr_t find_palette(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 1, Failure: 0
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 11, 2001
|
||||
*
|
||||
@ -230,7 +228,7 @@ herr_t H5IM_find_palette( hid_t loc_id )
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: July 25, 2001
|
||||
*
|
||||
@ -412,7 +410,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: June 13, 2001
|
||||
*
|
||||
@ -462,7 +460,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 01, 2001
|
||||
*
|
||||
@ -518,7 +516,7 @@ herr_t H5IMmake_palette( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: May 01, 2001
|
||||
*
|
||||
@ -695,7 +693,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: September 10, 2001
|
||||
*
|
||||
@ -796,7 +794,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: July 22, 2001
|
||||
*
|
||||
@ -887,7 +885,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: July 22, 2001
|
||||
*
|
||||
@ -1003,7 +1001,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: August 30, 2001
|
||||
*
|
||||
@ -1110,7 +1108,7 @@ out:
|
||||
*
|
||||
* Return: true, false, fail
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: August 30, 2001
|
||||
*
|
||||
@ -1214,7 +1212,7 @@ out:
|
||||
*
|
||||
* Return: true, false, fail
|
||||
*
|
||||
* Programmer: Pedro Vicente Nunes, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente Nunes
|
||||
*
|
||||
* Date: August 30, 2001
|
||||
*
|
||||
|
@ -11,10 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include "H5LDprivate.h"
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
|
127
hl/src/H5LT.c
127
hl/src/H5LT.c
@ -11,11 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "H5LTprivate.h"
|
||||
|
||||
/* For Lex and Yacc */
|
||||
@ -504,7 +499,7 @@ static herr_t H5LT_get_attribute_mem(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Quincey Koziol, koziol@hdfgroup.org
|
||||
* Programmer: Quincey Koziol
|
||||
*
|
||||
* Date: October 10, 2007
|
||||
*
|
||||
@ -570,7 +565,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 19, 2001
|
||||
*
|
||||
@ -599,7 +594,7 @@ herr_t H5LTmake_dataset( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -628,7 +623,7 @@ herr_t H5LTmake_dataset_char( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -657,7 +652,7 @@ herr_t H5LTmake_dataset_short( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -688,7 +683,7 @@ herr_t H5LTmake_dataset_int( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -717,7 +712,7 @@ herr_t H5LTmake_dataset_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -748,7 +743,7 @@ herr_t H5LTmake_dataset_float( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 14, 2001
|
||||
*
|
||||
@ -778,7 +773,7 @@ herr_t H5LTmake_dataset_double( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -970,7 +965,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Quincey Koziol, koziol@hdfgroup.org
|
||||
* Programmer: Quincey Koziol
|
||||
*
|
||||
* Date: October 8, 2007
|
||||
*
|
||||
@ -1012,7 +1007,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: June 13, 2001
|
||||
*
|
||||
@ -1035,7 +1030,7 @@ herr_t H5LTread_dataset(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1056,7 +1051,7 @@ herr_t H5LTread_dataset_char( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1077,7 +1072,7 @@ herr_t H5LTread_dataset_short( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1098,7 +1093,7 @@ herr_t H5LTread_dataset_int( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1119,7 +1114,7 @@ herr_t H5LTread_dataset_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1141,7 +1136,7 @@ herr_t H5LTread_dataset_float( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 5, 2001
|
||||
*
|
||||
@ -1163,7 +1158,7 @@ herr_t H5LTread_dataset_double( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: October 05, 2004
|
||||
*
|
||||
@ -1216,7 +1211,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 4, 2001
|
||||
*
|
||||
@ -1272,7 +1267,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 4, 2001
|
||||
* Modified: February 28, 2006: checked for NULL parameters
|
||||
@ -1348,7 +1343,7 @@ out:
|
||||
*
|
||||
* Purpose: operator function used by H5LTfind_dataset
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: June 21, 2001
|
||||
*
|
||||
@ -1392,7 +1387,7 @@ find_dataset(hid_t loc_id, const char *name, const H5L_info2_t *linfo, void *op_
|
||||
* Purpose: Inquires if a dataset named dset_name exists attached
|
||||
* to the object loc_id.
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: July 15, 2001
|
||||
*
|
||||
@ -1436,7 +1431,7 @@ H5_GCC_DIAG_ON(cast-qual)
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: July 23, 2001
|
||||
*
|
||||
@ -1534,7 +1529,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: July 25, 2001
|
||||
*
|
||||
@ -1613,7 +1608,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 7, 2001
|
||||
*
|
||||
@ -1643,7 +1638,7 @@ herr_t H5LTset_attribute_char( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -1674,7 +1669,7 @@ herr_t H5LTset_attribute_uchar( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 7, 2001
|
||||
*
|
||||
@ -1705,7 +1700,7 @@ herr_t H5LTset_attribute_short( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -1736,7 +1731,7 @@ herr_t H5LTset_attribute_ushort( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 7, 2001
|
||||
*
|
||||
@ -1767,7 +1762,7 @@ herr_t H5LTset_attribute_int( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -1799,7 +1794,7 @@ herr_t H5LTset_attribute_uint( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 7, 2001
|
||||
*
|
||||
@ -1829,7 +1824,7 @@ herr_t H5LTset_attribute_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Elena Pourmal, epourmal@ncsa.uiuc.edu
|
||||
* Programmer: Elena Pourmal
|
||||
*
|
||||
* Date: June 17, 2005
|
||||
*
|
||||
@ -1861,7 +1856,7 @@ herr_t H5LTset_attribute_long_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -1893,7 +1888,7 @@ herr_t H5LTset_attribute_ulong( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: July 25, 2001
|
||||
*
|
||||
@ -1926,7 +1921,7 @@ herr_t H5LTset_attribute_float( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 7, 2001
|
||||
*
|
||||
@ -1957,7 +1952,7 @@ herr_t H5LTset_attribute_double( hid_t loc_id,
|
||||
*
|
||||
* Purpose: operator function used by H5LT_find_attribute
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: June 21, 2001
|
||||
*
|
||||
@ -1998,7 +1993,7 @@ find_attr(hid_t loc_id, const char *name, const H5A_info_t *ainfo,
|
||||
* Purpose: Inquires if an attribute named attr_name exists attached to
|
||||
* the object loc_id.
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: May 17, 2006
|
||||
*
|
||||
@ -2020,7 +2015,7 @@ herr_t H5LTfind_attribute( hid_t loc_id, const char* attr_name )
|
||||
*
|
||||
* Purpose: Inquires if an attribute named attr_name exists attached to the object loc_id.
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: June 21, 2001
|
||||
*
|
||||
@ -2059,7 +2054,7 @@ H5_GCC_DIAG_ON(cast-qual)
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 4, 2001
|
||||
*
|
||||
@ -2129,7 +2124,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 4, 2001
|
||||
*
|
||||
@ -2215,7 +2210,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Raymond Lu, slu@ncsa.uiuc.edu
|
||||
* Programmer: Raymond Lu
|
||||
*
|
||||
* Date: October 6, 2004
|
||||
*
|
||||
@ -2265,7 +2260,7 @@ out:
|
||||
*
|
||||
* Return: void
|
||||
*
|
||||
* Programmer: Raymond Lu, songyulu@hdfgroup.org
|
||||
* Programmer: Raymond Lu
|
||||
*
|
||||
* Date: 29 September 2011
|
||||
*
|
||||
@ -2325,7 +2320,7 @@ out:
|
||||
*
|
||||
* Return: void
|
||||
*
|
||||
* Programmer: Raymond Lu, slu@ncsa.uiuc.edu
|
||||
* Programmer: Raymond Lu
|
||||
*
|
||||
* Date: December 6, 2005
|
||||
*
|
||||
@ -2489,7 +2484,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Raymond Lu, slu@ncsa.uiuc.edu
|
||||
* Programmer: Raymond Lu
|
||||
*
|
||||
* Date: December 6, 2005
|
||||
*
|
||||
@ -2536,7 +2531,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Raymond Lu, slu@ncsa.uiuc.edu
|
||||
* Programmer: Raymond Lu
|
||||
*
|
||||
* Date: December 20, 2005
|
||||
*
|
||||
@ -3101,7 +3096,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3153,7 +3148,7 @@ herr_t H5LTget_attribute_string( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3182,7 +3177,7 @@ herr_t H5LTget_attribute_char( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -3213,7 +3208,7 @@ herr_t H5LTget_attribute_uchar( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3242,7 +3237,7 @@ herr_t H5LTget_attribute_short( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -3273,7 +3268,7 @@ herr_t H5LTget_attribute_ushort( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3302,7 +3297,7 @@ herr_t H5LTget_attribute_int( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -3333,7 +3328,7 @@ herr_t H5LTget_attribute_uint( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3362,7 +3357,7 @@ herr_t H5LTget_attribute_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Elena Pourmal, epourmal@ncsa.uiuc.edu
|
||||
* Programmer: Elena Pourmal
|
||||
*
|
||||
* Date: June 17, 2005
|
||||
*
|
||||
@ -3392,7 +3387,7 @@ herr_t H5LTget_attribute_long_long( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -3422,7 +3417,7 @@ herr_t H5LTget_attribute_ulong( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3454,7 +3449,7 @@ herr_t H5LTget_attribute_float( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3486,7 +3481,7 @@ herr_t H5LTget_attribute_double( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3525,7 +3520,7 @@ herr_t H5LTget_attribute( hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3589,7 +3584,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: September 19, 2002
|
||||
*
|
||||
@ -3639,7 +3634,7 @@ out:
|
||||
*
|
||||
* Return: FAIL on error, SUCCESS on success
|
||||
*
|
||||
* Programmer: pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 04, 2005
|
||||
*
|
||||
|
1163
hl/src/H5LTanalyze.c
1163
hl/src/H5LTanalyze.c
File diff suppressed because it is too large
Load Diff
@ -28,6 +28,13 @@
|
||||
#pragma GCC diagnostic ignored "-Wsuggest-attribute=const"
|
||||
#endif
|
||||
|
||||
/* Turn off null dereference warnings in gcc.
|
||||
* We have no control over this generated code.
|
||||
*/
|
||||
#if defined __GNUC__ && 600 <= __GNUC__ * 100
|
||||
#pragma GCC diagnostic ignored "-Wnull-dereference"
|
||||
#endif
|
||||
|
||||
int my_yyinput(char *, int);
|
||||
#undef YY_INPUT
|
||||
#define YY_INPUT(b, r, ms) (r=my_yyinput(b, ms))
|
||||
|
1358
hl/src/H5LTparse.c
1358
hl/src/H5LTparse.c
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,8 @@
|
||||
/* A Bison parser, made by GNU Bison 2.7. */
|
||||
/* A Bison parser, made by GNU Bison 3.0.4. */
|
||||
|
||||
/* Bison interface for Yacc-like parsers in C
|
||||
|
||||
Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
|
||||
Copyright (C) 1984, 1989-1990, 2000-2015 Free Software Foundation, Inc.
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -32,7 +32,7 @@
|
||||
|
||||
#ifndef YY_H5LTYY_HL_SRC_H5LTPARSE_H_INCLUDED
|
||||
# define YY_H5LTYY_HL_SRC_H5LTPARSE_H_INCLUDED
|
||||
/* Enabling traces. */
|
||||
/* Debug traces. */
|
||||
#ifndef YYDEBUG
|
||||
# define YYDEBUG 0
|
||||
#endif
|
||||
@ -40,105 +40,92 @@
|
||||
extern int H5LTyydebug;
|
||||
#endif
|
||||
|
||||
/* Tokens. */
|
||||
/* Token type. */
|
||||
#ifndef YYTOKENTYPE
|
||||
# define YYTOKENTYPE
|
||||
/* Put the tokens into the symbol table, so that GDB and other debuggers
|
||||
know about them. */
|
||||
enum yytokentype {
|
||||
H5T_STD_I8BE_TOKEN = 258,
|
||||
H5T_STD_I8LE_TOKEN = 259,
|
||||
H5T_STD_I16BE_TOKEN = 260,
|
||||
H5T_STD_I16LE_TOKEN = 261,
|
||||
H5T_STD_I32BE_TOKEN = 262,
|
||||
H5T_STD_I32LE_TOKEN = 263,
|
||||
H5T_STD_I64BE_TOKEN = 264,
|
||||
H5T_STD_I64LE_TOKEN = 265,
|
||||
H5T_STD_U8BE_TOKEN = 266,
|
||||
H5T_STD_U8LE_TOKEN = 267,
|
||||
H5T_STD_U16BE_TOKEN = 268,
|
||||
H5T_STD_U16LE_TOKEN = 269,
|
||||
H5T_STD_U32BE_TOKEN = 270,
|
||||
H5T_STD_U32LE_TOKEN = 271,
|
||||
H5T_STD_U64BE_TOKEN = 272,
|
||||
H5T_STD_U64LE_TOKEN = 273,
|
||||
H5T_NATIVE_CHAR_TOKEN = 274,
|
||||
H5T_NATIVE_SCHAR_TOKEN = 275,
|
||||
H5T_NATIVE_UCHAR_TOKEN = 276,
|
||||
H5T_NATIVE_SHORT_TOKEN = 277,
|
||||
H5T_NATIVE_USHORT_TOKEN = 278,
|
||||
H5T_NATIVE_INT_TOKEN = 279,
|
||||
H5T_NATIVE_UINT_TOKEN = 280,
|
||||
H5T_NATIVE_LONG_TOKEN = 281,
|
||||
H5T_NATIVE_ULONG_TOKEN = 282,
|
||||
H5T_NATIVE_LLONG_TOKEN = 283,
|
||||
H5T_NATIVE_ULLONG_TOKEN = 284,
|
||||
H5T_IEEE_F32BE_TOKEN = 285,
|
||||
H5T_IEEE_F32LE_TOKEN = 286,
|
||||
H5T_IEEE_F64BE_TOKEN = 287,
|
||||
H5T_IEEE_F64LE_TOKEN = 288,
|
||||
H5T_NATIVE_FLOAT_TOKEN = 289,
|
||||
H5T_NATIVE_DOUBLE_TOKEN = 290,
|
||||
H5T_NATIVE_LDOUBLE_TOKEN = 291,
|
||||
H5T_STRING_TOKEN = 292,
|
||||
STRSIZE_TOKEN = 293,
|
||||
STRPAD_TOKEN = 294,
|
||||
CSET_TOKEN = 295,
|
||||
CTYPE_TOKEN = 296,
|
||||
H5T_VARIABLE_TOKEN = 297,
|
||||
H5T_STR_NULLTERM_TOKEN = 298,
|
||||
H5T_STR_NULLPAD_TOKEN = 299,
|
||||
H5T_STR_SPACEPAD_TOKEN = 300,
|
||||
H5T_CSET_ASCII_TOKEN = 301,
|
||||
H5T_CSET_UTF8_TOKEN = 302,
|
||||
H5T_C_S1_TOKEN = 303,
|
||||
H5T_FORTRAN_S1_TOKEN = 304,
|
||||
H5T_OPAQUE_TOKEN = 305,
|
||||
OPQ_SIZE_TOKEN = 306,
|
||||
OPQ_TAG_TOKEN = 307,
|
||||
H5T_COMPOUND_TOKEN = 308,
|
||||
H5T_ENUM_TOKEN = 309,
|
||||
H5T_ARRAY_TOKEN = 310,
|
||||
H5T_VLEN_TOKEN = 311,
|
||||
STRING = 312,
|
||||
NUMBER = 313
|
||||
};
|
||||
enum yytokentype
|
||||
{
|
||||
H5T_STD_I8BE_TOKEN = 258,
|
||||
H5T_STD_I8LE_TOKEN = 259,
|
||||
H5T_STD_I16BE_TOKEN = 260,
|
||||
H5T_STD_I16LE_TOKEN = 261,
|
||||
H5T_STD_I32BE_TOKEN = 262,
|
||||
H5T_STD_I32LE_TOKEN = 263,
|
||||
H5T_STD_I64BE_TOKEN = 264,
|
||||
H5T_STD_I64LE_TOKEN = 265,
|
||||
H5T_STD_U8BE_TOKEN = 266,
|
||||
H5T_STD_U8LE_TOKEN = 267,
|
||||
H5T_STD_U16BE_TOKEN = 268,
|
||||
H5T_STD_U16LE_TOKEN = 269,
|
||||
H5T_STD_U32BE_TOKEN = 270,
|
||||
H5T_STD_U32LE_TOKEN = 271,
|
||||
H5T_STD_U64BE_TOKEN = 272,
|
||||
H5T_STD_U64LE_TOKEN = 273,
|
||||
H5T_NATIVE_CHAR_TOKEN = 274,
|
||||
H5T_NATIVE_SCHAR_TOKEN = 275,
|
||||
H5T_NATIVE_UCHAR_TOKEN = 276,
|
||||
H5T_NATIVE_SHORT_TOKEN = 277,
|
||||
H5T_NATIVE_USHORT_TOKEN = 278,
|
||||
H5T_NATIVE_INT_TOKEN = 279,
|
||||
H5T_NATIVE_UINT_TOKEN = 280,
|
||||
H5T_NATIVE_LONG_TOKEN = 281,
|
||||
H5T_NATIVE_ULONG_TOKEN = 282,
|
||||
H5T_NATIVE_LLONG_TOKEN = 283,
|
||||
H5T_NATIVE_ULLONG_TOKEN = 284,
|
||||
H5T_IEEE_F32BE_TOKEN = 285,
|
||||
H5T_IEEE_F32LE_TOKEN = 286,
|
||||
H5T_IEEE_F64BE_TOKEN = 287,
|
||||
H5T_IEEE_F64LE_TOKEN = 288,
|
||||
H5T_NATIVE_FLOAT_TOKEN = 289,
|
||||
H5T_NATIVE_DOUBLE_TOKEN = 290,
|
||||
H5T_NATIVE_LDOUBLE_TOKEN = 291,
|
||||
H5T_STRING_TOKEN = 292,
|
||||
STRSIZE_TOKEN = 293,
|
||||
STRPAD_TOKEN = 294,
|
||||
CSET_TOKEN = 295,
|
||||
CTYPE_TOKEN = 296,
|
||||
H5T_VARIABLE_TOKEN = 297,
|
||||
H5T_STR_NULLTERM_TOKEN = 298,
|
||||
H5T_STR_NULLPAD_TOKEN = 299,
|
||||
H5T_STR_SPACEPAD_TOKEN = 300,
|
||||
H5T_CSET_ASCII_TOKEN = 301,
|
||||
H5T_CSET_UTF8_TOKEN = 302,
|
||||
H5T_C_S1_TOKEN = 303,
|
||||
H5T_FORTRAN_S1_TOKEN = 304,
|
||||
H5T_OPAQUE_TOKEN = 305,
|
||||
OPQ_SIZE_TOKEN = 306,
|
||||
OPQ_TAG_TOKEN = 307,
|
||||
H5T_COMPOUND_TOKEN = 308,
|
||||
H5T_ENUM_TOKEN = 309,
|
||||
H5T_ARRAY_TOKEN = 310,
|
||||
H5T_VLEN_TOKEN = 311,
|
||||
STRING = 312,
|
||||
NUMBER = 313
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
/* Value type. */
|
||||
#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
|
||||
typedef union YYSTYPE
|
||||
|
||||
union YYSTYPE
|
||||
{
|
||||
/* Line 2058 of yacc.c */
|
||||
#line 72 "hl/src/H5LTparse.y"
|
||||
#line 72 "hl/src/H5LTparse.y" /* yacc.c:1909 */
|
||||
|
||||
int ival; /*for integer token*/
|
||||
char *sval; /*for name string*/
|
||||
hid_t hid; /*for hid_t token*/
|
||||
|
||||
#line 119 "hl/src/H5LTparse.h" /* yacc.c:1909 */
|
||||
};
|
||||
|
||||
/* Line 2058 of yacc.c */
|
||||
#line 122 "hl/src/H5LTparse.h"
|
||||
} YYSTYPE;
|
||||
typedef union YYSTYPE YYSTYPE;
|
||||
# define YYSTYPE_IS_TRIVIAL 1
|
||||
# define yystype YYSTYPE /* obsolescent; will be withdrawn */
|
||||
# define YYSTYPE_IS_DECLARED 1
|
||||
#endif
|
||||
|
||||
|
||||
extern YYSTYPE H5LTyylval;
|
||||
|
||||
#ifdef YYPARSE_PARAM
|
||||
#if defined __STDC__ || defined __cplusplus
|
||||
int H5LTyyparse (void *YYPARSE_PARAM);
|
||||
#else
|
||||
int H5LTyyparse ();
|
||||
#endif
|
||||
#else /* ! YYPARSE_PARAM */
|
||||
#if defined __STDC__ || defined __cplusplus
|
||||
int H5LTyyparse (void);
|
||||
#else
|
||||
int H5LTyyparse ();
|
||||
#endif
|
||||
#endif /* ! YYPARSE_PARAM */
|
||||
|
||||
#endif /* !YY_H5LTYY_HL_SRC_H5LTPARSE_H_INCLUDED */
|
||||
|
@ -11,8 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "H5PTprivate.h"
|
||||
#include "H5TBprivate.h"
|
||||
|
||||
@ -53,8 +51,8 @@ static herr_t H5PT_get_index(htbl_t *table_id, hsize_t *pt_index);
|
||||
*
|
||||
* Return: Success: table ID, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu (Author of H5PTcreate_fl)
|
||||
* James Laird, jlaird@ncsa.uiuc.edu (Author of H5PTcreate_fl)
|
||||
* Programmer: Nat Furrer (Author of H5PTcreate_fl)
|
||||
* James Laird (Author of H5PTcreate_fl)
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -182,8 +180,8 @@ error:
|
||||
*
|
||||
* Return: Success: table ID, Failure: Negative
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -301,8 +299,8 @@ error:
|
||||
*
|
||||
* Return: Success: table ID, Failure: Negative
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 10, 2004
|
||||
*
|
||||
@ -426,8 +424,8 @@ H5PT_free_id(void *id)
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 10, 2004
|
||||
*
|
||||
@ -475,8 +473,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: April 21, 2004
|
||||
*
|
||||
@ -530,8 +528,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -583,8 +581,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 10, 2004
|
||||
*
|
||||
@ -628,8 +626,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -680,8 +678,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -737,8 +735,8 @@ H5PT_get_index(htbl_t *table, hsize_t *pt_index)
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: April 23, 2004
|
||||
*
|
||||
@ -795,8 +793,8 @@ herr_t H5PTget_index(hid_t table_id, hsize_t *pt_index)
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -832,8 +830,8 @@ error:
|
||||
*
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 12, 2004
|
||||
*
|
||||
@ -861,8 +859,8 @@ herr_t H5PTis_valid(hid_t table_id)
|
||||
*
|
||||
* Return: True: 1, False: 0, Failure: FAIL
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: April 14, 2004
|
||||
*
|
||||
@ -910,8 +908,8 @@ error:
|
||||
* Return: Success: SUCCEED, Failure: FAIL
|
||||
* -2 if memory was reclaimed but another error occurred
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: April 12, 2004
|
||||
*
|
||||
|
@ -11,9 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "H5LTprivate.h"
|
||||
#include "H5TBprivate.h"
|
||||
|
||||
@ -55,7 +52,7 @@ static hid_t H5TB_create_type(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Date: January 17, 2001
|
||||
@ -275,7 +272,7 @@ out:
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmers:
|
||||
* Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Pedro Vicente
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
@ -345,7 +342,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -442,7 +439,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 21, 2001
|
||||
*
|
||||
@ -605,7 +602,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 21, 2001
|
||||
*
|
||||
@ -778,7 +775,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 20, 2001
|
||||
*
|
||||
@ -853,7 +850,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -923,7 +920,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -1086,7 +1083,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -1251,7 +1248,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 26, 2001
|
||||
*
|
||||
@ -1413,7 +1410,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 26, 2001
|
||||
*
|
||||
@ -1569,7 +1566,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: December 5, 2001
|
||||
*
|
||||
@ -1701,7 +1698,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: December 10, 2001
|
||||
*
|
||||
@ -2059,7 +2056,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 30, 2002
|
||||
*
|
||||
@ -2480,7 +2477,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 30, 2002
|
||||
*
|
||||
@ -2934,7 +2931,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 30, 2001
|
||||
*
|
||||
@ -2960,7 +2957,7 @@ herr_t H5TBAget_title(hid_t loc_id,
|
||||
*
|
||||
* Return: Success: TRUE/FALSE, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: January 30, 2002
|
||||
*
|
||||
@ -3033,7 +3030,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -3120,7 +3117,7 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -3240,7 +3237,7 @@ out:
|
||||
*
|
||||
* Return: Success: TRUE/FALSE, Failure: N/A
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: November 19, 2001
|
||||
*
|
||||
@ -3281,7 +3278,7 @@ hbool_t H5TB_find_field(const char *field, const char *field_list)
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: December 6, 2001
|
||||
*
|
||||
@ -3345,7 +3342,7 @@ out:
|
||||
*
|
||||
* Return: Success: the memory type ID, Failure: -1
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 31, 2004
|
||||
*
|
||||
@ -3445,8 +3442,8 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
@ -3512,8 +3509,8 @@ out:
|
||||
*
|
||||
* Return: Success: 0, Failure: -1
|
||||
*
|
||||
* Programmer: Nat Furrer, nfurrer@ncsa.uiuc.edu
|
||||
* James Laird, jlaird@ncsa.uiuc.edu
|
||||
* Programmer: Nat Furrer
|
||||
* James Laird
|
||||
*
|
||||
* Date: March 8, 2004
|
||||
*
|
||||
|
@ -23,8 +23,6 @@
|
||||
* in test_ds.c will read them.
|
||||
*/
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5DSpublic.h"
|
||||
#include "H5LTpublic.h"
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Friday, April 28, 2006
|
||||
*
|
||||
* Purpose: Test support stuff.
|
||||
|
@ -11,8 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5srcdir.h"
|
||||
#include "H5DSpublic.h"
|
||||
|
@ -11,10 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "h5hltest.h"
|
||||
#include "H5DOpublic.h"
|
||||
|
||||
|
@ -11,10 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <limits.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "h5hltest.h"
|
||||
#include "H5srcdir.h"
|
||||
#include "H5LTpublic.h"
|
||||
|
@ -11,11 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
#include <errno.h>
|
||||
#include <setjmp.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5srcdir.h"
|
||||
#include "H5LDpublic.h"
|
||||
|
@ -11,8 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5srcdir.h"
|
||||
#include "H5LTpublic.h"
|
||||
|
@ -11,8 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5PTpublic.h"
|
||||
#include "H5TBpublic.h"
|
||||
|
@ -11,8 +11,6 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "h5hltest.h"
|
||||
#include "H5srcdir.h"
|
||||
#include "H5TBpublic.h"
|
||||
|
@ -22,7 +22,7 @@
|
||||
*
|
||||
* Purpose: generate files for h52gif testing
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@hdfgroup.org
|
||||
* Programmer: Pedro Vicente
|
||||
*
|
||||
* Date: March 15, 2007
|
||||
*
|
||||
|
@ -6687,6 +6687,55 @@ public class H5 implements java.io.Serializable {
|
||||
public synchronized static native void H5Pset_evict_on_close(long fapl_id, boolean evict_on_close)
|
||||
throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5Pget_use_file_locking retrieves whether we are using file locking.
|
||||
*
|
||||
* @param fapl_id
|
||||
* IN: File access property list identifier
|
||||
*
|
||||
* @return indication if file locking is used.
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
*
|
||||
**/
|
||||
public synchronized static native boolean H5Pget_use_file_locking(long fapl_id)
|
||||
throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5Pget_use_file_locking retrieves whether we ignore file locks when they are disabled.
|
||||
*
|
||||
* @param fapl_id
|
||||
* IN: File access property list identifier
|
||||
*
|
||||
* @return indication if file locking is ignored.
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
*
|
||||
**/
|
||||
public synchronized static native boolean H5Pget_ignore_disabled_file_locking(long fapl_id)
|
||||
throws HDF5LibraryException;
|
||||
|
||||
/**
|
||||
* H5Pset_file_locking sets parameters related to file locking.
|
||||
*
|
||||
* @param fapl_id
|
||||
* IN: File access property list identifier
|
||||
*
|
||||
* @param use_file_locking
|
||||
* IN: Whether the library will use file locking when opening files (mainly for SWMR semantics).
|
||||
*
|
||||
* @param ignore_when_disabled
|
||||
* IN: Whether file locking will be ignored when disabled on a file system (useful for Lustre).
|
||||
*
|
||||
* @exception HDF5LibraryException
|
||||
* - Error from the HDF-5 Library.
|
||||
*
|
||||
**/
|
||||
public synchronized static native void H5Pset_file_locking(long fapl_id, boolean use_file_locking, boolean ignore_when_disabled)
|
||||
throws HDF5LibraryException;
|
||||
|
||||
// ///// unimplemented /////
|
||||
// herr_t H5Pset_vol(hid_t plist_id, hid_t new_vol_id, const void *new_vol_info);
|
||||
// herr_t H5Pget_vol_id(hid_t plist_id, hid_t *vol_id);
|
||||
|
@ -1375,6 +1375,78 @@ done:
|
||||
return bval;
|
||||
} /* end Java_hdf_hdf5lib_H5_H5Pget_1evict_1on_1close */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pset_file_locking
|
||||
* Signature: (JZZ)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pset_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id, jboolean use_file_locking, jboolean ignore_when_disabled)
|
||||
{
|
||||
hbool_t use_file_locking_val = TRUE;
|
||||
hbool_t ignore_when_disabled_val = TRUE;
|
||||
|
||||
UNUSED(clss);
|
||||
|
||||
use_file_locking_val = (use_file_locking == JNI_TRUE) ? TRUE : FALSE;
|
||||
ignore_when_disabled_val = (ignore_when_disabled == JNI_TRUE) ? TRUE : FALSE;
|
||||
|
||||
if (H5Pset_file_locking((hid_t)fapl_id, use_file_locking_val, ignore_when_disabled_val) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
done:
|
||||
return;
|
||||
} /* end Java_hdf_hdf5lib_H5_H5Pset_1file_1locking */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pget_use_file_locking
|
||||
* Signature: (J)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pget_1use_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id)
|
||||
{
|
||||
hbool_t use_file_locking_val = TRUE;
|
||||
hbool_t unused = TRUE;
|
||||
jboolean bval = JNI_FALSE;
|
||||
|
||||
UNUSED(clss);
|
||||
|
||||
if (H5Pget_file_locking((hid_t)fapl_id, &use_file_locking_val, &unused) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
bval = (use_file_locking_val == TRUE) ? JNI_TRUE : JNI_FALSE;
|
||||
|
||||
done:
|
||||
return bval;
|
||||
} /* end Java_hdf_hdf5lib_H5_H5Pget_1use_1file_1locking */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pget_ignore_disabled_file_locking
|
||||
* Signature: (J)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pget_1ignore_1disabled_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id)
|
||||
{
|
||||
hbool_t ignore_when_disabled_val = TRUE;
|
||||
hbool_t unused = TRUE;
|
||||
jboolean bval = JNI_FALSE;
|
||||
|
||||
UNUSED(clss);
|
||||
|
||||
if (H5Pget_file_locking((hid_t)fapl_id, &unused, &ignore_when_disabled_val) < 0)
|
||||
H5_LIBRARY_ERROR(ENVONLY);
|
||||
|
||||
bval = (ignore_when_disabled_val == TRUE) ? JNI_TRUE : JNI_FALSE;
|
||||
|
||||
done:
|
||||
return bval;
|
||||
} /* end Java_hdf_hdf5lib_H5_H5Pget_1ignore_1disabled_1file_1locking */
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pset_metadata_read_attempts
|
||||
|
@ -390,6 +390,33 @@ JNIEXPORT jboolean JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pget_1evict_1on_1close
|
||||
(JNIEnv *, jclass, jlong);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pset_file_locking
|
||||
* Signature: (JZZ)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pset_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id, jboolean use_file_locking, jboolean ignore_when_disabled);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pget_use_file_locking
|
||||
* Signature: (J)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pget_1use_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pget_ignore_disabled_file_locking
|
||||
* Signature: (J)Z
|
||||
*/
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_hdf_hdf5lib_H5_H5Pget_1ignore_1disabled_1file_1locking
|
||||
(JNIEnv *env, jclass clss, jlong fapl_id);
|
||||
|
||||
/*
|
||||
* Class: hdf_hdf5lib_H5
|
||||
* Method: H5Pset_metadata_read_attempts
|
||||
|
@ -1398,4 +1398,36 @@ public class TestH5Pfapl {
|
||||
fail("H5P_evict_on_close: " + err);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testH5P_file_locking() {
|
||||
boolean use_file_locking = false;
|
||||
boolean ignore_disabled_file_locking = false;
|
||||
try {
|
||||
// false values (usually not the default)
|
||||
H5.H5Pset_file_locking(fapl_id, false, false);
|
||||
use_file_locking = H5.H5Pget_use_file_locking(fapl_id);
|
||||
ignore_disabled_file_locking = H5.H5Pget_ignore_disabled_file_locking(fapl_id);
|
||||
assertFalse("H5P_file_locking", use_file_locking);
|
||||
assertFalse("H5P_file_locking", ignore_disabled_file_locking);
|
||||
|
||||
// true values (typically the default)
|
||||
H5.H5Pset_file_locking(fapl_id, true, true);
|
||||
use_file_locking = H5.H5Pget_use_file_locking(fapl_id);
|
||||
ignore_disabled_file_locking = H5.H5Pget_ignore_disabled_file_locking(fapl_id);
|
||||
assertTrue("H5P_file_locking", use_file_locking);
|
||||
assertTrue("H5P_file_locking", ignore_disabled_file_locking);
|
||||
}
|
||||
catch (HDF5PropertyListInterfaceException err) {
|
||||
// parallel is not supported
|
||||
if (err.getMinorErrorNumber() != HDF5Constants.H5E_UNSUPPORTED) {
|
||||
err.printStackTrace();
|
||||
fail("H5P_test_file_locking: " + err);
|
||||
}
|
||||
}
|
||||
catch (Throwable err) {
|
||||
err.printStackTrace();
|
||||
fail("H5P_test_file_locking: " + err);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -28,6 +28,7 @@ JUnit version 4.11
|
||||
.testH5Pset_elink_fapl
|
||||
.testH5P_hyper_vector_size
|
||||
.testH5P_gc_references
|
||||
.testH5P_file_locking
|
||||
.testH5P_family_offset
|
||||
.testH5P_fapl_core
|
||||
.testH5P_fapl_muti
|
||||
@ -37,5 +38,5 @@ JUnit version 4.11
|
||||
|
||||
Time: XXXX
|
||||
|
||||
OK (35 tests)
|
||||
OK (36 tests)
|
||||
|
||||
|
@ -330,9 +330,92 @@ New Features
|
||||
|
||||
(ADB - 2018/07/16)
|
||||
|
||||
- Add file locking configure and CMake options
|
||||
|
||||
HDF5 1.10.0 introduced a file locking scheme, primarily to help
|
||||
enforce SWMR setup. Formerly, the only user-level control of the scheme
|
||||
was via the HDF5_USE_FILE_LOCKING environment variable.
|
||||
|
||||
This change introduces configure-time options that control whether
|
||||
or not file locking will be used and whether or not the library
|
||||
ignores errors when locking has been disabled on the file system
|
||||
(useful on some HPC Lustre installations).
|
||||
|
||||
In both the Autotools and CMake, the settings have the effect of changing
|
||||
the default property list settings (see the H5Pset/get_file_locking()
|
||||
entry, below).
|
||||
|
||||
The yes/no/best-effort file locking configure setting has also been
|
||||
added to the libhdf5.settings file.
|
||||
|
||||
Autotools:
|
||||
|
||||
An --enable-file-locking=(yes|no|best-effort) option has been added.
|
||||
|
||||
yes: Use file locking.
|
||||
no: Do not use file locking.
|
||||
best-effort: Use file locking and ignore "disabled" errors.
|
||||
|
||||
CMake:
|
||||
|
||||
Two self-explanatory options have been added:
|
||||
|
||||
HDF5_USE_FILE_LOCKING
|
||||
HDF5_IGNORE_DISABLED_FILE_LOCKS
|
||||
|
||||
Setting both of these to ON is the equivalent to the Autotools'
|
||||
best-effort setting.
|
||||
|
||||
NOTE:
|
||||
The precedence order of the various file locking control mechanisms is:
|
||||
|
||||
1) HDF5_USE_FILE_LOCKING environment variable (highest)
|
||||
|
||||
2) H5Pset_file_locking()
|
||||
|
||||
3) configure/CMake options (which set the property list defaults)
|
||||
|
||||
4) library defaults (currently best-effort)
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
|
||||
Library:
|
||||
--------
|
||||
- Remove HDFS VFD stubs
|
||||
|
||||
The original implementation of the HDFS VFD included non-functional
|
||||
versions of the following public API calls when the HDFS VFD is
|
||||
not built as a part of the HDF5 library:
|
||||
|
||||
* H5FD_hdfs_init()
|
||||
* H5Pget_fapl_hdfs()
|
||||
* H5Pset_fapl_hdfs()
|
||||
|
||||
They will remain present in HDF5 1.10 and HDF5 1.12 releases
|
||||
for binary compatibility purposes but have been removed as of 1.14.0.
|
||||
|
||||
Note that this has nothing to do with the real HDFS VFD API calls
|
||||
that are fully functional when the HDFS VFD is configured and built.
|
||||
|
||||
We simply changed:
|
||||
|
||||
#ifdef LIBHDFS
|
||||
<real API call>
|
||||
#else
|
||||
<useless stub>
|
||||
#endif
|
||||
|
||||
to:
|
||||
|
||||
#ifdef LIBHDFS
|
||||
<real API call>
|
||||
#endif
|
||||
|
||||
Which is how the other optional VFDs are handled.
|
||||
|
||||
(DER - 2020/08/27)
|
||||
|
||||
- Add Mirror VFD
|
||||
|
||||
Use TCP/IP sockets to perform write-only (W/O) file I/O on a remote
|
||||
@ -507,6 +590,32 @@ New Features
|
||||
|
||||
(DER - 2020/03/18, HDFFV-11057)
|
||||
|
||||
- Add BEST_EFFORT value to HDF5_USE_FILE_LOCKING environment variable
|
||||
|
||||
This change adds a BEST_EFFORT to the TRUE/FALSE, 1/0 settings that
|
||||
were previously accepted. This option turns on file locking but
|
||||
ignores locking errors when the library detects that file locking
|
||||
has been disabled on a file system (useful on some HPC Lustre
|
||||
installations).
|
||||
|
||||
The capitalization of BEST_EFFORT is mandatory.
|
||||
|
||||
See the configure option discussion for HDFFV-11092 (above) for more
|
||||
information on the file locking feature and how it's controlled.
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
|
||||
- Add H5Pset/get_file_locking() API calls
|
||||
|
||||
This change adds new API calls which can be used to set or get the
|
||||
file locking parameters. The single API call sets both the "use file
|
||||
locking" flag and the "ignore disabled file locking" flag.
|
||||
|
||||
See the configure option discussion for HDFFV-11092 (above) for more
|
||||
information on the file locking feature and how it's controlled.
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
Parallel Library:
|
||||
-----------------
|
||||
@ -537,11 +646,21 @@ New Features
|
||||
|
||||
(MSB, 2019/01/08, HDFFV-10443)
|
||||
|
||||
- Add wrappers for H5Pset/get_file_locking() API calls
|
||||
|
||||
h5pget_file_locking_f()
|
||||
h5pset_file_locking_f()
|
||||
|
||||
See the configure option discussion for HDFFV-11092 (above) for more
|
||||
information on the file locking feature and how it's controlled.
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
C++ Library:
|
||||
------------
|
||||
- Added new wrappers for H5Pset/get_create_intermediate_group()
|
||||
LinkCreatPropList::setCreateIntermediateGroup()
|
||||
LinkCreatPropList::getCreateIntermediateGroup()
|
||||
LinkCreatPropList::setCreateIntermediateGroup()
|
||||
|
||||
(BMR - 2019/04/22, HDFFV-10622)
|
||||
|
||||
@ -550,6 +669,16 @@ New Features
|
||||
|
||||
(BMR - 2019/02/14, HDFFV-10532)
|
||||
|
||||
- Add wrappers for H5Pset/get_file_locking() API calls
|
||||
|
||||
FileAccPropList::setFileLocking()
|
||||
FileAccPropList::getFileLocking()
|
||||
|
||||
See the configure option discussion for HDFFV-11092 (above) for more
|
||||
information on the file locking feature and how it's controlled.
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
|
||||
Java Library:
|
||||
----------------
|
||||
@ -587,9 +716,34 @@ New Features
|
||||
|
||||
(DER - 2018/12/08, HDFFV-10252)
|
||||
|
||||
- Add wrappers for H5Pset/get_file_locking() API calls
|
||||
|
||||
H5Pset_file_locking()
|
||||
H5Pget_use_file_locking()
|
||||
H5Pget_ignore_disabled_file_locking()
|
||||
|
||||
Unlike the C++ and Fortran wrappers, there are separate getters for the
|
||||
two file locking settings, each of which returns a boolean value.
|
||||
|
||||
See the configure option discussion for HDFFV-11092 (above) for more
|
||||
information on the file locking feature and how it's controlled.
|
||||
|
||||
(DER - 2020/07/30, HDFFV-11092)
|
||||
|
||||
|
||||
Tools:
|
||||
------
|
||||
- h5repack added options to control how external links are handled.
|
||||
|
||||
Currently h5repack preserves external links and cannot copy and merge
|
||||
data from the external files. Two options, merge and prune, were added to
|
||||
control how to merge data from an external link into the resulting file.
|
||||
--merge Follow external soft link recursively and merge data.
|
||||
--prune Do not follow external soft links and remove link.
|
||||
--merge --prune Follow external link, merge data and remove dangling link.
|
||||
|
||||
(ADB - 2020/08/05, HDFFV-9984)
|
||||
|
||||
- h5repack was fixed to repack the reference attributes properly.
|
||||
The code line that checks if the update of reference inside a compound
|
||||
datatype is misplaced outside the code block loop that carries out the
|
||||
@ -633,7 +787,7 @@ New Features
|
||||
|
||||
High-Level APIs:
|
||||
---------------
|
||||
-
|
||||
-
|
||||
|
||||
C Packet Table API
|
||||
------------------
|
||||
@ -656,6 +810,25 @@ Bug Fixes since HDF5-1.10.3 release
|
||||
|
||||
Library
|
||||
-------
|
||||
- Creation of dataset with optional filter
|
||||
|
||||
When the combination of type, space, etc doesn't work for filter
|
||||
and the filter is optional, it was supposed to be skipped but it was
|
||||
not skipped and the creation failed.
|
||||
|
||||
Allowed the creation of the dataset in such situation.
|
||||
|
||||
(BMR - 2020/8/13, HDFFV-10933)
|
||||
|
||||
- Explicitly declared dlopen to use RTLD_LOCAL
|
||||
|
||||
dlopen documentation states that if neither RTLD_GLOBAL nor
|
||||
RTLD_LOCAL are specified, then the default behavior is unspecified.
|
||||
The default on linux is usually RTLD_LOCAL while macos will default
|
||||
to RTLD_GLOBAL.
|
||||
|
||||
(ADB - 2020/08/12, HDFFV-11127)
|
||||
|
||||
- Fixed issues CVE-2018-13870 and CVE-2018-13869
|
||||
|
||||
When a buffer overflow occurred because a name length was corrupted
|
||||
@ -665,7 +838,7 @@ Bug Fixes since HDF5-1.10.3 release
|
||||
locations to prevent the crashes and h5dump now simply fails with an
|
||||
error message when this error condition occurs.
|
||||
|
||||
(BMR - 2020/7/22, HDFFV-11120 and HDFFV-11121)
|
||||
(BMR - 2020/07/22, HDFFV-11120 and HDFFV-11121)
|
||||
|
||||
- Fixed the segmentation fault when reading attributes with multiple threads
|
||||
|
||||
@ -1094,7 +1267,11 @@ Bug Fixes since HDF5-1.10.3 release
|
||||
|
||||
High-Level APIs:
|
||||
------
|
||||
-
|
||||
- The H5DSis_scale function was updated to return "not a dimension scale" (0)
|
||||
instead of failing (-1), when CLASS or DIMENSION_SCALE attributes are
|
||||
not written according to Dimension Scales Specification.
|
||||
|
||||
(EIP - 2020/08/12, HDFFV-10436)
|
||||
|
||||
Fortran High-Level APIs:
|
||||
------
|
||||
|
@ -839,6 +839,7 @@ set (H5_PRIVATE_HEADERS
|
||||
${HDF5_SRC_DIR}/H5FApkg.h
|
||||
${HDF5_SRC_DIR}/H5FAprivate.h
|
||||
|
||||
${HDF5_SRC_DIR}/H5FDmirror_priv.h
|
||||
${HDF5_SRC_DIR}/H5FDpkg.h
|
||||
${HDF5_SRC_DIR}/H5FDprivate.h
|
||||
|
||||
|
24
src/H5.c
24
src/H5.c
@ -50,9 +50,9 @@
|
||||
/********************/
|
||||
/* Local Prototypes */
|
||||
/********************/
|
||||
static void H5_debug_mask(const char*);
|
||||
static void H5__debug_mask(const char*);
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
static int H5_mpi_delete_cb(MPI_Comm comm, int keyval, void *attr_val, int *flag);
|
||||
static int H5__mpi_delete_cb(MPI_Comm comm, int keyval, void *attr_val, int *flag);
|
||||
#endif /*H5_HAVE_PARALLEL*/
|
||||
|
||||
/*********************/
|
||||
@ -139,7 +139,7 @@ H5_init_library(void)
|
||||
int key_val;
|
||||
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Comm_create_keyval(MPI_COMM_NULL_COPY_FN,
|
||||
(MPI_Comm_delete_attr_function *)H5_mpi_delete_cb,
|
||||
(MPI_Comm_delete_attr_function *)H5__mpi_delete_cb,
|
||||
&key_val, NULL)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Comm_create_keyval failed", mpi_code)
|
||||
|
||||
@ -219,10 +219,6 @@ H5_init_library(void)
|
||||
HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize vol interface")
|
||||
if(H5P_init() < 0)
|
||||
HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize property list interface")
|
||||
if(H5T_init() < 0)
|
||||
HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize datatype interface")
|
||||
if(H5D_init() < 0)
|
||||
HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize dataset interface")
|
||||
if(H5AC_init() < 0)
|
||||
HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize metadata caching interface")
|
||||
if(H5L_init() < 0)
|
||||
@ -235,8 +231,8 @@ H5_init_library(void)
|
||||
HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize vol interface")
|
||||
|
||||
/* Debugging? */
|
||||
H5_debug_mask("-all");
|
||||
H5_debug_mask(HDgetenv("HDF5_DEBUG"));
|
||||
H5__debug_mask("-all");
|
||||
H5__debug_mask(HDgetenv("HDF5_DEBUG"));
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
@ -639,7 +635,7 @@ done:
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5_debug_mask
|
||||
* Function: H5__debug_mask
|
||||
*
|
||||
* Purpose: Set runtime debugging flags according to the string S. The
|
||||
* string should contain file numbers and package names
|
||||
@ -662,7 +658,7 @@ done:
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static void
|
||||
H5_debug_mask(const char *s)
|
||||
H5__debug_mask(const char *s)
|
||||
{
|
||||
FILE *stream = stderr;
|
||||
char pkg_name[32], *rest;
|
||||
@ -738,12 +734,12 @@ H5_debug_mask(const char *s)
|
||||
|
||||
return;
|
||||
|
||||
} /* end H5_debug_mask() */
|
||||
} /* end H5__debug_mask() */
|
||||
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5_mpi_delete_cb
|
||||
* Function: H5__mpi_delete_cb
|
||||
*
|
||||
* Purpose: Callback attribute on MPI_COMM_SELF to terminate the HDF5
|
||||
* library when the communicator is destroyed, i.e. on MPI_Finalize.
|
||||
@ -752,7 +748,7 @@ H5_debug_mask(const char *s)
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static int H5_mpi_delete_cb(MPI_Comm H5_ATTR_UNUSED comm, int H5_ATTR_UNUSED keyval, void H5_ATTR_UNUSED *attr_val, int H5_ATTR_UNUSED *flag)
|
||||
static int H5__mpi_delete_cb(MPI_Comm H5_ATTR_UNUSED comm, int H5_ATTR_UNUSED keyval, void H5_ATTR_UNUSED *attr_val, int H5_ATTR_UNUSED *flag)
|
||||
{
|
||||
H5_term_library();
|
||||
return MPI_SUCCESS;
|
||||
|
37
src/H5A.c
37
src/H5A.c
@ -313,7 +313,7 @@ H5Acreate2(hid_t loc_id, const char *attr_name, hid_t type_id, hid_t space_id,
|
||||
|
||||
/* Register the new attribute and get an ID for it */
|
||||
if((ret_value = H5VL_register(H5I_ATTR, attr, vol_obj->connector, TRUE)) < 0)
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize attribute handle")
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register attribute for ID")
|
||||
|
||||
done:
|
||||
/* Cleanup on failure */
|
||||
@ -403,7 +403,7 @@ H5Acreate_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
|
||||
|
||||
/* Register the new attribute and get an ID for it */
|
||||
if((ret_value = H5VL_register(H5I_ATTR, attr, vol_obj->connector, TRUE)) < 0)
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize attribute handle")
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register attribute for ID")
|
||||
|
||||
done:
|
||||
/* Cleanup on failure */
|
||||
@ -471,7 +471,7 @@ H5Aopen(hid_t loc_id, const char *attr_name, hid_t aapl_id)
|
||||
|
||||
/* Register the attribute and get an ID for it */
|
||||
if((ret_value = H5VL_register(H5I_ATTR, attr, vol_obj->connector, TRUE)) < 0)
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to atomize attribute handle")
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register attribute for ID")
|
||||
|
||||
done:
|
||||
/* Cleanup on failure */
|
||||
@ -1028,7 +1028,7 @@ H5Aget_info(hid_t attr_id, H5A_info_t *ainfo)
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE2("e", "i*x", attr_id, ainfo);
|
||||
|
||||
/* Check arguments */
|
||||
/* Check args */
|
||||
if(NULL == (vol_obj = (H5VL_object_t *)H5I_object_verify(attr_id, H5I_ATTR)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not an attribute")
|
||||
if(!ainfo)
|
||||
@ -1170,7 +1170,8 @@ done:
|
||||
*
|
||||
* Purpose: Rename an attribute
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
* Return: Success: Non-negative
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Raymond Lu
|
||||
* October 23, 2002
|
||||
@ -1185,7 +1186,7 @@ H5Arename(hid_t loc_id, const char *old_name, const char *new_name)
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE3("e", "i*s*s", loc_id, old_name, new_name);
|
||||
|
||||
/* check arguments */
|
||||
/* Check arguments */
|
||||
if(H5I_ATTR == H5I_get_type(loc_id))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "location is not valid for an attribute")
|
||||
if(!old_name)
|
||||
@ -1205,7 +1206,6 @@ H5Arename(hid_t loc_id, const char *old_name, const char *new_name)
|
||||
loc_params.type = H5VL_OBJECT_BY_SELF;
|
||||
loc_params.obj_type = H5I_get_type(loc_id);
|
||||
|
||||
/* Get the location object */
|
||||
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid location identifier")
|
||||
|
||||
@ -1228,7 +1228,8 @@ done:
|
||||
*
|
||||
* Purpose: Rename an attribute
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
* Return: Success: Non-negative
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* February 20, 2007
|
||||
@ -1330,7 +1331,7 @@ H5Aiterate2(hid_t loc_id, H5_index_t idx_type, H5_iter_order_t order,
|
||||
{
|
||||
H5VL_object_t *vol_obj = NULL; /* object of loc_id */
|
||||
H5VL_loc_params_t loc_params;
|
||||
herr_t ret_value; /* Return value */
|
||||
herr_t ret_value; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE6("e", "iIiIo*hx*x", loc_id, idx_type, order, idx, op, op_data);
|
||||
@ -1407,15 +1408,15 @@ H5Aiterate_by_name(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
|
||||
H5_iter_order_t order, hsize_t *idx, H5A_operator2_t op, void *op_data,
|
||||
hid_t lapl_id)
|
||||
{
|
||||
H5VL_object_t *vol_obj = NULL; /* object of loc_id */
|
||||
H5VL_object_t *vol_obj = NULL; /* Object location */
|
||||
H5VL_loc_params_t loc_params;
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE8("e", "i*sIiIo*hx*xi", loc_id, obj_name, idx_type, order, idx, op,
|
||||
op_data, lapl_id);
|
||||
|
||||
/* check arguments */
|
||||
/* Check arguments */
|
||||
if(H5I_ATTR == H5I_get_type(loc_id))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "location is not valid for an attribute")
|
||||
if(!obj_name || !*obj_name)
|
||||
@ -1466,7 +1467,7 @@ H5Adelete(hid_t loc_id, const char *name)
|
||||
{
|
||||
H5VL_object_t *vol_obj = NULL;
|
||||
H5VL_loc_params_t loc_params;
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE2("e", "i*s", loc_id, name);
|
||||
@ -1522,7 +1523,7 @@ H5Adelete_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
|
||||
{
|
||||
H5VL_object_t *vol_obj;
|
||||
H5VL_loc_params_t loc_params;
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE4("e", "i*s*si", loc_id, obj_name, attr_name, lapl_id);
|
||||
@ -1588,7 +1589,7 @@ H5Adelete_by_idx(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
|
||||
{
|
||||
H5VL_object_t *vol_obj;
|
||||
H5VL_loc_params_t loc_params;
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE6("e", "i*sIiIohi", loc_id, obj_name, idx_type, order, n, lapl_id);
|
||||
@ -1619,7 +1620,7 @@ H5Adelete_by_idx(hid_t loc_id, const char *obj_name, H5_index_t idx_type,
|
||||
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "invalid object identifier")
|
||||
|
||||
/* Delete the attribute through the VOL */
|
||||
/* Delete the attribute */
|
||||
if(H5VL_attr_specific(vol_obj, &loc_params, H5VL_ATTR_DELETE, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL, NULL) < 0)
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTDELETE, FAIL, "unable to delete attribute")
|
||||
|
||||
@ -1679,7 +1680,7 @@ H5Aexists(hid_t obj_id, const char *attr_name)
|
||||
{
|
||||
H5VL_object_t *vol_obj;
|
||||
H5VL_loc_params_t loc_params;
|
||||
htri_t ret_value; /* Return value */
|
||||
htri_t ret_value; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE2("t", "i*s", obj_id, attr_name);
|
||||
@ -1725,7 +1726,7 @@ H5Aexists_by_name(hid_t loc_id, const char *obj_name, const char *attr_name,
|
||||
{
|
||||
H5VL_object_t *vol_obj;
|
||||
H5VL_loc_params_t loc_params;
|
||||
htri_t ret_value; /* Return value */
|
||||
htri_t ret_value; /* Return value */
|
||||
|
||||
FUNC_ENTER_API(FAIL)
|
||||
H5TRACE4("t", "i*s*si", loc_id, obj_name, attr_name, lapl_id);
|
||||
|
351
src/H5AC.c
351
src/H5AC.c
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5AC.c
|
||||
* Jul 9 1997
|
||||
* Robb Matzke <matzke@llnl.gov>
|
||||
* Robb Matzke
|
||||
*
|
||||
* Purpose: Functions in this file implement a cache for
|
||||
* things which exist on disk. All "things" associated
|
||||
@ -138,10 +138,10 @@ static const H5AC_class_t *const H5AC_class_s[] = {
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5AC_init
|
||||
*
|
||||
* Purpose: Initialize the interface from some other layer.
|
||||
* Purpose: Initialize the interface from some other layer.
|
||||
*
|
||||
* Return: Success: non-negative
|
||||
* Failure: negative
|
||||
* Return: Success: non-negative
|
||||
* Failure: negative
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Saturday, January 18, 2003
|
||||
@ -162,7 +162,7 @@ done:
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function H5AC__init_package
|
||||
* Function: H5AC__init_package
|
||||
*
|
||||
* Purpose: Initialize interface-specific information
|
||||
*
|
||||
@ -202,9 +202,9 @@ H5AC__init_package(void)
|
||||
*
|
||||
* Purpose: Terminate this interface.
|
||||
*
|
||||
* Return: Success: Positive if anything was done that might
|
||||
* affect other interfaces; zero otherwise.
|
||||
* Failure: Negative.
|
||||
* Return: Success: Positive if anything was done that might
|
||||
* affect other interfaces; zero otherwise.
|
||||
* Failure: Negative.
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Thursday, July 18, 2002
|
||||
@ -239,8 +239,6 @@ H5AC_term_package(void)
|
||||
*
|
||||
* Programmer: John Mainzer, 1/10/17
|
||||
*
|
||||
* Changes: None.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
hbool_t
|
||||
@ -275,7 +273,6 @@ H5AC_cache_image_pending(const H5F_t *f)
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jul 9 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -284,7 +281,7 @@ herr_t
|
||||
H5AC_create(const H5F_t *f, H5AC_cache_config_t *config_ptr, H5AC_cache_image_config_t * image_config_ptr)
|
||||
{
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
char prefix[H5C__PREFIX_LEN] = "";
|
||||
char prefix[H5C__PREFIX_LEN] = "";
|
||||
H5AC_aux_t * aux_ptr = NULL;
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
struct H5C_cache_image_ctl_t int_ci_config = H5C__DEFAULT_CACHE_IMAGE_CTL;
|
||||
@ -469,9 +466,16 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jul 9 1997
|
||||
*
|
||||
* Changes:
|
||||
*
|
||||
* In the parallel case, added code to setup the MDC slist
|
||||
* before the call to H5AC__flush_entries() and take it down
|
||||
* afterwards.
|
||||
*
|
||||
* JRM -- 7/29/20
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
@ -497,58 +501,115 @@ H5AC_dest(H5F_t *f)
|
||||
#endif /* H5AC_DUMP_STATS_ON_CLOSE */
|
||||
|
||||
/* Check if log messages are being emitted */
|
||||
if(H5C_get_logging_status(f->shared->cache, &log_enabled, &curr_logging) < 0)
|
||||
if(H5C_get_logging_status(f->shared->cache,
|
||||
&log_enabled, &curr_logging) < 0)
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to get logging status")
|
||||
if(log_enabled && curr_logging)
|
||||
if(log_enabled && curr_logging) {
|
||||
|
||||
if(H5C_log_write_destroy_cache_msg(f->shared->cache) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, \
|
||||
"unable to emit log message")
|
||||
}
|
||||
|
||||
/* Tear down logging */
|
||||
if(log_enabled)
|
||||
if(log_enabled) {
|
||||
|
||||
if(H5C_log_tear_down(f->shared->cache) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "mdc logging tear-down failed")
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, \
|
||||
"mdc logging tear-down failed")
|
||||
}
|
||||
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
|
||||
/* destroying the cache, so clear all collective entries */
|
||||
if(H5C_clear_coll_entries(f->shared->cache, FALSE) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTGET, FAIL, "H5C_clear_coll_entries() failed")
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTGET, FAIL, \
|
||||
"H5C_clear_coll_entries() failed")
|
||||
|
||||
aux_ptr = (H5AC_aux_t *)H5C_get_aux_ptr(f->shared->cache);
|
||||
if(aux_ptr)
|
||||
|
||||
if(aux_ptr) {
|
||||
|
||||
/* Sanity check */
|
||||
HDassert(aux_ptr->magic == H5AC__H5AC_AUX_T_MAGIC);
|
||||
|
||||
|
||||
/* If the file was opened R/W, attempt to flush all entries
|
||||
* from rank 0 & Bcast clean list to other ranks.
|
||||
*
|
||||
* Must not flush in the R/O case, as this will trigger the
|
||||
* free space manager settle routines.
|
||||
*/
|
||||
if(H5F_ACC_RDWR & H5F_INTENT(f))
|
||||
if(H5AC__flush_entries(f) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "Can't flush")
|
||||
/* If the file was opened R/W, attempt to flush all entries
|
||||
* from rank 0 & Bcast clean list to other ranks.
|
||||
*
|
||||
* Must not flush in the R/O case, as this will trigger the
|
||||
* free space manager settle routines.
|
||||
*
|
||||
* Must also enable the skip list before the call to
|
||||
* H5AC__flush_entries() and disable it afterwards, as the
|
||||
* skip list will be disabled after the previous flush.
|
||||
*
|
||||
* Note that H5C_dest() does slist setup and take down as well.
|
||||
* Unfortunately, we can't do the setup and take down just once,
|
||||
* as H5C_dest() is called directly in the test code.
|
||||
*
|
||||
* Fortunately, the cache should be clean or close to it at this
|
||||
* point, so the overhead should be minimal.
|
||||
*/
|
||||
if(H5F_ACC_RDWR & H5F_INTENT(f)) {
|
||||
|
||||
/* enable and load the slist */
|
||||
if ( H5C_set_slist_enabled(f->shared->cache, TRUE, FALSE) < 0 )
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, \
|
||||
"set slist enabled failed")
|
||||
|
||||
if(H5AC__flush_entries(f) < 0)
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "Can't flush")
|
||||
|
||||
/* disable the slist -- should be empty */
|
||||
if ( H5C_set_slist_enabled(f->shared->cache, FALSE, FALSE) < 0 )
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "disable slist failed")
|
||||
}
|
||||
}
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
|
||||
/* Destroy the cache */
|
||||
if(H5C_dest(f) < 0)
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTFREE, FAIL, "can't destroy cache")
|
||||
|
||||
f->shared->cache = NULL;
|
||||
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
|
||||
if(aux_ptr != NULL) {
|
||||
|
||||
if(aux_ptr->d_slist_ptr != NULL) {
|
||||
|
||||
HDassert(H5SL_count(aux_ptr->d_slist_ptr) == 0);
|
||||
H5SL_close(aux_ptr->d_slist_ptr);
|
||||
|
||||
} /* end if */
|
||||
|
||||
if(aux_ptr->c_slist_ptr != NULL) {
|
||||
|
||||
HDassert(H5SL_count(aux_ptr->c_slist_ptr) == 0);
|
||||
H5SL_close(aux_ptr->c_slist_ptr);
|
||||
|
||||
} /* end if */
|
||||
|
||||
if(aux_ptr->candidate_slist_ptr != NULL) {
|
||||
|
||||
HDassert(H5SL_count(aux_ptr->candidate_slist_ptr) == 0);
|
||||
H5SL_close(aux_ptr->candidate_slist_ptr);
|
||||
|
||||
} /* end if */
|
||||
|
||||
aux_ptr->magic = 0;
|
||||
aux_ptr = H5FL_FREE(H5AC_aux_t, aux_ptr);
|
||||
|
||||
} /* end if */
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
|
||||
@ -587,7 +648,6 @@ H5AC_evict(H5F_t *f)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTFREE, FAIL, "can't evict cache")
|
||||
|
||||
done:
|
||||
|
||||
/* If currently logging, generate a message */
|
||||
if(f->shared->cache->log_info->logging)
|
||||
if(H5C_log_write_evict_cache_msg(f->shared->cache, ret_value) < 0)
|
||||
@ -655,7 +715,6 @@ done:
|
||||
* request to flush all items and something was protected.
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jul 9 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -742,20 +801,20 @@ H5AC_get_entry_status(const H5F_t *f, haddr_t addr, unsigned *status)
|
||||
|
||||
if(in_cache) {
|
||||
*status |= H5AC_ES__IN_CACHE;
|
||||
if(is_dirty)
|
||||
*status |= H5AC_ES__IS_DIRTY;
|
||||
if(is_protected)
|
||||
*status |= H5AC_ES__IS_PROTECTED;
|
||||
if(is_pinned)
|
||||
*status |= H5AC_ES__IS_PINNED;
|
||||
if(is_corked)
|
||||
*status |= H5AC_ES__IS_CORKED;
|
||||
if(is_flush_dep_parent)
|
||||
*status |= H5AC_ES__IS_FLUSH_DEP_PARENT;
|
||||
if(is_flush_dep_child)
|
||||
*status |= H5AC_ES__IS_FLUSH_DEP_CHILD;
|
||||
if(image_is_up_to_date)
|
||||
*status |= H5AC_ES__IMAGE_IS_UP_TO_DATE;
|
||||
if(is_dirty)
|
||||
*status |= H5AC_ES__IS_DIRTY;
|
||||
if(is_protected)
|
||||
*status |= H5AC_ES__IS_PROTECTED;
|
||||
if(is_pinned)
|
||||
*status |= H5AC_ES__IS_PINNED;
|
||||
if(is_corked)
|
||||
*status |= H5AC_ES__IS_CORKED;
|
||||
if(is_flush_dep_parent)
|
||||
*status |= H5AC_ES__IS_FLUSH_DEP_PARENT;
|
||||
if(is_flush_dep_child)
|
||||
*status |= H5AC_ES__IS_FLUSH_DEP_CHILD;
|
||||
if(image_is_up_to_date)
|
||||
*status |= H5AC_ES__IMAGE_IS_UP_TO_DATE;
|
||||
} /* end if */
|
||||
else
|
||||
*status = 0;
|
||||
@ -775,7 +834,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jul 9 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -918,9 +976,10 @@ H5AC_mark_entry_dirty(void *thing)
|
||||
|
||||
done:
|
||||
/* If currently logging, generate a message */
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_mark_entry_dirty_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
if(cache_ptr != NULL && cache_ptr->log_info != NULL)
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_mark_entry_dirty_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC_mark_entry_dirty() */
|
||||
@ -971,9 +1030,10 @@ H5AC_mark_entry_clean(void *thing)
|
||||
|
||||
done:
|
||||
/* If currently logging, generate a message */
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_mark_entry_clean_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
if(cache_ptr != NULL && cache_ptr->log_info != NULL)
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_mark_entry_clean_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC_mark_entry_clean() */
|
||||
@ -1013,9 +1073,10 @@ H5AC_mark_entry_unserialized(void *thing)
|
||||
|
||||
done:
|
||||
/* If currently logging, generate a message */
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_mark_unserialized_entry_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
if(cache_ptr != NULL && cache_ptr->log_info != NULL)
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_mark_unserialized_entry_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC_mark_entry_unserialized() */
|
||||
@ -1054,9 +1115,10 @@ H5AC_mark_entry_serialized(void *thing)
|
||||
|
||||
done:
|
||||
/* If currently logging, generate a message */
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_mark_serialized_entry_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
if(cache_ptr != NULL && cache_ptr->log_info != NULL)
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_mark_serialized_entry_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC_mark_entry_serialized() */
|
||||
@ -1071,7 +1133,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jul 9 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1156,9 +1217,10 @@ H5AC_pin_protected_entry(void *thing)
|
||||
|
||||
done:
|
||||
/* If currently logging, generate a message */
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_pin_entry_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
if(cache_ptr != NULL && cache_ptr->log_info != NULL)
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_pin_entry_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC_pin_protected_entry() */
|
||||
@ -1203,6 +1265,109 @@ done:
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* Function: H5AC_prep_for_file_flush
|
||||
*
|
||||
* Purpose: This function should be called just prior to the first
|
||||
* call to H5AC_flush() during a file flush.
|
||||
*
|
||||
* Its purpose is to handly any setup required prior to
|
||||
* metadata cache flush.
|
||||
*
|
||||
* Initially, this means setting up the slist prior to the
|
||||
* flush. We do this in a seperate call because
|
||||
* H5F__flush_phase2() make repeated calls to H5AC_flush().
|
||||
* Handling this detail in separate calls allows us to avoid
|
||||
* the overhead of setting up and taking down the skip list
|
||||
* repeatedly.
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: John Mainzer
|
||||
* 5/5/20
|
||||
*
|
||||
* Changes: None.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5AC_prep_for_file_flush(H5F_t *f)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(FAIL)
|
||||
|
||||
/* Sanity checks */
|
||||
HDassert(f);
|
||||
HDassert(f->shared);
|
||||
HDassert(f->shared->cache);
|
||||
|
||||
if ( H5C_set_slist_enabled(f->shared->cache, TRUE, FALSE) < 0)
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "slist enabled failed")
|
||||
|
||||
done:
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
||||
} /* H5AC_prep_for_file_flush() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* Function: H5AC_secure_from_file_flush
|
||||
*
|
||||
* Purpose: This function should be called just after the last
|
||||
* call to H5AC_flush() during a file flush.
|
||||
*
|
||||
* Its purpose is to perform any necessary cleanup after the
|
||||
* metadata cache flush.
|
||||
*
|
||||
* The objective of the call is to allow the metadata cache
|
||||
* to do any necessary necessary cleanup work after a cache
|
||||
* flush.
|
||||
*
|
||||
* Initially, this means taking down the slist after the
|
||||
* flush. We do this in a seperate call because
|
||||
* H5F__flush_phase2() make repeated calls to H5AC_flush().
|
||||
* Handling this detail in separate calls allows us to avoid
|
||||
* the overhead of setting up and taking down the skip list
|
||||
* repeatedly.
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: John Mainzer
|
||||
* 5/5/20
|
||||
*
|
||||
* Changes: None.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5AC_secure_from_file_flush(H5F_t *f)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(FAIL)
|
||||
|
||||
/* Sanity checks */
|
||||
HDassert(f);
|
||||
HDassert(f->shared);
|
||||
HDassert(f->shared->cache);
|
||||
|
||||
if ( H5C_set_slist_enabled(f->shared->cache, FALSE, FALSE) < 0)
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "slist enabled failed")
|
||||
|
||||
done:
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
||||
} /* H5AC_secure_from_file_flush() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* Function: H5AC_create_flush_dependency()
|
||||
*
|
||||
* Purpose: Create a flush dependency between two entries in the metadata
|
||||
@ -1238,9 +1403,10 @@ H5AC_create_flush_dependency(void * parent_thing, void * child_thing)
|
||||
|
||||
done:
|
||||
/* If currently logging, generate a message */
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_create_fd_msg(cache_ptr, (H5AC_info_t *)parent_thing, (H5AC_info_t *)child_thing, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
if(cache_ptr != NULL && cache_ptr->log_info != NULL)
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_create_fd_msg(cache_ptr, (H5AC_info_t *)parent_thing, (H5AC_info_t *)child_thing, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC_create_flush_dependency() */
|
||||
@ -1265,7 +1431,6 @@ done:
|
||||
* Failure: NULL
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Sep 2 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1373,9 +1538,10 @@ H5AC_resize_entry(void *thing, size_t new_size)
|
||||
|
||||
done:
|
||||
/* If currently logging, generate a message */
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_resize_entry_msg(cache_ptr, entry_ptr, new_size, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
if(cache_ptr != NULL && cache_ptr->log_info != NULL)
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_resize_entry_msg(cache_ptr, entry_ptr, new_size, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC_resize_entry() */
|
||||
@ -1416,9 +1582,10 @@ H5AC_unpin_entry(void *thing)
|
||||
|
||||
done:
|
||||
/* If currently logging, generate a message */
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_unpin_entry_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
if(cache_ptr != NULL && cache_ptr->log_info != NULL)
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_unpin_entry_msg(cache_ptr, entry_ptr, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC_unpin_entry() */
|
||||
@ -1459,9 +1626,10 @@ H5AC_destroy_flush_dependency(void * parent_thing, void * child_thing)
|
||||
|
||||
done:
|
||||
/* If currently logging, generate a message */
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_destroy_fd_msg(cache_ptr, (H5AC_info_t *)parent_thing, (H5AC_info_t *)child_thing, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
if(cache_ptr != NULL && cache_ptr->log_info != NULL)
|
||||
if(cache_ptr->log_info->logging)
|
||||
if(H5C_log_write_destroy_fd_msg(cache_ptr, (H5AC_info_t *)parent_thing, (H5AC_info_t *)child_thing, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC_destroy_flush_dependency() */
|
||||
@ -1500,7 +1668,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Sep 2 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1509,8 +1676,8 @@ herr_t
|
||||
H5AC_unprotect(H5F_t *f, const H5AC_class_t *type, haddr_t addr, void *thing,
|
||||
unsigned flags)
|
||||
{
|
||||
hbool_t dirtied;
|
||||
hbool_t deleted;
|
||||
hbool_t dirtied;
|
||||
hbool_t deleted;
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
H5AC_aux_t * aux_ptr = NULL;
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
@ -1527,18 +1694,18 @@ H5AC_unprotect(H5F_t *f, const H5AC_class_t *type, haddr_t addr, void *thing,
|
||||
HDassert(type->image_len);
|
||||
HDassert(H5F_addr_defined(addr));
|
||||
HDassert(thing);
|
||||
HDassert( ((H5AC_info_t *)thing)->addr == addr );
|
||||
HDassert( ((H5AC_info_t *)thing)->type == type );
|
||||
HDassert(((H5AC_info_t *)thing)->addr == addr);
|
||||
HDassert(((H5AC_info_t *)thing)->type == type);
|
||||
|
||||
dirtied = (hbool_t)(((flags & H5AC__DIRTIED_FLAG) == H5AC__DIRTIED_FLAG) ||
|
||||
(((H5AC_info_t *)thing)->dirtied));
|
||||
(((H5AC_info_t *)thing)->dirtied));
|
||||
deleted = (hbool_t)((flags & H5C__DELETED_FLAG) == H5C__DELETED_FLAG);
|
||||
|
||||
/* Check if the size changed out from underneath us, if we're not deleting
|
||||
* the entry.
|
||||
*/
|
||||
if(dirtied && !deleted) {
|
||||
size_t curr_size = 0;
|
||||
size_t curr_size = 0;
|
||||
|
||||
if((type->image_len)(thing, &curr_size) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTGETSIZE, FAIL, "Can't get size of thing")
|
||||
@ -1625,7 +1792,7 @@ H5AC_get_cache_auto_resize_config(const H5AC_t *cache_ptr,
|
||||
if(internal_config.rpt_fcn == NULL)
|
||||
config_ptr->rpt_fcn_enabled = FALSE;
|
||||
else
|
||||
config_ptr->rpt_fcn_enabled = TRUE;
|
||||
config_ptr->rpt_fcn_enabled = TRUE;
|
||||
config_ptr->open_trace_file = FALSE;
|
||||
config_ptr->close_trace_file = FALSE;
|
||||
config_ptr->trace_file_name[0] = '\0';
|
||||
@ -1914,7 +2081,7 @@ H5AC_validate_config(H5AC_cache_config_t *config_ptr)
|
||||
|
||||
/* don't bother to test trace_file_name unless open_trace_file is TRUE */
|
||||
if(config_ptr->open_trace_file) {
|
||||
size_t name_len;
|
||||
size_t name_len;
|
||||
|
||||
/* Can't really test the trace_file_name field without trying to
|
||||
* open the file, so we will content ourselves with a couple of
|
||||
@ -2035,9 +2202,9 @@ H5_ATTR_UNUSED
|
||||
*f, hbool_t *write_permitted_ptr)
|
||||
{
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
H5AC_aux_t * aux_ptr = NULL;
|
||||
H5AC_aux_t * aux_ptr = NULL;
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
hbool_t write_permitted = TRUE;
|
||||
hbool_t write_permitted = TRUE;
|
||||
|
||||
FUNC_ENTER_STATIC_NOERR
|
||||
|
||||
@ -2534,8 +2701,8 @@ H5AC_set_ring(H5AC_ring_t ring, H5AC_ring_t *orig_ring)
|
||||
* Note that this function simply passes the call on to
|
||||
* the metadata cache proper, and returns the result.
|
||||
*
|
||||
* Return: Success: Non-negative
|
||||
* Failure: Negative
|
||||
* Return: Success: Non-negative
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* September 17, 2016
|
||||
@ -2637,9 +2804,10 @@ H5AC_remove_entry(void *_entry)
|
||||
|
||||
done:
|
||||
/* If currently logging, generate a message */
|
||||
if(cache->log_info->logging)
|
||||
if(H5C_log_write_remove_entry_msg(cache, entry, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
if(cache != NULL && cache->log_info != NULL)
|
||||
if(cache->log_info->logging)
|
||||
if(H5C_log_write_remove_entry_msg(cache, entry, ret_value) < 0)
|
||||
HDONE_ERROR(H5E_CACHE, H5E_LOGGING, FAIL, "unable to emit log message")
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC_remove_entry() */
|
||||
@ -2669,4 +2837,3 @@ H5AC_get_mdc_image_info(H5AC_t *cache_ptr, haddr_t *image_addr, hsize_t *image_l
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC_get_mdc_image_info() */
|
||||
|
||||
|
@ -270,10 +270,6 @@ H5AC_flush_dependency_exists(H5F_t *f, haddr_t parent_addr, haddr_t child_addr,
|
||||
*
|
||||
* Programmer: John Mainzer, 5/30/14
|
||||
*
|
||||
* Changes: None.
|
||||
*
|
||||
* JRM -- 9/17/16
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef NDEBUG
|
||||
@ -351,8 +347,6 @@ H5AC_get_serialization_in_progress(H5F_t *f)
|
||||
*
|
||||
* Programmer: John Mainzer, 6/18/16
|
||||
*
|
||||
* Changes: None.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef NDEBUG
|
||||
|
@ -11,7 +11,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Programmer: Quincey Koziol
|
||||
* Saturday, September 12, 2015
|
||||
*
|
||||
* Purpose: This file contains declarations which define macros for the
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5ACmpio.c
|
||||
* Jun 20 2015
|
||||
* Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Functions in this file implement support for parallel
|
||||
* I/O cache functionality
|
||||
@ -791,7 +791,7 @@ H5AC__log_dirtied_entry(const H5AC_info_t *entry_ptr)
|
||||
else {
|
||||
aux_ptr->dirty_bytes += entry_ptr->size;
|
||||
#if H5AC_DEBUG_DIRTY_BYTES_CREATION
|
||||
aux_ptr->unprotect_dirty_bytes += entry_size;
|
||||
aux_ptr->unprotect_dirty_bytes += entry_ptr->size;
|
||||
aux_ptr->unprotect_dirty_bytes_updates += 1;
|
||||
#endif /* H5AC_DEBUG_DIRTY_BYTES_CREATION */
|
||||
} /* end else */
|
||||
@ -989,7 +989,7 @@ H5AC__log_inserted_entry(const H5AC_info_t *entry_ptr)
|
||||
aux_ptr->dirty_bytes += entry_ptr->size;
|
||||
|
||||
#if H5AC_DEBUG_DIRTY_BYTES_CREATION
|
||||
aux_ptr->insert_dirty_bytes += size;
|
||||
aux_ptr->insert_dirty_bytes += entry_ptr->size;
|
||||
aux_ptr->insert_dirty_bytes_updates += 1;
|
||||
#endif /* H5AC_DEBUG_DIRTY_BYTES_CREATION */
|
||||
|
||||
@ -1875,6 +1875,8 @@ done:
|
||||
* Programmer: John Mainzer
|
||||
* April 28, 2010
|
||||
*
|
||||
* Changes: None.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
@ -1894,7 +1896,8 @@ H5AC__rsp__p0_only__flush(H5F_t *f)
|
||||
aux_ptr = (H5AC_aux_t *)H5C_get_aux_ptr(cache_ptr);
|
||||
HDassert(aux_ptr != NULL);
|
||||
HDassert(aux_ptr->magic == H5AC__H5AC_AUX_T_MAGIC);
|
||||
HDassert(aux_ptr->metadata_write_strategy == H5AC_METADATA_WRITE_STRATEGY__PROCESS_0_ONLY);
|
||||
HDassert(aux_ptr->metadata_write_strategy == \
|
||||
H5AC_METADATA_WRITE_STRATEGY__PROCESS_0_ONLY);
|
||||
|
||||
/* To prevent "messages from the future" we must
|
||||
* synchronize all processes before we start the flush.
|
||||
@ -1903,9 +1906,12 @@ H5AC__rsp__p0_only__flush(H5F_t *f)
|
||||
* However, when flushing from within the close operation from a file,
|
||||
* it's possible to skip this barrier (on the second flush of the cache).
|
||||
*/
|
||||
if(!H5CX_get_mpi_file_flushing())
|
||||
if(MPI_SUCCESS != (mpi_result = MPI_Barrier(aux_ptr->mpi_comm)))
|
||||
if ( ! H5CX_get_mpi_file_flushing() ) {
|
||||
|
||||
if ( MPI_SUCCESS != (mpi_result = MPI_Barrier(aux_ptr->mpi_comm)) )
|
||||
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_result)
|
||||
}
|
||||
|
||||
/* Flush data to disk, from rank 0 process */
|
||||
if(aux_ptr->mpi_rank == 0) {
|
||||
@ -1921,23 +1927,30 @@ H5AC__rsp__p0_only__flush(H5F_t *f)
|
||||
aux_ptr->write_permitted = FALSE;
|
||||
|
||||
/* Check for error on the write operation */
|
||||
if(result < 0)
|
||||
if ( result < 0 )
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "Can't flush.")
|
||||
|
||||
/* this code exists primarily for the test bed -- it allows us to
|
||||
* enforce POSIX semantics on the server that pretends to be a
|
||||
* file system in our parallel tests.
|
||||
*/
|
||||
if(aux_ptr->write_done)
|
||||
if ( aux_ptr->write_done ) {
|
||||
|
||||
(aux_ptr->write_done)();
|
||||
}
|
||||
} /* end if */
|
||||
|
||||
/* Propagate cleaned entries to other ranks. */
|
||||
if(H5AC__propagate_flushed_and_still_clean_entries_list(f) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "Can't propagate clean entries list.")
|
||||
if ( H5AC__propagate_flushed_and_still_clean_entries_list(f) < 0 )
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, \
|
||||
"Can't propagate clean entries list.")
|
||||
|
||||
done:
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
||||
} /* H5AC__rsp__p0_only__flush() */
|
||||
|
||||
|
||||
@ -2104,16 +2117,22 @@ H5AC__run_sync_point(H5F_t *f, int sync_point_op)
|
||||
|
||||
/* Sanity checks */
|
||||
HDassert(f != NULL);
|
||||
|
||||
cache_ptr = f->shared->cache;
|
||||
|
||||
HDassert(cache_ptr != NULL);
|
||||
|
||||
aux_ptr = (H5AC_aux_t *)H5C_get_aux_ptr(cache_ptr);
|
||||
|
||||
HDassert(aux_ptr != NULL);
|
||||
HDassert(aux_ptr->magic == H5AC__H5AC_AUX_T_MAGIC);
|
||||
HDassert((sync_point_op == H5AC_SYNC_POINT_OP__FLUSH_TO_MIN_CLEAN) ||
|
||||
(sync_point_op == H5AC_METADATA_WRITE_STRATEGY__DISTRIBUTED));
|
||||
(sync_point_op == H5AC_METADATA_WRITE_STRATEGY__DISTRIBUTED));
|
||||
|
||||
|
||||
#if H5AC_DEBUG_DIRTY_BYTES_CREATION
|
||||
HDfprintf(stdout, "%d:H5AC_propagate...:%u: (u/uu/i/iu/r/ru) = %zu/%u/%zu/%u/%zu/%u\n",
|
||||
HDfprintf(stdout,
|
||||
"%d:H5AC_propagate...:%u: (u/uu/i/iu/r/ru) = %zu/%u/%zu/%u/%zu/%u\n",
|
||||
aux_ptr->mpi_rank,
|
||||
aux_ptr->dirty_bytes_propagations,
|
||||
aux_ptr->unprotect_dirty_bytes,
|
||||
@ -2188,6 +2207,7 @@ HDfprintf(stdout, "%d:H5AC_propagate...:%u: (u/uu/i/iu/r/ru) = %zu/%u/%zu/%u/%zu
|
||||
#endif /* H5AC_DEBUG_DIRTY_BYTES_CREATION */
|
||||
|
||||
done:
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5AC__run_sync_point() */
|
||||
|
||||
@ -2284,7 +2304,6 @@ H5AC__tidy_cache_0_lists(H5AC_t *cache_ptr, unsigned num_candidates,
|
||||
* request to flush all items and something was protected.
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Aug 22 2009
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5ACprivate.h
|
||||
* Jul 9 1997
|
||||
* Robb Matzke <matzke@llnl.gov>
|
||||
* Robb Matzke
|
||||
*
|
||||
* Purpose: Constants and typedefs available to the rest of the
|
||||
* library.
|
||||
@ -387,6 +387,8 @@ H5_DLL herr_t H5AC_insert_entry(H5F_t *f, const H5AC_class_t *type,
|
||||
haddr_t addr, void *thing, unsigned int flags);
|
||||
H5_DLL herr_t H5AC_pin_protected_entry(void *thing);
|
||||
H5_DLL herr_t H5AC_prep_for_file_close(H5F_t *f);
|
||||
H5_DLL herr_t H5AC_prep_for_file_flush(H5F_t *f);
|
||||
H5_DLL herr_t H5AC_secure_from_file_flush(H5F_t *f);
|
||||
H5_DLL herr_t H5AC_create_flush_dependency(void *parent_thing, void *child_thing);
|
||||
H5_DLL void * H5AC_protect(H5F_t *f, const H5AC_class_t *type, haddr_t addr,
|
||||
void *udata, unsigned flags);
|
||||
|
@ -15,12 +15,10 @@
|
||||
*
|
||||
* Created: H5ACpublic.h
|
||||
* Jul 10 1997
|
||||
* Robb Matzke <matzke@llnl.gov>
|
||||
* Robb Matzke
|
||||
*
|
||||
* Purpose: Public include file for cache functions.
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef _H5ACpublic_H
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5Abtree2.c
|
||||
* Dec 4 2006
|
||||
* Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: v2 B-tree callbacks for indexing attributes on objects
|
||||
*
|
||||
@ -152,7 +152,6 @@ const H5B2_class_t H5A_BT2_CORDER[1]={{ /* B-tree class information */
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 4 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5Adense.c
|
||||
* Dec 4 2006
|
||||
* Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Routines for operating on "dense" attribute storage
|
||||
* for an object.
|
||||
@ -171,7 +171,6 @@ typedef struct H5A_bt2_ud_rmbi_t {
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 4 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -210,9 +209,6 @@ H5A__dense_create(H5F_t *f, H5O_ainfo_t *ainfo)
|
||||
/* Retrieve the heap's address in the file */
|
||||
if(H5HF_get_heap_addr(fheap, &ainfo->fheap_addr) < 0)
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTGETSIZE, FAIL, "can't get fractal heap address")
|
||||
#ifdef QAK
|
||||
HDfprintf(stderr, "%s: ainfo->fheap_addr = %a\n", FUNC, ainfo->fheap_addr);
|
||||
#endif /* QAK */
|
||||
|
||||
#ifndef NDEBUG
|
||||
{
|
||||
@ -222,9 +218,6 @@ HDfprintf(stderr, "%s: ainfo->fheap_addr = %a\n", FUNC, ainfo->fheap_addr);
|
||||
if(H5HF_get_id_len(fheap, &fheap_id_len) < 0)
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTGETSIZE, FAIL, "can't get fractal heap ID length")
|
||||
HDassert(fheap_id_len == H5O_FHEAP_ID_LEN);
|
||||
#ifdef QAK
|
||||
HDfprintf(stderr, "%s: fheap_id_len = %Zu\n", FUNC, fheap_id_len);
|
||||
#endif /* QAK */
|
||||
}
|
||||
#endif /* NDEBUG */
|
||||
|
||||
@ -244,9 +237,6 @@ HDfprintf(stderr, "%s: fheap_id_len = %Zu\n", FUNC, fheap_id_len);
|
||||
/* Retrieve the v2 B-tree's address in the file */
|
||||
if(H5B2_get_addr(bt2_name, &ainfo->name_bt2_addr) < 0)
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't get v2 B-tree address for name index")
|
||||
#ifdef QAK
|
||||
HDfprintf(stderr, "%s: ainfo->name_bt2_addr = %a\n", FUNC, ainfo->name_bt2_addr);
|
||||
#endif /* QAK */
|
||||
|
||||
/* Check if we should create a creation order index v2 B-tree */
|
||||
if(ainfo->index_corder) {
|
||||
@ -265,9 +255,6 @@ HDfprintf(stderr, "%s: ainfo->name_bt2_addr = %a\n", FUNC, ainfo->name_bt2_addr)
|
||||
/* Retrieve the v2 B-tree's address in the file */
|
||||
if(H5B2_get_addr(bt2_corder, &ainfo->corder_bt2_addr) < 0)
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't get v2 B-tree address for creation order index")
|
||||
#ifdef QAK
|
||||
HDfprintf(stderr, "%s: ainfo->corder_bt2_addr = %a\n", FUNC, ainfo->corder_bt2_addr);
|
||||
#endif /* QAK */
|
||||
} /* end if */
|
||||
|
||||
done:
|
||||
@ -290,9 +277,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 11 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 11 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -351,9 +337,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 11 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 11 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -440,9 +425,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 4 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 4 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -598,7 +582,7 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Programmer: Quincey Koziol
|
||||
* Tuesday, February 20, 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -632,7 +616,7 @@ H5A__dense_write_bt2_cb2(void *_record, void *_op_data, hbool_t *changed)
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Programmer: Quincey Koziol
|
||||
* Tuesday, December 5, 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -743,9 +727,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 4 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 4 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -840,9 +823,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 5 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 5 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -883,9 +865,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Jan 3 2007
|
||||
* Programmer: Quincey Koziol
|
||||
* Jan 3 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1065,9 +1046,8 @@ done:
|
||||
*
|
||||
* Return: H5_ITER_ERROR/H5_ITER_CONT/H5_ITER_STOP
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 5 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 5 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1161,9 +1141,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 5 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 5 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1296,9 +1275,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 11 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 11 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1360,9 +1338,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 11 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 11 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1448,9 +1425,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Feb 14 2007
|
||||
* Programmer: Quincey Koziol
|
||||
* Feb 14 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1574,9 +1550,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Feb 14 2007
|
||||
* Programmer: Quincey Koziol
|
||||
* Feb 14 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1702,9 +1677,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 11 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 11 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1788,9 +1762,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Jan 3 2007
|
||||
* Programmer: Quincey Koziol
|
||||
* Jan 3 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1852,9 +1825,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 6 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 6 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5Adeprec.c
|
||||
* November 27 2006
|
||||
* Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Deprecated functions from the H5A interface. These
|
||||
* functions are here for compatibility purposes and may be
|
||||
|
212
src/H5Aint.c
212
src/H5Aint.c
@ -14,8 +14,8 @@
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* Created: H5Aint.c
|
||||
* Dec 18 2006
|
||||
* Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Dec 18 2006
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Internal routines for managing attributes.
|
||||
*
|
||||
@ -122,10 +122,10 @@ const unsigned H5O_attr_ver_bounds[] = {
|
||||
/* Local Variables */
|
||||
/*******************/
|
||||
|
||||
typedef H5A_t* H5A_t_ptr;
|
||||
typedef H5A_t* H5A_t_ptr;
|
||||
H5FL_SEQ_DEFINE(H5A_t_ptr);
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__create
|
||||
*
|
||||
@ -288,16 +288,16 @@ done:
|
||||
FUNC_LEAVE_NOAPI_TAG(ret_value)
|
||||
} /* H5A__create() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__create_by_name
|
||||
*
|
||||
* Purpose: Create an attribute on object, according to it's name
|
||||
* Purpose: Create an attribute on object, according to it's name
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* December 6, 2017
|
||||
* Programmer: Quincey Koziol
|
||||
* December 6, 2017
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -306,8 +306,8 @@ H5A__create_by_name(const H5G_loc_t *loc, const char *obj_name, const char *attr
|
||||
const H5T_t *type, const H5S_t *space, hid_t acpl_id)
|
||||
{
|
||||
H5G_loc_t obj_loc; /* Location used to open group */
|
||||
H5G_name_t obj_path; /* Opened object group hier. path */
|
||||
H5O_loc_t obj_oloc; /* Opened object object location */
|
||||
H5G_name_t obj_path; /* Opened object group hier. path */
|
||||
H5O_loc_t obj_oloc; /* Opened object object location */
|
||||
hbool_t loc_found = FALSE; /* Entry at 'obj_name' found */
|
||||
H5A_t *attr = NULL; /* Attribute from object header */
|
||||
H5A_t *ret_value = NULL; /* Return value */
|
||||
@ -349,22 +349,21 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__create_by_name() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__open_common
|
||||
*
|
||||
* Purpose:
|
||||
* Finishes initializing an attributes the open
|
||||
* Purpose: Finishes initializing an attributes the open
|
||||
*
|
||||
* Usage:
|
||||
* herr_t H5A__open_common(loc, name)
|
||||
* const H5G_loc_t *loc; IN: Pointer to group location for object
|
||||
* H5A_t *attr; IN/OUT: Pointer to attribute to initialize
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* December 18, 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* December 18, 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -406,7 +405,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__open_common() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__open
|
||||
*
|
||||
@ -451,13 +450,13 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__open() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__open_by_idx
|
||||
*
|
||||
* Purpose: Open an attribute according to its index order
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* April 2, 1998
|
||||
@ -515,7 +514,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__open_by_idx() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__open_by_name
|
||||
*
|
||||
@ -579,7 +578,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__open_by_name() */
|
||||
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
NAME
|
||||
H5A__read
|
||||
@ -681,12 +680,12 @@ done:
|
||||
if(tconv_buf)
|
||||
tconv_buf = H5FL_BLK_FREE(attr_buf, tconv_buf);
|
||||
if(bkg_buf)
|
||||
bkg_buf = H5FL_BLK_FREE(attr_buf, bkg_buf);
|
||||
bkg_buf = H5FL_BLK_FREE(attr_buf, bkg_buf);
|
||||
|
||||
FUNC_LEAVE_NOAPI_TAG(ret_value)
|
||||
} /* H5A__read() */
|
||||
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
NAME
|
||||
H5A__write
|
||||
@ -800,7 +799,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI_TAG(ret_value)
|
||||
} /* H5A__write() */
|
||||
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
NAME
|
||||
H5A__get_name
|
||||
@ -821,7 +820,7 @@ ssize_t
|
||||
H5A__get_name(H5A_t *attr, size_t buf_size, char *buf)
|
||||
{
|
||||
size_t copy_len, nbytes;
|
||||
ssize_t ret_value = -1; /* Return value */
|
||||
ssize_t ret_value = -1; /* Return value */
|
||||
|
||||
FUNC_ENTER_PACKAGE_NOERR
|
||||
|
||||
@ -846,7 +845,7 @@ H5A__get_name(H5A_t *attr, size_t buf_size, char *buf)
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__get_name() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A_get_space
|
||||
*
|
||||
@ -883,14 +882,13 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A_get_space() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__get_type
|
||||
*
|
||||
* Purpose: Returns an ID for the datatype of an attribute
|
||||
*
|
||||
* Return: Success: A valid ID for the datatype of an attribute
|
||||
*
|
||||
* Failure: H5I_INVALID_HID
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -946,7 +944,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__get_type() */
|
||||
|
||||
|
||||
|
||||
/*--------------------------------------------------------------------------
|
||||
NAME
|
||||
H5A__get_create_plist
|
||||
@ -978,7 +976,7 @@ H5A__get_create_plist(H5A_t* attr)
|
||||
|
||||
/* Create the property list object to return */
|
||||
if((new_plist_id = H5P_copy_plist(plist, TRUE)) < 0)
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "unable to copy attribute creation properties")
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_CANTINIT, FAIL, "unable to copy attribute creation properties")
|
||||
if(NULL == (new_plist = (H5P_genplist_t *)H5I_object(new_plist_id)))
|
||||
HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "can't get property list")
|
||||
|
||||
@ -992,7 +990,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__get_create_plist() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__get_info
|
||||
*
|
||||
@ -1033,14 +1031,13 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__get_info() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__copy
|
||||
*
|
||||
* Purpose: Copies attribute OLD_ATTR.
|
||||
*
|
||||
* Return: Success: Pointer to a new copy of the OLD_ATTR argument.
|
||||
*
|
||||
* Failure: NULL
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
@ -1096,7 +1093,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__copy() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__shared_free
|
||||
*
|
||||
@ -1148,7 +1145,7 @@ H5A__shared_free(H5A_t *attr)
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__shared_free() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__close_cb
|
||||
*
|
||||
@ -1180,7 +1177,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__close_cb() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__close
|
||||
*
|
||||
@ -1231,7 +1228,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__close() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A_oloc
|
||||
*
|
||||
@ -1263,7 +1260,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A_oloc() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A_nameof
|
||||
*
|
||||
@ -1295,7 +1292,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A_nameof() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A_type
|
||||
*
|
||||
@ -1325,7 +1322,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A_type() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__exists_by_name
|
||||
*
|
||||
@ -1371,7 +1368,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__exists_by_name() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__compact_build_table_cb
|
||||
*
|
||||
@ -1381,7 +1378,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 18 2006
|
||||
*
|
||||
* Modification:Raymond Lu
|
||||
@ -1432,7 +1428,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__compact_build_table_cb() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__compact_build_table
|
||||
*
|
||||
@ -1444,8 +1440,8 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 18, 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 18, 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1495,18 +1491,16 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__compact_build_table() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__dense_build_table_cb
|
||||
*
|
||||
* Purpose: Callback routine for building table of attributes from dense
|
||||
* attribute storage.
|
||||
*
|
||||
* Return: Success: Non-negative
|
||||
* Failure: Negative
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 11 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1539,7 +1533,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__dense_build_table_cb() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__dense_build_table
|
||||
*
|
||||
@ -1624,21 +1618,20 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__dense_build_table() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__attr_cmp_name_inc
|
||||
*
|
||||
* Purpose: Callback routine for comparing two attribute names, in
|
||||
* Purpose: Callback routine for comparing two attribute names, in
|
||||
* increasing alphabetic order
|
||||
*
|
||||
* Return: An integer less than, equal to, or greater than zero if the
|
||||
* Return: An integer less than, equal to, or greater than zero if the
|
||||
* first argument is considered to be respectively less than,
|
||||
* equal to, or greater than the second. If two members compare
|
||||
* as equal, their order in the sorted array is undefined.
|
||||
* (i.e. same as strcmp())
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 11 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1652,7 +1645,7 @@ H5A__attr_cmp_name_inc(const void *attr1, const void *attr2)
|
||||
(*(const H5A_t * const *)attr2)->shared->name))
|
||||
} /* end H5A__attr_cmp_name_inc() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__attr_cmp_name_dec
|
||||
*
|
||||
@ -1666,7 +1659,6 @@ H5A__attr_cmp_name_inc(const void *attr1, const void *attr2)
|
||||
* (i.e. opposite of strcmp())
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Feb 8 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1680,7 +1672,7 @@ H5A__attr_cmp_name_dec(const void *attr1, const void *attr2)
|
||||
(*(const H5A_t * const *)attr1)->shared->name))
|
||||
} /* end H5A__attr_cmp_name_dec() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__attr_cmp_corder_inc
|
||||
*
|
||||
@ -1693,7 +1685,6 @@ H5A__attr_cmp_name_dec(const void *attr1, const void *attr2)
|
||||
* as equal, their order in the sorted array is undefined.
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Feb 8 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1715,21 +1706,20 @@ H5A__attr_cmp_corder_inc(const void *attr1, const void *attr2)
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__attr_cmp_corder_inc() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__attr_cmp_corder_dec
|
||||
*
|
||||
* Purpose: Callback routine for comparing two attributes, in
|
||||
* Purpose: Callback routine for comparing two attributes, in
|
||||
* decreasing creation order
|
||||
*
|
||||
* Return: An integer less than, equal to, or greater than zero if the
|
||||
* Return: An integer less than, equal to, or greater than zero if the
|
||||
* second argument is considered to be respectively less than,
|
||||
* equal to, or greater than the first. If two members compare
|
||||
* as equal, their order in the sorted array is undefined.
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Feb 8 2007
|
||||
* Programmer: Quincey Koziol
|
||||
* Feb 8 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1750,17 +1740,16 @@ H5A__attr_cmp_corder_dec(const void *attr1, const void *attr2)
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__attr_cmp_corder_dec() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__attr_sort_table
|
||||
*
|
||||
* Purpose: Sort table containing a list of attributes for an object
|
||||
*
|
||||
* Return: Success: Non-negative
|
||||
* Failure: Negative
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 11, 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 11, 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1795,7 +1784,7 @@ H5A__attr_sort_table(H5A_attr_table_t *atable, H5_index_t idx_type,
|
||||
FUNC_LEAVE_NOAPI(SUCCEED)
|
||||
} /* end H5A__attr_sort_table() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__attr_iterate_table
|
||||
*
|
||||
@ -1804,8 +1793,8 @@ H5A__attr_sort_table(H5A_attr_table_t *atable, H5_index_t idx_type,
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 18, 2006
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 18, 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1877,7 +1866,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__attr_iterate_table() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__attr_release_table
|
||||
*
|
||||
@ -1885,7 +1874,7 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Programmer: Quincey Koziol
|
||||
* Dec 11, 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1893,7 +1882,7 @@ done:
|
||||
herr_t
|
||||
H5A__attr_release_table(H5A_attr_table_t *atable)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_PACKAGE
|
||||
|
||||
@ -1918,18 +1907,16 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__attr_release_table() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__get_ainfo
|
||||
*
|
||||
* Purpose: Retrieves the "attribute info" message for an object. Also
|
||||
* sets the number of attributes correctly, if it isn't set up yet.
|
||||
*
|
||||
* Return: Success: TRUE/FALSE whether message was found & retrieved
|
||||
* Failure: FAIL if error occurred
|
||||
* Return: TRUE/FALSE/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Mar 11 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1949,11 +1936,11 @@ H5A__get_ainfo(H5F_t *f, H5O_t *oh, H5O_ainfo_t *ainfo)
|
||||
|
||||
/* Check if the "attribute info" message exists */
|
||||
if((ret_value = H5O_msg_exists_oh(oh, H5O_AINFO_ID)) < 0)
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_NOTFOUND, FAIL, "unable to check object header")
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_NOTFOUND, FAIL, "unable to check object header")
|
||||
if(ret_value > 0) {
|
||||
/* Retrieve the "attribute info" structure */
|
||||
if(NULL == H5O_msg_read_oh(f, oh, H5O_AINFO_ID, ainfo))
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't read AINFO message")
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTGET, FAIL, "can't read AINFO message")
|
||||
|
||||
/* Check if we don't know how many attributes there are */
|
||||
if(ainfo->nattrs == HSIZET_MAX) {
|
||||
@ -1982,7 +1969,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI_TAG(ret_value)
|
||||
} /* end H5A__get_ainfo() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__set_version
|
||||
*
|
||||
@ -1993,7 +1980,6 @@ done:
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Jul 17 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -2044,7 +2030,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__set_version() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__attr_copy_file
|
||||
*
|
||||
@ -2254,10 +2240,10 @@ H5A__attr_copy_file(const H5A_t *attr_src, H5F_t *file_dst, hbool_t *recompute_s
|
||||
|
||||
H5MM_memcpy(buf, attr_src->shared->data, attr_src->shared->data_size);
|
||||
|
||||
/* Allocate background memory */
|
||||
if(H5T_path_bkg(tpath_src_mem) || H5T_path_bkg(tpath_mem_dst))
|
||||
if(NULL == (bkg_buf = H5FL_BLK_CALLOC(attr_buf, buf_size)))
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTALLOC, NULL, "memory allocation failed")
|
||||
/* Allocate background memory */
|
||||
if(H5T_path_bkg(tpath_src_mem) || H5T_path_bkg(tpath_mem_dst))
|
||||
if(NULL == (bkg_buf = H5FL_BLK_CALLOC(attr_buf, buf_size)))
|
||||
HGOTO_ERROR(H5E_ATTR, H5E_CANTALLOC, NULL, "memory allocation failed")
|
||||
|
||||
/* Convert from source file to memory */
|
||||
if(H5T_convert(tpath_src_mem, tid_src, tid_mem, nelmts, (size_t)0, (size_t)0, buf, bkg_buf) < 0)
|
||||
@ -2265,9 +2251,9 @@ H5A__attr_copy_file(const H5A_t *attr_src, H5F_t *file_dst, hbool_t *recompute_s
|
||||
|
||||
H5MM_memcpy(reclaim_buf, buf, buf_size);
|
||||
|
||||
/* Set background buffer to all zeros */
|
||||
if(bkg_buf)
|
||||
HDmemset(bkg_buf, 0, buf_size);
|
||||
/* Set background buffer to all zeros */
|
||||
if(bkg_buf)
|
||||
HDmemset(bkg_buf, 0, buf_size);
|
||||
|
||||
/* Convert from memory to destination file */
|
||||
if(H5T_convert(tpath_mem_dst, tid_mem, tid_dst, nelmts, (size_t)0, (size_t)0, buf, bkg_buf) < 0)
|
||||
@ -2327,7 +2313,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__attr_copy_file() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__attr_post_copy_file
|
||||
*
|
||||
@ -2420,7 +2406,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__attr_post_copy_file() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__dense_post_copy_file_cb
|
||||
*
|
||||
@ -2430,7 +2416,6 @@ done:
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Peter Cao
|
||||
* xcao@hdfgroup.org
|
||||
* July 20, 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -2478,7 +2463,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__dense_post_copy_file_cb() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__dense_post_copy_file_all
|
||||
*
|
||||
@ -2487,7 +2472,6 @@ done:
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Peter Cao
|
||||
* xcao@hdfgroup.org
|
||||
* July 20, 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -2525,7 +2509,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* end H5A__dense_post_copy_file_all */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__rename_by_name
|
||||
*
|
||||
@ -2533,7 +2517,7 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Programmer: Quincey Koziol
|
||||
* February 20, 2007
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -2543,10 +2527,10 @@ H5A__rename_by_name(H5G_loc_t loc, const char *obj_name, const char *old_attr_na
|
||||
const char *new_attr_name)
|
||||
{
|
||||
H5G_loc_t obj_loc; /* Location used to open group */
|
||||
H5G_name_t obj_path; /* Opened object group hier. path */
|
||||
H5O_loc_t obj_oloc; /* Opened object object location */
|
||||
H5G_name_t obj_path; /* Opened object group hier. path */
|
||||
H5O_loc_t obj_oloc; /* Opened object object location */
|
||||
hbool_t loc_found = FALSE; /* Entry at 'obj_name' found */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_PACKAGE
|
||||
|
||||
@ -2575,7 +2559,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__rename_by_name() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__iterate_common
|
||||
*
|
||||
@ -2583,7 +2567,7 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Programmer: Quincey Koziol
|
||||
* December 6, 2017
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -2610,7 +2594,7 @@ H5A__iterate_common(hid_t loc_id, H5_index_t idx_type, H5_iter_order_t order,
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__iterate_common() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__iterate
|
||||
*
|
||||
@ -2675,7 +2659,7 @@ done:
|
||||
} /* end H5A__iterate() */
|
||||
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__iterate_old
|
||||
*
|
||||
@ -2683,7 +2667,7 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Programmer: Quincey Koziol
|
||||
* December 6, 2017
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -2725,7 +2709,7 @@ H5A__iterate_old(hid_t loc_id, unsigned *attr_num, H5A_operator1_t op,
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Programmer: Quincey Koziol
|
||||
* December 6, 2017
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -2734,8 +2718,8 @@ herr_t
|
||||
H5A__delete_by_name(const H5G_loc_t *loc, const char *obj_name, const char *attr_name)
|
||||
{
|
||||
H5G_loc_t obj_loc; /* Location used to open group */
|
||||
H5G_name_t obj_path; /* Opened object group hier. path */
|
||||
H5O_loc_t obj_oloc; /* Opened object object location */
|
||||
H5G_name_t obj_path; /* Opened object group hier. path */
|
||||
H5O_loc_t obj_oloc; /* Opened object object location */
|
||||
hbool_t loc_found = FALSE; /* Entry at 'obj_name' found */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
@ -2763,7 +2747,7 @@ done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5A__delete_by_name() */
|
||||
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5A__delete_by_idx
|
||||
*
|
||||
@ -2771,7 +2755,7 @@ done:
|
||||
*
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* Programmer: Quincey Koziol
|
||||
* December 6, 2017
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -2781,8 +2765,8 @@ H5A__delete_by_idx(const H5G_loc_t *loc, const char *obj_name, H5_index_t idx_ty
|
||||
H5_iter_order_t order, hsize_t n)
|
||||
{
|
||||
H5G_loc_t obj_loc; /* Location used to open group */
|
||||
H5G_name_t obj_path; /* Opened object group hier. path */
|
||||
H5O_loc_t obj_oloc; /* Opened object object location */
|
||||
H5G_name_t obj_path; /* Opened object group hier. path */
|
||||
H5O_loc_t obj_oloc; /* Opened object object location */
|
||||
hbool_t loc_found = FALSE; /* Entry at 'obj_name' found */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
|
@ -11,7 +11,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Programmer: Quincey Koziol
|
||||
* Saturday, September 12, 2015
|
||||
*
|
||||
* Purpose: This file contains declarations which define macros for the
|
||||
|
@ -263,9 +263,6 @@ H5_DLL herr_t H5O__attr_remove(const H5O_loc_t *loc, const char *name);
|
||||
H5_DLL herr_t H5O__attr_remove_by_idx(const H5O_loc_t *loc, H5_index_t idx_type,
|
||||
H5_iter_order_t order, hsize_t n);
|
||||
H5_DLL htri_t H5O__attr_exists(const H5O_loc_t *loc, const char *name);
|
||||
#ifndef H5_NO_DEPRECATED_SYMBOLS
|
||||
H5_DLL int H5O__attr_count(const H5O_loc_t *loc);
|
||||
#endif /* H5_NO_DEPRECATED_SYMBOLS */
|
||||
H5_DLL H5A_t *H5A__attr_copy_file(const H5A_t *attr_src, H5F_t *file_dst, hbool_t *recompute_size,
|
||||
H5O_copy_t *cpy_info);
|
||||
H5_DLL herr_t H5A__attr_post_copy_file(const H5O_loc_t *src_oloc, const H5A_t *mesg_src,
|
||||
|
42
src/H5B.c
42
src/H5B.c
@ -13,9 +13,9 @@
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* Created: H5B.c
|
||||
* Jul 10 1997
|
||||
* Robb Matzke <matzke@llnl.gov>
|
||||
* Created: H5B.c
|
||||
* Jul 10 1997
|
||||
* Robb Matzke
|
||||
*
|
||||
* Purpose: Implements balanced, sibling-linked, N-ary trees
|
||||
* capable of storing any type of data with unique key
|
||||
@ -206,7 +206,6 @@ H5FL_SEQ_DEFINE_STATIC(size_t);
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jun 23 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -291,7 +290,6 @@ done:
|
||||
* UDATA is undefined).
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jun 23 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -387,7 +385,6 @@ done:
|
||||
* returned through the NEW_ADDR argument). Negative on failure.
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jul 3 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -542,7 +539,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jun 23 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -596,7 +592,7 @@ H5B_insert(H5F_t *f, const H5B_class_t *type, haddr_t addr, void *udata)
|
||||
if((int)(my_ins = H5B__insert_helper(f, &bt_ud, type, lt_key,
|
||||
<_key_changed, md_key, udata, rt_key, &rt_key_changed,
|
||||
&split_bt_ud/*out*/)) < 0)
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTINIT, FAIL, "unable to insert key")
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTINIT, FAIL, "unable to insert key")
|
||||
|
||||
/* Check if the root node split */
|
||||
if(H5B_INS_NOOP == my_ins) {
|
||||
@ -613,9 +609,9 @@ H5B_insert(H5F_t *f, const H5B_class_t *type, haddr_t addr, void *udata)
|
||||
|
||||
/* update left and right keys */
|
||||
if(!lt_key_changed)
|
||||
H5MM_memcpy(lt_key, H5B_NKEY(bt_ud.bt,shared,0), type->sizeof_nkey);
|
||||
H5MM_memcpy(lt_key, H5B_NKEY(bt_ud.bt,shared,0), type->sizeof_nkey);
|
||||
if(!rt_key_changed)
|
||||
H5MM_memcpy(rt_key, H5B_NKEY(split_bt_ud.bt,shared,split_bt_ud.bt->nchildren), type->sizeof_nkey);
|
||||
H5MM_memcpy(rt_key, H5B_NKEY(split_bt_ud.bt,shared,split_bt_ud.bt->nchildren), type->sizeof_nkey);
|
||||
|
||||
/*
|
||||
* Copy the old root node to some other file location and make the new root
|
||||
@ -624,7 +620,7 @@ H5B_insert(H5F_t *f, const H5B_class_t *type, haddr_t addr, void *udata)
|
||||
*/
|
||||
H5_CHECK_OVERFLOW(shared->sizeof_rnode,size_t,hsize_t);
|
||||
if(HADDR_UNDEF == (old_root_addr = H5MF_alloc(f, H5FD_MEM_BTREE, (hsize_t)shared->sizeof_rnode)))
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTALLOC, FAIL, "unable to allocate file space to move root")
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTALLOC, FAIL, "unable to allocate file space to move root")
|
||||
|
||||
/*
|
||||
* Move the node to the new location
|
||||
@ -637,12 +633,12 @@ H5B_insert(H5F_t *f, const H5B_class_t *type, haddr_t addr, void *udata)
|
||||
/* Unprotect the old root so we can move it. Also force it to be marked
|
||||
* dirty so it is written to the new location. */
|
||||
if(H5AC_unprotect(f, H5AC_BT, bt_ud.addr, bt_ud.bt, H5AC__DIRTIED_FLAG) < 0)
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTUNPROTECT, FAIL, "unable to release old root")
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTUNPROTECT, FAIL, "unable to release old root")
|
||||
bt_ud.bt = NULL; /* Make certain future references will be caught */
|
||||
|
||||
/* Move the location of the old root on the disk */
|
||||
if(H5AC_move_entry(f, H5AC_BT, bt_ud.addr, old_root_addr) < 0)
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTSPLIT, FAIL, "unable to move B-tree root node")
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTSPLIT, FAIL, "unable to move B-tree root node")
|
||||
bt_ud.addr = old_root_addr;
|
||||
|
||||
/* Update the split b-tree's left pointer to point to the new location */
|
||||
@ -700,7 +696,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jul 8 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -789,7 +784,6 @@ H5B__insert_child(H5B_t *bt, unsigned *bt_flags, unsigned idx,
|
||||
* Failure: H5B_INS_ERROR
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jul 9 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -839,7 +833,7 @@ H5B__insert_helper(H5F_t *f, H5B_ins_ud_t *bt_ud, const H5B_class_t *type,
|
||||
|
||||
/* Get shared info for B-tree */
|
||||
if(NULL == (rc_shared = (type->get_shared)(f, udata)))
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTGET, H5B_INS_ERROR, "can't retrieve B-tree's shared ref. count object")
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTGET, H5B_INS_ERROR, "can't retrieve B-tree's shared ref. count object")
|
||||
shared = (H5B_shared_t *)H5UC_GET_OBJ(rc_shared);
|
||||
HDassert(shared);
|
||||
|
||||
@ -1118,7 +1112,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jun 23 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1185,7 +1178,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* matzke@llnl.gov
|
||||
* Jun 23 1997
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1266,7 +1258,7 @@ H5B__remove_helper(H5F_t *f, haddr_t addr, const H5B_class_t *type, int level,
|
||||
|
||||
/* Get shared info for B-tree */
|
||||
if(NULL == (rc_shared = (type->get_shared)(f, udata)))
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTGET, H5B_INS_ERROR, "can't retrieve B-tree's shared ref. count object")
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTGET, H5B_INS_ERROR, "can't retrieve B-tree's shared ref. count object")
|
||||
shared = (H5B_shared_t *)H5UC_GET_OBJ(rc_shared);
|
||||
HDassert(shared);
|
||||
|
||||
@ -1278,7 +1270,7 @@ H5B__remove_helper(H5F_t *f, haddr_t addr, const H5B_class_t *type, int level,
|
||||
cache_udata.type = type;
|
||||
cache_udata.rc_shared = rc_shared;
|
||||
if(NULL == (bt = (H5B_t *)H5AC_protect(f, H5AC_BT, addr, &cache_udata, H5AC__NO_FLAGS_SET)))
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTPROTECT, H5B_INS_ERROR, "unable to load B-tree node")
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTPROTECT, H5B_INS_ERROR, "unable to load B-tree node")
|
||||
|
||||
rt = bt->nchildren;
|
||||
while(lt < rt && cmp) {
|
||||
@ -1417,7 +1409,7 @@ H5B__remove_helper(H5F_t *f, haddr_t addr, const H5B_class_t *type, int level,
|
||||
bt->nchildren = 0;
|
||||
|
||||
/* Delete the node from disk (via the metadata cache) */
|
||||
bt_flags |= H5AC__DIRTIED_FLAG | H5AC__FREE_FILE_SPACE_FLAG;
|
||||
bt_flags |= H5AC__DIRTIED_FLAG | H5AC__FREE_FILE_SPACE_FLAG;
|
||||
H5_CHECK_OVERFLOW(shared->sizeof_rnode, size_t, hsize_t);
|
||||
if(H5AC_unprotect(f, H5AC_BT, addr, bt, bt_flags | H5AC__DELETED_FLAG) < 0) {
|
||||
bt = NULL;
|
||||
@ -1679,7 +1671,6 @@ done:
|
||||
* Failure: NULL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* May 27 2008
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1786,7 +1777,6 @@ H5B_shared_free(void *_shared)
|
||||
* Failure: NULL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Apr 18 2000
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1852,7 +1842,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Jun 3 2008
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1885,7 +1874,7 @@ H5B__get_info_helper(H5F_t *f, const H5B_class_t *type, haddr_t addr,
|
||||
|
||||
/* Get shared info for B-tree */
|
||||
if(NULL == (rc_shared = (type->get_shared)(f, info_udata->udata)))
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTGET, FAIL, "can't retrieve B-tree's shared ref. count object")
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTGET, FAIL, "can't retrieve B-tree's shared ref. count object")
|
||||
shared = (H5B_shared_t *)H5UC_GET_OBJ(rc_shared);
|
||||
HDassert(shared);
|
||||
|
||||
@ -1897,7 +1886,7 @@ H5B__get_info_helper(H5F_t *f, const H5B_class_t *type, haddr_t addr,
|
||||
cache_udata.type = type;
|
||||
cache_udata.rc_shared = rc_shared;
|
||||
if(NULL == (bt = (H5B_t *)H5AC_protect(f, H5AC_BT, addr, &cache_udata, H5AC__READ_ONLY_FLAG)))
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTPROTECT, FAIL, "unable to load B-tree node")
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTPROTECT, FAIL, "unable to load B-tree node")
|
||||
|
||||
/* Cache information from this node */
|
||||
left_child = bt->child[0];
|
||||
@ -2066,7 +2055,6 @@ done:
|
||||
* Failure: FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Mar 26, 2008
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
20
src/H5B2.c
20
src/H5B2.c
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5B2.c
|
||||
* Jan 31 2005
|
||||
* Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Implements a B-tree, with several modifications from
|
||||
* the "standard" methods.
|
||||
@ -129,7 +129,6 @@ H5FL_DEFINE_STATIC(H5B2_t);
|
||||
* filled in), negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Jan 31 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -200,7 +199,6 @@ done:
|
||||
* NULL on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Oct 15 2009
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -264,7 +262,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 2 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -307,7 +304,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 23 2015
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -379,7 +375,6 @@ done:
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Nov 5 2009
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -414,7 +409,6 @@ H5B2_get_addr(const H5B2_t *bt2, haddr_t *addr_p)
|
||||
* Return: Value from callback: non-negative on success, negative on error
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 11 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -465,7 +459,6 @@ H5B2_iterate(H5B2_t *bt2, H5B2_operator_t op, void *op_data)
|
||||
* Return: Non-negative (TRUE/FALSE) on success, negative on failure.
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 23 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -705,7 +698,6 @@ done:
|
||||
* Return: Non-negative on success, negative on failure.
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 23 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -894,7 +886,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 25 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -968,7 +959,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Nov 14 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1051,7 +1041,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 25 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1092,7 +1081,6 @@ H5B2_get_nrec(const H5B2_t *bt2, hsize_t *nrec)
|
||||
* Return: Non-negative on success, negative on failure.
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 8 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1150,7 +1138,6 @@ done:
|
||||
* Return: Non-negative on success, negative on failure.
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 10 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1384,7 +1371,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Oct 15 2009
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1493,7 +1479,6 @@ done:
|
||||
* Return: Non-negative on success, negative on failure.
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 9 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1512,9 +1497,6 @@ H5B2_delete(H5F_t *f, haddr_t addr, void *ctx_udata, H5B2_remove_t op,
|
||||
HDassert(H5F_addr_defined(addr));
|
||||
|
||||
/* Lock the v2 B-tree header into memory */
|
||||
#ifdef QAK
|
||||
HDfprintf(stderr, "%s: addr = %a\n", FUNC, addr);
|
||||
#endif /* QAK */
|
||||
if(NULL == (hdr = H5B2__hdr_protect(f, addr, ctx_udata, H5AC__NO_FLAGS_SET)))
|
||||
HGOTO_ERROR(H5E_BTREE, H5E_CANTPROTECT, FAIL, "unable to protect v2 B-tree header")
|
||||
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5B2cache.c
|
||||
* Jan 31 2005
|
||||
* Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Implement v2 B-tree metadata cache methods.
|
||||
*
|
||||
@ -171,7 +171,6 @@ const H5AC_class_t H5AC_BT2_LEAF[1] = {{
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* May 18, 2010
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -240,7 +239,6 @@ H5B2__cache_hdr_verify_chksum(const void *_image, size_t len, void H5_ATTR_UNUSE
|
||||
* Failure: NULL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 1 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -339,7 +337,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* May 20, 2010
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -370,7 +367,6 @@ H5B2__cache_hdr_image_len(const void *_thing, size_t *image_len)
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 1 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -442,7 +438,6 @@ H5B2__cache_hdr_serialize(const H5F_t *f, void *_image, size_t H5_ATTR_UNUSED le
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Neil Fortner
|
||||
* nfortne2@hdfgroup.org
|
||||
* Apr 24 2012
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -530,7 +525,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Mike McGreevy
|
||||
* mcgreevy@hdfgroup.org
|
||||
* June 18, 2008
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -562,7 +556,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* May 18, 2010
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -637,7 +630,6 @@ H5B2__cache_int_verify_chksum(const void *_image, size_t H5_ATTR_UNUSED len, voi
|
||||
* Failure: NULL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 2 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -756,7 +748,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* May 20, 2010
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -788,7 +779,6 @@ H5B2__cache_int_image_len(const void *_thing, size_t *image_len)
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 3 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -875,7 +865,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Neil Fortner
|
||||
* nfortne2@hdfgroup.org
|
||||
* Apr 25 2012
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -886,7 +875,7 @@ H5B2__cache_int_notify(H5AC_notify_action_t action, void *_thing)
|
||||
H5B2_internal_t *internal = (H5B2_internal_t *)_thing;
|
||||
herr_t ret_value = SUCCEED;
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
/*
|
||||
* Check arguments.
|
||||
@ -952,7 +941,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Mike McGreevy
|
||||
* mcgreevy@hdfgroup.org
|
||||
* June 18, 2008
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -985,7 +973,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* May 18, 2010
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1060,7 +1047,6 @@ H5B2__cache_leaf_verify_chksum(const void *_image, size_t H5_ATTR_UNUSED len, vo
|
||||
* Failure: NULL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 2 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1159,7 +1145,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* May 20, 2010
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1191,7 +1176,6 @@ H5B2__cache_leaf_image_len(const void *_thing, size_t *image_len)
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 2 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1264,7 +1248,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Neil Fortner
|
||||
* nfortne2@hdfgroup.org
|
||||
* Apr 25 2012
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1275,7 +1258,7 @@ H5B2__cache_leaf_notify(H5AC_notify_action_t action, void *_thing)
|
||||
H5B2_leaf_t *leaf = (H5B2_leaf_t *)_thing;
|
||||
herr_t ret_value = SUCCEED;
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
/*
|
||||
* Check arguments.
|
||||
@ -1341,7 +1324,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Mike McGreevy
|
||||
* mcgreevy@hdfgroup.org
|
||||
* June 18, 2008
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5B2dbg.c
|
||||
* Feb 2 2005
|
||||
* Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Dump debugging information about a v2 B-tree.
|
||||
*
|
||||
@ -80,7 +80,6 @@
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 2 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -175,7 +174,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 4 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -287,7 +285,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 7 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5B2int.c
|
||||
* Feb 27 2006
|
||||
* Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Internal routines for managing v2 B-trees.
|
||||
*
|
||||
@ -101,7 +101,6 @@ H5FL_SEQ_DEFINE(H5B2_node_info_t);
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 2 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -230,7 +229,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Oct 27 2009
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -276,7 +274,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 21 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -355,7 +352,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Oct 13 2009
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -391,7 +387,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Oct 13 2009
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -428,7 +423,6 @@ done:
|
||||
* Return: SUCCEED (Can't fail)
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Oct 27 2009
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -456,7 +450,6 @@ H5B2__hdr_fuse_incr(H5B2_hdr_t *hdr)
|
||||
* Return: The file's reference count after the decrement. (Can't fail)
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Oct 27 2009
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -485,7 +478,6 @@ H5B2__hdr_fuse_decr(H5B2_hdr_t *hdr)
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Oct 13 2009
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -517,7 +509,6 @@ done:
|
||||
* Return: Non-NULL pointer to header on success/NULL on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 18 2015
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -582,7 +573,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 18 2015
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -614,7 +604,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 2 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -691,7 +680,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Oct 15 2009
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5B2int.c
|
||||
* Feb 27 2006
|
||||
* Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Internal routines for managing v2 B-trees.
|
||||
*
|
||||
@ -97,7 +97,6 @@ H5FL_SEQ_EXTERN(H5B2_node_info_t);
|
||||
* record to locate is greater than all records to search).
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 3 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -141,7 +140,6 @@ done:
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Aug 28 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -336,7 +334,6 @@ done:
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 3 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -414,7 +411,6 @@ done:
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 9 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -658,7 +654,6 @@ done:
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 9 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1032,7 +1027,6 @@ done:
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 4 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1195,7 +1189,6 @@ done:
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 4 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1437,7 +1430,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 23 2015
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1497,7 +1489,6 @@ done:
|
||||
* Return: Value from callback, non-negative on success, negative on error
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 11 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1612,7 +1603,6 @@ done:
|
||||
* Return: Value from callback, non-negative on success, negative on error
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 9 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1779,7 +1769,6 @@ done:
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@lbl.gov
|
||||
* Dec 1 2016
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1877,7 +1866,6 @@ done:
|
||||
* Return: SUCCEED/FAIL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@lbl.gov
|
||||
* Dec 1 2016
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5B2internal.c
|
||||
* Dec 01 2016
|
||||
* Quincey Koziol <koziol@lbl.gov>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Routines for managing v2 B-tree internal ndoes.
|
||||
*
|
||||
@ -87,7 +87,6 @@ H5FL_DEFINE(H5B2_internal_t);
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 3 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -183,7 +182,6 @@ done:
|
||||
* Return: Pointer to internal node on success/NULL on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Aug 25 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -277,7 +275,6 @@ done:
|
||||
* Return: Non-negative on success, negative on failure.
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 9 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -350,7 +347,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 2 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -513,7 +509,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 24 2015
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -782,7 +777,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 3 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1015,7 +1009,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Nov 14 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1300,7 +1293,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 2 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1349,7 +1341,6 @@ done:
|
||||
* Return: Non-negative on success, negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 19 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1390,7 +1381,6 @@ H5B2__assert_internal(hsize_t parent_all_nrec, const H5B2_hdr_t H5_ATTR_NDEBUG_U
|
||||
* Return: Non-negative on success, negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 19 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5B2leaf.c
|
||||
* Dec 01 2016
|
||||
* Quincey Koziol <koziol@lbl.gov>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Routines for managing v2 B-tree leaf ndoes.
|
||||
*
|
||||
@ -88,7 +88,6 @@ H5FL_DEFINE(H5B2_leaf_t);
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 2 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -174,7 +173,6 @@ done:
|
||||
* Return: Pointer to leaf node on success/NULL on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* May 5 2010
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -266,7 +264,6 @@ done:
|
||||
* Return: Non-negative on success, negative on failure.
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 9 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -340,7 +337,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 3 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -453,7 +449,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Dec 23 2015
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -608,7 +603,6 @@ done:
|
||||
* Failure: Negative
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 4 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -765,14 +759,14 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Mar 3 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5B2__remove_leaf(H5B2_hdr_t *hdr, H5B2_node_ptr_t *curr_node_ptr,
|
||||
H5B2_nodepos_t curr_pos, void *parent, void *udata, H5B2_remove_t op, void *op_data)
|
||||
H5B2_nodepos_t curr_pos, void *parent, void *udata, H5B2_remove_t op,
|
||||
void *op_data)
|
||||
{
|
||||
H5B2_leaf_t *leaf; /* Pointer to leaf node */
|
||||
haddr_t leaf_addr = HADDR_UNDEF; /* Leaf address on disk */
|
||||
@ -874,7 +868,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Nov 14 2006
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -976,7 +969,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 2 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1021,7 +1013,6 @@ done:
|
||||
* Return: Non-negative on success, negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 19 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -1045,7 +1036,6 @@ H5B2__assert_leaf(const H5B2_hdr_t H5_ATTR_NDEBUG_UNUSED *hdr,
|
||||
* Return: Non-negative on success, negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@ncsa.uiuc.edu
|
||||
* Feb 19 2005
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
@ -11,7 +11,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Programmer: Quincey Koziol
|
||||
* Saturday, September 12, 2015
|
||||
*
|
||||
* Purpose: This file contains declarations which define macros for the
|
||||
|
@ -11,7 +11,7 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/* Programmer: Quincey Koziol <koziol@hdfgroup.org>
|
||||
/* Programmer: Quincey Koziol
|
||||
* Monday, March 6, 2006
|
||||
*
|
||||
* Purpose: v2 B-tree metadata statistics functions.
|
||||
|
@ -11,7 +11,7 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
/* Programmer: Quincey Koziol
|
||||
* Thursday, February 3, 2005
|
||||
*
|
||||
* Purpose: v2 B-tree testing functions.
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5Bcache.c
|
||||
* Oct 31 2005
|
||||
* Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Implement B-tree metadata cache methods.
|
||||
*
|
||||
@ -98,7 +98,6 @@ const H5AC_class_t H5AC_BT[1] = {{
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* May 18, 2010
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -135,7 +134,6 @@ H5B__cache_get_initial_load_size(void *_udata, size_t *image_len)
|
||||
* Failure: NULL
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Mar 24, 2008
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -241,7 +239,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* May 20, 2010
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -277,7 +274,6 @@ H5B__cache_image_len(const void *_thing, size_t *image_len)
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Mar 24, 2008
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
@ -363,7 +359,6 @@ done:
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Quincey Koziol
|
||||
* koziol@hdfgroup.org
|
||||
* Mar 26, 2008
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
@ -123,8 +123,6 @@ H5CS__get_stack(void)
|
||||
* Programmer: Quincey Koziol
|
||||
* Thursday, February 6, 2003
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
@ -214,8 +212,6 @@ H5CS_push(const char *func_name)
|
||||
* Programmer: Quincey Koziol
|
||||
* Thursday, February 6, 2003
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
|
@ -11,7 +11,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@lbl.gov>
|
||||
* Programmer: Quincey Koziol
|
||||
* Monday, February 19, 2018
|
||||
*
|
||||
* Purpose:
|
||||
|
205
src/H5Cdbg.c
205
src/H5Cdbg.c
@ -28,16 +28,12 @@
|
||||
|
||||
#include "H5Cmodule.h" /* This source code file is part of the H5C module */
|
||||
|
||||
#define H5AC_FRIEND
|
||||
|
||||
|
||||
|
||||
|
||||
/***********/
|
||||
/* Headers */
|
||||
/***********/
|
||||
#include "H5private.h" /* Generic Functions */
|
||||
#include "H5ACpkg.h" /* Metadata Cache */
|
||||
#include "H5ACprivate.h" /* Metadata Cache */
|
||||
#include "H5Cpkg.h" /* Cache */
|
||||
#include "H5Eprivate.h" /* Error Handling */
|
||||
|
||||
@ -260,17 +256,24 @@ H5C_dump_cache_LRU(H5C_t *cache_ptr, const char *cache_name)
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* Function: H5C_dump_cache_skip_list
|
||||
*
|
||||
* Purpose: Debugging routine that prints a summary of the contents of
|
||||
* the skip list used by the metadata cache metadata cache to
|
||||
* maintain an address sorted list of dirty entries.
|
||||
* the skip list used by the metadata cache metadata cache to
|
||||
* maintain an address sorted list of dirty entries.
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: John Mainzer
|
||||
* 11/15/14
|
||||
*
|
||||
* Changes: Updated function for the slist_enabled field in H5C_t.
|
||||
* Recall that to minimize slist overhead, the slist is
|
||||
* empty and not maintained if cache_ptr->slist_enabled is
|
||||
* false.
|
||||
* JRM -- 5/6/20
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef NDEBUG
|
||||
@ -288,11 +291,15 @@ H5C_dump_cache_skip_list(H5C_t * cache_ptr, char * calling_fcn)
|
||||
HDassert(cache_ptr->magic == H5C__H5C_T_MAGIC);
|
||||
HDassert(calling_fcn != NULL);
|
||||
|
||||
HDfprintf(stdout, "\n\nDumping metadata cache skip list from %s.\n", calling_fcn);
|
||||
HDfprintf(stdout, "\n\nDumping metadata cache skip list from %s.\n",
|
||||
calling_fcn);
|
||||
HDfprintf(stdout, " slist %s.\n",
|
||||
cache_ptr->slist_enabled ? "enabled" : "disabled");
|
||||
HDfprintf(stdout, " slist len = %" PRIu32 ".\n", cache_ptr->slist_len);
|
||||
HDfprintf(stdout, " slist size = %zu.\n", cache_ptr->slist_size);
|
||||
|
||||
if(cache_ptr->slist_len > 0) {
|
||||
|
||||
/* If we get this far, all entries in the cache are listed in the
|
||||
* skip list -- scan the skip list generating the desired output.
|
||||
*/
|
||||
@ -300,112 +307,21 @@ H5C_dump_cache_skip_list(H5C_t * cache_ptr, char * calling_fcn)
|
||||
"Num: Addr: Len: Prot/Pind: Dirty: Type:\n");
|
||||
|
||||
i = 0;
|
||||
|
||||
node_ptr = H5SL_first(cache_ptr->slist_ptr);
|
||||
if(node_ptr != NULL)
|
||||
entry_ptr = (H5C_cache_entry_t *)H5SL_item(node_ptr);
|
||||
else
|
||||
entry_ptr = NULL;
|
||||
|
||||
while(entry_ptr != NULL) {
|
||||
HDassert( entry_ptr->magic == H5C__H5C_CACHE_ENTRY_T_MAGIC );
|
||||
|
||||
HDfprintf(stdout,
|
||||
"%s%d 0x%016" PRIxHADDR " %4zu %d/%d %d %s\n",
|
||||
cache_ptr->prefix, i,
|
||||
entry_ptr->addr,
|
||||
entry_ptr->size,
|
||||
(int)(entry_ptr->is_protected),
|
||||
(int)(entry_ptr->is_pinned),
|
||||
(int)(entry_ptr->is_dirty),
|
||||
entry_ptr->type->name);
|
||||
|
||||
HDfprintf(stdout, " node_ptr = %p, item = %p\n",
|
||||
(void *)node_ptr, H5SL_item(node_ptr));
|
||||
|
||||
/* increment node_ptr before we delete its target */
|
||||
node_ptr = H5SL_next(node_ptr);
|
||||
if(node_ptr != NULL)
|
||||
entry_ptr = (H5C_cache_entry_t *)H5SL_item(node_ptr);
|
||||
else
|
||||
entry_ptr = NULL;
|
||||
|
||||
i++;
|
||||
} /* end while */
|
||||
} /* end if */
|
||||
|
||||
HDfprintf(stdout, "\n\n");
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5C_dump_cache_skip_list() */
|
||||
#endif /* NDEBUG */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5C_dump_coll_write_list
|
||||
*
|
||||
* Purpose: Debugging routine that prints a summary of the contents of
|
||||
* the collective write skip list used by the metadata cache
|
||||
* in the parallel case to maintain a list of entries to write
|
||||
* collectively at a sync point.
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: John Mainzer
|
||||
* 4/1/17
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
#ifndef NDEBUG
|
||||
herr_t
|
||||
H5C_dump_coll_write_list(H5C_t * cache_ptr, char * calling_fcn)
|
||||
{
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
int i;
|
||||
int list_len;
|
||||
H5AC_aux_t * aux_ptr = NULL;
|
||||
H5C_cache_entry_t * entry_ptr = NULL;
|
||||
H5SL_node_t * node_ptr = NULL;
|
||||
|
||||
FUNC_ENTER_NOAPI_NOERR
|
||||
|
||||
HDassert(cache_ptr != NULL);
|
||||
HDassert(cache_ptr->magic == H5C__H5C_T_MAGIC);
|
||||
HDassert(cache_ptr->aux_ptr);
|
||||
|
||||
aux_ptr = (H5AC_aux_t *)cache_ptr->aux_ptr;
|
||||
|
||||
HDassert(aux_ptr->magic == H5AC__H5AC_AUX_T_MAGIC);
|
||||
|
||||
HDassert(calling_fcn != NULL);
|
||||
|
||||
list_len = (int)H5SL_count(cache_ptr->coll_write_list);
|
||||
|
||||
HDfprintf(stdout, "\n\nDumping MDC coll write list from %d:%s.\n",
|
||||
aux_ptr->mpi_rank, calling_fcn);
|
||||
HDfprintf(stdout, " slist len = %u.\n", cache_ptr->slist_len);
|
||||
|
||||
if ( list_len > 0 ) {
|
||||
|
||||
/* scan the collective write list generating the desired output */
|
||||
HDfprintf(stdout,
|
||||
"Num: Addr: Len: Prot/Pind: Dirty: Type:\n");
|
||||
|
||||
i = 0;
|
||||
|
||||
node_ptr = H5SL_first(cache_ptr->coll_write_list);
|
||||
|
||||
if ( node_ptr != NULL )
|
||||
if ( node_ptr != NULL ) {
|
||||
|
||||
entry_ptr = (H5C_cache_entry_t *)H5SL_item(node_ptr);
|
||||
|
||||
else
|
||||
} else {
|
||||
|
||||
entry_ptr = NULL;
|
||||
}
|
||||
|
||||
while ( entry_ptr != NULL ) {
|
||||
|
||||
HDassert(entry_ptr->magic == H5C__H5C_CACHE_ENTRY_T_MAGIC);
|
||||
HDassert( entry_ptr->magic == H5C__H5C_CACHE_ENTRY_T_MAGIC );
|
||||
|
||||
HDfprintf(stdout,
|
||||
"%s%d 0x%016llx %4lld %d/%d %d %s\n",
|
||||
@ -417,15 +333,21 @@ H5C_dump_coll_write_list(H5C_t * cache_ptr, char * calling_fcn)
|
||||
(int)(entry_ptr->is_dirty),
|
||||
entry_ptr->type->name);
|
||||
|
||||
HDfprintf(stdout, " node_ptr = %p, item = %p\n",
|
||||
node_ptr, H5SL_item(node_ptr));
|
||||
|
||||
/* increment node_ptr before we delete its target */
|
||||
|
||||
node_ptr = H5SL_next(node_ptr);
|
||||
|
||||
if ( node_ptr != NULL )
|
||||
if ( node_ptr != NULL ) {
|
||||
|
||||
entry_ptr = (H5C_cache_entry_t *)H5SL_item(node_ptr);
|
||||
|
||||
else
|
||||
} else {
|
||||
|
||||
entry_ptr = NULL;
|
||||
}
|
||||
|
||||
i++;
|
||||
|
||||
@ -436,9 +358,8 @@ H5C_dump_coll_write_list(H5C_t * cache_ptr, char * calling_fcn)
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
||||
} /* H5C_dump_coll_write_list() */
|
||||
} /* H5C_dump_cache_skip_list() */
|
||||
#endif /* NDEBUG */
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
@ -1086,74 +1007,6 @@ H5C_stats__reset(H5C_t H5_ATTR_UNUSED * cache_ptr)
|
||||
return;
|
||||
} /* H5C_stats__reset() */
|
||||
|
||||
extern void
|
||||
H5C__dump_entry(H5C_t *cache_ptr, const H5C_cache_entry_t *entry_ptr,
|
||||
hbool_t dump_parents, const char *prefix, int indent);
|
||||
|
||||
static void
|
||||
H5C__dump_parents(H5C_t *cache_ptr, const H5C_cache_entry_t *entry_ptr, const char *prefix, int indent)
|
||||
{
|
||||
unsigned u;
|
||||
|
||||
for(u = 0; u < entry_ptr->flush_dep_nparents; u++)
|
||||
H5C__dump_entry(cache_ptr, entry_ptr->flush_dep_parent[u], TRUE, prefix, indent + 2);
|
||||
}
|
||||
|
||||
typedef struct H5C__dump_child_ctx_t {
|
||||
H5C_t *cache_ptr;
|
||||
const H5C_cache_entry_t *parent;
|
||||
hbool_t dump_parents;
|
||||
const char *prefix;
|
||||
int indent;
|
||||
} H5C__dump_child_ctx_t;
|
||||
|
||||
static int
|
||||
H5C__dump_children_cb(H5C_cache_entry_t *entry_ptr, void *_ctx)
|
||||
{
|
||||
H5C__dump_child_ctx_t *ctx = (H5C__dump_child_ctx_t *)_ctx;
|
||||
|
||||
if(entry_ptr->tag_info->tag != entry_ptr->addr) {
|
||||
unsigned u;
|
||||
|
||||
HDassert(entry_ptr->flush_dep_nparents);
|
||||
for(u = 0; u < entry_ptr->flush_dep_nparents; u++)
|
||||
if(ctx->parent == entry_ptr->flush_dep_parent[u])
|
||||
H5C__dump_entry(ctx->cache_ptr, entry_ptr, ctx->dump_parents, ctx->prefix, ctx->indent + 2);
|
||||
} /* end if */
|
||||
|
||||
return(H5_ITER_CONT);
|
||||
} /* end H5C__dump_children_cb() */
|
||||
|
||||
static void
|
||||
H5C__dump_children(H5C_t *cache_ptr, const H5C_cache_entry_t *entry_ptr,
|
||||
hbool_t dump_parents, const char *prefix, int indent)
|
||||
{
|
||||
H5C__dump_child_ctx_t ctx;
|
||||
|
||||
HDassert(entry_ptr->tag_info);
|
||||
|
||||
ctx.cache_ptr = cache_ptr;
|
||||
ctx.parent = entry_ptr;
|
||||
ctx.dump_parents = dump_parents;
|
||||
ctx.prefix = prefix;
|
||||
ctx.indent = indent;
|
||||
H5C__iter_tagged_entries(cache_ptr, entry_ptr->tag_info->tag, FALSE, H5C__dump_children_cb, &ctx);
|
||||
} /* end H5C__dump_children() */
|
||||
|
||||
void
|
||||
H5C__dump_entry(H5C_t *cache_ptr, const H5C_cache_entry_t *entry_ptr,
|
||||
hbool_t dump_parents, const char *prefix, int indent)
|
||||
{
|
||||
HDassert(cache_ptr);
|
||||
HDassert(entry_ptr);
|
||||
|
||||
HDfprintf(stderr, "%*s%s: entry_ptr = (%" PRIuHADDR ", '%s', %" PRIuHADDR ", %s, %u, %u/%u)\n", indent, "", prefix, entry_ptr->addr, entry_ptr->type->name, entry_ptr->tag_info ? entry_ptr->tag_info->tag : HADDR_UNDEF, (entry_ptr->is_dirty) ? "TRUE" : "FALSE", entry_ptr->flush_dep_nparents, entry_ptr->flush_dep_nchildren, entry_ptr->flush_dep_ndirty_children);
|
||||
if(dump_parents && entry_ptr->flush_dep_nparents)
|
||||
H5C__dump_parents(cache_ptr, entry_ptr, "Parent", indent);
|
||||
if(entry_ptr->flush_dep_nchildren)
|
||||
H5C__dump_children(cache_ptr, entry_ptr, FALSE, "Child", indent);
|
||||
} /* end H5C__dump_entry() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5C_flush_dependency_exists()
|
||||
|
211
src/H5Cimage.c
211
src/H5Cimage.c
@ -431,36 +431,40 @@ done:
|
||||
* Function: H5C__deserialize_prefetched_entry()
|
||||
*
|
||||
* Purpose: Deserialize the supplied prefetched entry entry, and return
|
||||
* a pointer to the deserialized entry in *entry_ptr_ptr.
|
||||
* If successful, remove the prefetched entry from the cache,
|
||||
* and free it. Insert the deserialized entry into the cache.
|
||||
* a pointer to the deserialized entry in *entry_ptr_ptr.
|
||||
* If successful, remove the prefetched entry from the cache,
|
||||
* and free it. Insert the deserialized entry into the cache.
|
||||
*
|
||||
* Note that the on disk image of the entry is not freed --
|
||||
* a pointer to it is stored in the deserialized entries'
|
||||
* image_ptr field, and its image_up_to_date field is set to
|
||||
* TRUE unless the entry is dirtied by the deserialize call.
|
||||
* Note that the on disk image of the entry is not freed --
|
||||
* a pointer to it is stored in the deserialized entries'
|
||||
* image_ptr field, and its image_up_to_date field is set to
|
||||
* TRUE unless the entry is dirtied by the deserialize call.
|
||||
*
|
||||
* If the prefetched entry is a flush dependency child,
|
||||
* destroy that flush dependency prior to calling the
|
||||
* deserialize callback. If appropriate, the flush dependency
|
||||
* relationship will be recreated by the cache client.
|
||||
* If the prefetched entry is a flush dependency child,
|
||||
* destroy that flush dependency prior to calling the
|
||||
* deserialize callback. If appropriate, the flush dependency
|
||||
* relationship will be recreated by the cache client.
|
||||
*
|
||||
* If the prefetched entry is a flush dependency parent,
|
||||
* destroy the flush dependency relationship with all its
|
||||
* children. As all these children must be prefetched entries,
|
||||
* recreate these flush dependency relationships with
|
||||
* deserialized entry after it is inserted in the cache.
|
||||
* If the prefetched entry is a flush dependency parent,
|
||||
* destroy the flush dependency relationship with all its
|
||||
* children. As all these children must be prefetched entries,
|
||||
* recreate these flush dependency relationships with
|
||||
* deserialized entry after it is inserted in the cache.
|
||||
*
|
||||
* Since deserializing a prefetched entry is semantically
|
||||
* equivalent to a load, issue an entry loaded nofification
|
||||
* if the notify callback is defined.
|
||||
* Since deserializing a prefetched entry is semantically
|
||||
* equivalent to a load, issue an entry loaded nofification
|
||||
* if the notify callback is defined.
|
||||
*
|
||||
* Return: SUCCEED on success, and FAIL on failure.
|
||||
*
|
||||
* Note that *entry_ptr_ptr is undefined on failure.
|
||||
* Note that *entry_ptr_ptr is undefined on failure.
|
||||
*
|
||||
* Programmer: John Mainzer, 8/10/15
|
||||
*
|
||||
* Changes: Updated sanity checks for possibility that the slist
|
||||
* is disabled.
|
||||
* JRM -- 5/17/20
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
@ -468,11 +472,11 @@ H5C__deserialize_prefetched_entry(H5F_t *f, H5C_t *cache_ptr,
|
||||
H5C_cache_entry_t **entry_ptr_ptr, const H5C_class_t *type,
|
||||
haddr_t addr, void *udata)
|
||||
{
|
||||
hbool_t dirty = FALSE; /* Flag indicating whether thing was
|
||||
hbool_t dirty = FALSE; /* Flag indicating whether thing was
|
||||
* dirtied during deserialize
|
||||
*/
|
||||
size_t len; /* Size of image in file */
|
||||
void * thing = NULL; /* Pointer to thing loaded */
|
||||
void * thing = NULL; /* Pointer to thing loaded */
|
||||
H5C_cache_entry_t * pf_entry_ptr; /* pointer to the prefetched entry */
|
||||
/* supplied in *entry_ptr_ptr. */
|
||||
H5C_cache_entry_t * ds_entry_ptr; /* Alias for thing loaded, as cache
|
||||
@ -484,8 +488,8 @@ H5C__deserialize_prefetched_entry(H5F_t *f, H5C_t *cache_ptr,
|
||||
/* the prefetched entry, or NULL if */
|
||||
/* that array does not exist. */
|
||||
unsigned flush_flags = (H5C__FLUSH_INVALIDATE_FLAG |
|
||||
H5C__FLUSH_CLEAR_ONLY_FLAG);
|
||||
int i;
|
||||
H5C__FLUSH_CLEAR_ONLY_FLAG);
|
||||
int i;
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_PACKAGE
|
||||
@ -604,73 +608,73 @@ H5C__deserialize_prefetched_entry(H5F_t *f, H5C_t *cache_ptr,
|
||||
|
||||
HDassert( ( dirty == FALSE ) || ( type->id == 5 || type->id == 6) );
|
||||
|
||||
ds_entry_ptr->magic = H5C__H5C_CACHE_ENTRY_T_MAGIC;
|
||||
ds_entry_ptr->cache_ptr = f->shared->cache;
|
||||
ds_entry_ptr->addr = addr;
|
||||
ds_entry_ptr->size = len;
|
||||
ds_entry_ptr->magic = H5C__H5C_CACHE_ENTRY_T_MAGIC;
|
||||
ds_entry_ptr->cache_ptr = f->shared->cache;
|
||||
ds_entry_ptr->addr = addr;
|
||||
ds_entry_ptr->size = len;
|
||||
HDassert(ds_entry_ptr->size < H5C_MAX_ENTRY_SIZE);
|
||||
ds_entry_ptr->image_ptr = pf_entry_ptr->image_ptr;
|
||||
ds_entry_ptr->image_up_to_date = !dirty;
|
||||
ds_entry_ptr->type = type;
|
||||
ds_entry_ptr->is_dirty = dirty | pf_entry_ptr->is_dirty;
|
||||
ds_entry_ptr->dirtied = FALSE;
|
||||
ds_entry_ptr->is_protected = FALSE;
|
||||
ds_entry_ptr->is_read_only = FALSE;
|
||||
ds_entry_ptr->ro_ref_count = 0;
|
||||
ds_entry_ptr->is_pinned = FALSE;
|
||||
ds_entry_ptr->in_slist = FALSE;
|
||||
ds_entry_ptr->flush_marker = FALSE;
|
||||
ds_entry_ptr->image_ptr = pf_entry_ptr->image_ptr;
|
||||
ds_entry_ptr->image_up_to_date = !dirty;
|
||||
ds_entry_ptr->type = type;
|
||||
ds_entry_ptr->is_dirty = dirty | pf_entry_ptr->is_dirty;
|
||||
ds_entry_ptr->dirtied = FALSE;
|
||||
ds_entry_ptr->is_protected = FALSE;
|
||||
ds_entry_ptr->is_read_only = FALSE;
|
||||
ds_entry_ptr->ro_ref_count = 0;
|
||||
ds_entry_ptr->is_pinned = FALSE;
|
||||
ds_entry_ptr->in_slist = FALSE;
|
||||
ds_entry_ptr->flush_marker = FALSE;
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
ds_entry_ptr->clear_on_unprotect = FALSE;
|
||||
ds_entry_ptr->flush_immediately = FALSE;
|
||||
ds_entry_ptr->coll_access = FALSE;
|
||||
ds_entry_ptr->clear_on_unprotect = FALSE;
|
||||
ds_entry_ptr->flush_immediately = FALSE;
|
||||
ds_entry_ptr->coll_access = FALSE;
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
ds_entry_ptr->flush_in_progress = FALSE;
|
||||
ds_entry_ptr->destroy_in_progress = FALSE;
|
||||
ds_entry_ptr->flush_in_progress = FALSE;
|
||||
ds_entry_ptr->destroy_in_progress = FALSE;
|
||||
|
||||
ds_entry_ptr->ring = pf_entry_ptr->ring;
|
||||
ds_entry_ptr->ring = pf_entry_ptr->ring;
|
||||
|
||||
/* Initialize flush dependency height fields */
|
||||
ds_entry_ptr->flush_dep_parent = NULL;
|
||||
ds_entry_ptr->flush_dep_nparents = 0;
|
||||
ds_entry_ptr->flush_dep_parent_nalloc = 0;
|
||||
ds_entry_ptr->flush_dep_nchildren = 0;
|
||||
ds_entry_ptr->flush_dep_ndirty_children = 0;
|
||||
ds_entry_ptr->flush_dep_nunser_children = 0;
|
||||
ds_entry_ptr->flush_dep_parent = NULL;
|
||||
ds_entry_ptr->flush_dep_nparents = 0;
|
||||
ds_entry_ptr->flush_dep_parent_nalloc = 0;
|
||||
ds_entry_ptr->flush_dep_nchildren = 0;
|
||||
ds_entry_ptr->flush_dep_ndirty_children = 0;
|
||||
ds_entry_ptr->flush_dep_nunser_children = 0;
|
||||
|
||||
/* Initialize fields supporting the hash table: */
|
||||
ds_entry_ptr->ht_next = NULL;
|
||||
ds_entry_ptr->ht_prev = NULL;
|
||||
ds_entry_ptr->il_next = NULL;
|
||||
ds_entry_ptr->il_prev = NULL;
|
||||
ds_entry_ptr->ht_next = NULL;
|
||||
ds_entry_ptr->ht_prev = NULL;
|
||||
ds_entry_ptr->il_next = NULL;
|
||||
ds_entry_ptr->il_prev = NULL;
|
||||
|
||||
/* Initialize fields supporting replacement policies: */
|
||||
ds_entry_ptr->next = NULL;
|
||||
ds_entry_ptr->prev = NULL;
|
||||
ds_entry_ptr->next = NULL;
|
||||
ds_entry_ptr->prev = NULL;
|
||||
#if H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS
|
||||
ds_entry_ptr->aux_next = NULL;
|
||||
ds_entry_ptr->aux_prev = NULL;
|
||||
ds_entry_ptr->aux_next = NULL;
|
||||
ds_entry_ptr->aux_prev = NULL;
|
||||
#endif /* H5C_MAINTAIN_CLEAN_AND_DIRTY_LRU_LISTS */
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
pf_entry_ptr->coll_next = NULL;
|
||||
pf_entry_ptr->coll_prev = NULL;
|
||||
pf_entry_ptr->coll_next = NULL;
|
||||
pf_entry_ptr->coll_prev = NULL;
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
|
||||
/* Initialize cache image related fields */
|
||||
ds_entry_ptr->include_in_image = FALSE;
|
||||
ds_entry_ptr->lru_rank = 0;
|
||||
ds_entry_ptr->image_dirty = FALSE;
|
||||
ds_entry_ptr->fd_parent_count = 0;
|
||||
ds_entry_ptr->fd_parent_addrs = NULL;
|
||||
ds_entry_ptr->fd_child_count = pf_entry_ptr->fd_child_count;
|
||||
ds_entry_ptr->fd_dirty_child_count = 0;
|
||||
ds_entry_ptr->image_fd_height = 0;
|
||||
ds_entry_ptr->prefetched = FALSE;
|
||||
ds_entry_ptr->prefetch_type_id = 0;
|
||||
ds_entry_ptr->age = 0;
|
||||
ds_entry_ptr->prefetched_dirty = pf_entry_ptr->prefetched_dirty;
|
||||
ds_entry_ptr->include_in_image = FALSE;
|
||||
ds_entry_ptr->lru_rank = 0;
|
||||
ds_entry_ptr->image_dirty = FALSE;
|
||||
ds_entry_ptr->fd_parent_count = 0;
|
||||
ds_entry_ptr->fd_parent_addrs = NULL;
|
||||
ds_entry_ptr->fd_child_count = pf_entry_ptr->fd_child_count;
|
||||
ds_entry_ptr->fd_dirty_child_count = 0;
|
||||
ds_entry_ptr->image_fd_height = 0;
|
||||
ds_entry_ptr->prefetched = FALSE;
|
||||
ds_entry_ptr->prefetch_type_id = 0;
|
||||
ds_entry_ptr->age = 0;
|
||||
ds_entry_ptr->prefetched_dirty = pf_entry_ptr->prefetched_dirty;
|
||||
#ifndef NDEBUG /* debugging field */
|
||||
ds_entry_ptr->serialization_count = 0;
|
||||
ds_entry_ptr->serialization_count = 0;
|
||||
#endif /* NDEBUG */
|
||||
|
||||
H5C__RESET_CACHE_ENTRY_STATS(ds_entry_ptr);
|
||||
@ -694,15 +698,20 @@ H5C__deserialize_prefetched_entry(H5F_t *f, H5C_t *cache_ptr,
|
||||
*
|
||||
* 1) Set pf_entry_ptr->image_ptr to NULL. Since we have already
|
||||
* transferred the buffer containing the image to *ds_entry_ptr,
|
||||
* this is not a memory leak.
|
||||
* this is not a memory leak.
|
||||
*
|
||||
* 2) Call H5C__flush_single_entry() with the H5C__FLUSH_INVALIDATE_FLAG
|
||||
* and H5C__FLUSH_CLEAR_ONLY_FLAG flags set.
|
||||
*/
|
||||
pf_entry_ptr->image_ptr = NULL;
|
||||
if(pf_entry_ptr->is_dirty) {
|
||||
HDassert(pf_entry_ptr->in_slist);
|
||||
|
||||
if ( pf_entry_ptr->is_dirty ) {
|
||||
|
||||
HDassert(((cache_ptr->slist_enabled) && (pf_entry_ptr->in_slist)) || \
|
||||
((!cache_ptr->slist_enabled) && (!pf_entry_ptr->in_slist)));
|
||||
|
||||
flush_flags |= H5C__DEL_FROM_SLIST_ON_DESTROY_FLAG;
|
||||
|
||||
} /* end if */
|
||||
|
||||
if(H5C__flush_single_entry(f, pf_entry_ptr, flush_flags) < 0)
|
||||
@ -862,54 +871,6 @@ H5C__free_image_entries_array(H5C_t * cache_ptr)
|
||||
FUNC_LEAVE_NOAPI(SUCCEED)
|
||||
} /* H5C__free_image_entries_array() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5C_force_cache_image_load()
|
||||
*
|
||||
* Purpose: On rare occasions, it is necessary to run
|
||||
* H5MF_tidy_self_referential_fsm_hack() prior to the first
|
||||
* metadata cache access. This is a problem as if there is a
|
||||
* cache image at the end of the file, that routine will
|
||||
* discard it.
|
||||
*
|
||||
* We solve this issue by calling this function, which will
|
||||
* load the cache image and then call
|
||||
* H5MF_tidy_self_referential_fsm_hack() to discard it.
|
||||
*
|
||||
* Return: SUCCEED on success, and FAIL on failure.
|
||||
*
|
||||
* Programmer: John Mainzer
|
||||
* 1/11/17
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
H5C_force_cache_image_load(H5F_t *f)
|
||||
{
|
||||
H5C_t *cache_ptr;
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI(FAIL)
|
||||
|
||||
/* Sanity checks */
|
||||
HDassert(f);
|
||||
HDassert(f->shared);
|
||||
cache_ptr = f->shared->cache;
|
||||
HDassert(cache_ptr);
|
||||
HDassert(cache_ptr->magic == H5C__H5C_T_MAGIC);
|
||||
HDassert(cache_ptr->load_image);
|
||||
|
||||
/* Load the cache image, if requested */
|
||||
if(cache_ptr->load_image) {
|
||||
cache_ptr->load_image = FALSE;
|
||||
if(H5C__load_cache_image(f) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTLOAD, FAIL, "can't load cache image")
|
||||
} /* end if */
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
} /* H5C_force_cache_image_load() */
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
* Function: H5C_get_cache_image_config
|
||||
|
@ -11,7 +11,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Programmer: Quincey Koziol
|
||||
* Saturday, September 12, 2015
|
||||
*
|
||||
* Purpose: This file contains declarations which define macros for the
|
||||
|
262
src/H5Cmpio.c
262
src/H5Cmpio.c
@ -18,7 +18,7 @@
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Functions in this file implement support for parallel I/O for
|
||||
* generic cache code.
|
||||
* generic cache code.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -28,7 +28,7 @@
|
||||
/****************/
|
||||
|
||||
#include "H5Cmodule.h" /* This source code file is part of the H5C module */
|
||||
#define H5F_FRIEND /*suppress error about including H5Fpkg */
|
||||
#define H5F_FRIEND /*suppress error about including H5Fpkg */
|
||||
|
||||
|
||||
/***********/
|
||||
@ -114,9 +114,9 @@ static herr_t H5C__flush_candidates_in_ring(H5F_t *f, H5C_ring_t ring,
|
||||
*
|
||||
* We construct the table as follows. Let:
|
||||
*
|
||||
* n = num_candidates / mpi_size;
|
||||
* n = num_candidates / mpi_size;
|
||||
*
|
||||
* m = num_candidates % mpi_size;
|
||||
* m = num_candidates % mpi_size;
|
||||
*
|
||||
* Now allocate an array of integers of length mpi_size + 1,
|
||||
* and call this array candidate_assignment_table.
|
||||
@ -136,10 +136,10 @@ static herr_t H5C__flush_candidates_in_ring(H5F_t *f, H5C_ring_t ring,
|
||||
* Once the table is constructed, we determine the first and
|
||||
* last entry this process is to flush as follows:
|
||||
*
|
||||
* first_entry_to_flush = candidate_assignment_table[mpi_rank]
|
||||
* first_entry_to_flush = candidate_assignment_table[mpi_rank]
|
||||
*
|
||||
* last_entry_to_flush =
|
||||
* candidate_assignment_table[mpi_rank + 1] - 1;
|
||||
* candidate_assignment_table[mpi_rank + 1] - 1;
|
||||
*
|
||||
* With these values determined, we simply scan through the
|
||||
* candidate list, marking all entries in the range
|
||||
@ -163,6 +163,10 @@ static herr_t H5C__flush_candidates_in_ring(H5F_t *f, H5C_ring_t ring,
|
||||
* Programmer: John Mainzer
|
||||
* 3/17/10
|
||||
*
|
||||
* Changes: Updated sanity checks to allow for the possibility that
|
||||
* the slist is disabled.
|
||||
* JRM -- 8/3/20
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
@ -185,12 +189,15 @@ H5C_apply_candidate_list(H5F_t * f,
|
||||
unsigned entries_to_clear[H5C_RING_NTYPES];
|
||||
haddr_t addr;
|
||||
H5C_cache_entry_t * entry_ptr = NULL;
|
||||
|
||||
#if H5C_DO_SANITY_CHECKS
|
||||
haddr_t last_addr;
|
||||
#endif /* H5C_DO_SANITY_CHECKS */
|
||||
|
||||
#if H5C_APPLY_CANDIDATE_LIST__DEBUG
|
||||
char tbl_buf[1024];
|
||||
#endif /* H5C_APPLY_CANDIDATE_LIST__DEBUG */
|
||||
|
||||
unsigned u; /* Local index variable */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
@ -200,7 +207,8 @@ H5C_apply_candidate_list(H5F_t * f,
|
||||
HDassert(cache_ptr != NULL);
|
||||
HDassert(cache_ptr->magic == H5C__H5C_T_MAGIC);
|
||||
HDassert(num_candidates > 0);
|
||||
HDassert(num_candidates <= cache_ptr->slist_len);
|
||||
HDassert( ( ! cache_ptr->slist_enabled ) ||
|
||||
( num_candidates <= cache_ptr->slist_len ));
|
||||
HDassert(candidates_list_ptr != NULL);
|
||||
HDassert(0 <= mpi_rank);
|
||||
HDassert(mpi_rank < mpi_size);
|
||||
@ -410,6 +418,7 @@ done:
|
||||
|
||||
|
||||
/*-------------------------------------------------------------------------
|
||||
*
|
||||
* Function: H5C_construct_candidate_list__clean_cache
|
||||
*
|
||||
* Purpose: Construct the list of entries that should be flushed to
|
||||
@ -425,6 +434,16 @@ done:
|
||||
* Programmer: John Mainzer
|
||||
* 3/17/10
|
||||
*
|
||||
* Changes: With the slist optimization, the slist is not maintained
|
||||
* unless a flush is in progress. Thus we can not longer use
|
||||
* cache_ptr->slist_size to determine the total size of
|
||||
* the entries we must insert in the candidate list.
|
||||
*
|
||||
* To address this, we now use cache_ptr->dirty_index_size
|
||||
* instead.
|
||||
*
|
||||
* JRM -- 7/27/20
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
@ -438,60 +457,82 @@ H5C_construct_candidate_list__clean_cache(H5C_t * cache_ptr)
|
||||
HDassert( cache_ptr != NULL );
|
||||
HDassert( cache_ptr->magic == H5C__H5C_T_MAGIC );
|
||||
|
||||
/* As a sanity check, set space needed to the size of the skip list.
|
||||
* This should be the sum total of the sizes of all the dirty entries
|
||||
* in the metadata cache.
|
||||
/* As a sanity check, set space needed to the dirty_index_size. This
|
||||
* should be the sum total of the sizes of all the dirty entries
|
||||
* in the metadata cache. Note that if the slist is enabled,
|
||||
* cache_ptr->slist_size should equal cache_ptr->dirty_index_size.
|
||||
*/
|
||||
space_needed = cache_ptr->slist_size;
|
||||
space_needed = cache_ptr->dirty_index_size;
|
||||
|
||||
HDassert( ( ! cache_ptr->slist_enabled ) ||
|
||||
( space_needed == cache_ptr->slist_size ) );
|
||||
|
||||
|
||||
/* Recall that while we shouldn't have any protected entries at this
|
||||
* point, it is possible that some dirty entries may reside on the
|
||||
* pinned list at this point.
|
||||
*/
|
||||
HDassert( cache_ptr->slist_size <=
|
||||
HDassert( cache_ptr->dirty_index_size <=
|
||||
(cache_ptr->dLRU_list_size + cache_ptr->pel_size) );
|
||||
HDassert( cache_ptr->slist_len <=
|
||||
(cache_ptr->dLRU_list_len + cache_ptr->pel_len) );
|
||||
HDassert( ( ! cache_ptr->slist_enabled ) ||
|
||||
( cache_ptr->slist_len <=
|
||||
(cache_ptr->dLRU_list_len + cache_ptr->pel_len) ) );
|
||||
|
||||
|
||||
if(space_needed > 0) { /* we have work to do */
|
||||
|
||||
H5C_cache_entry_t *entry_ptr;
|
||||
unsigned nominated_entries_count = 0;
|
||||
size_t nominated_entries_size = 0;
|
||||
haddr_t nominated_addr;
|
||||
haddr_t nominated_addr;
|
||||
|
||||
HDassert( cache_ptr->slist_len > 0 );
|
||||
HDassert( ( ! cache_ptr->slist_enabled ) ||
|
||||
( cache_ptr->slist_len > 0 ) );
|
||||
|
||||
/* Scan the dirty LRU list from tail forward and nominate sufficient
|
||||
* entries to free up the necessary space.
|
||||
*/
|
||||
entry_ptr = cache_ptr->dLRU_tail_ptr;
|
||||
while((nominated_entries_size < space_needed) &&
|
||||
(nominated_entries_count < cache_ptr->slist_len) &&
|
||||
(entry_ptr != NULL)) {
|
||||
|
||||
while ( ( nominated_entries_size < space_needed ) &&
|
||||
( ( ! cache_ptr->slist_enabled ) ||
|
||||
( nominated_entries_count < cache_ptr->slist_len ) ) &&
|
||||
( entry_ptr != NULL ) ) {
|
||||
|
||||
HDassert( ! (entry_ptr->is_protected) );
|
||||
HDassert( ! (entry_ptr->is_read_only) );
|
||||
HDassert( entry_ptr->ro_ref_count == 0 );
|
||||
HDassert( entry_ptr->is_dirty );
|
||||
HDassert( entry_ptr->in_slist );
|
||||
HDassert( ( ! cache_ptr->slist_enabled ) ||
|
||||
( entry_ptr->in_slist ) );
|
||||
|
||||
nominated_addr = entry_ptr->addr;
|
||||
|
||||
if(H5AC_add_candidate((H5AC_t *)cache_ptr, nominated_addr) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "H5AC_add_candidate() failed")
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, \
|
||||
"H5AC_add_candidate() failed")
|
||||
|
||||
nominated_entries_size += entry_ptr->size;
|
||||
nominated_entries_count++;
|
||||
entry_ptr = entry_ptr->aux_prev;
|
||||
|
||||
} /* end while */
|
||||
|
||||
HDassert( entry_ptr == NULL );
|
||||
|
||||
/* it is possible that there are some dirty entries on the
|
||||
* protected entry list as well -- scan it too if necessary
|
||||
*/
|
||||
entry_ptr = cache_ptr->pel_head_ptr;
|
||||
while((nominated_entries_size < space_needed) &&
|
||||
(nominated_entries_count < cache_ptr->slist_len) &&
|
||||
(entry_ptr != NULL)) {
|
||||
|
||||
while ( ( nominated_entries_size < space_needed ) &&
|
||||
( ( ! cache_ptr->slist_enabled ) ||
|
||||
( nominated_entries_count < cache_ptr->slist_len ) ) &&
|
||||
( entry_ptr != NULL ) ) {
|
||||
|
||||
if(entry_ptr->is_dirty) {
|
||||
|
||||
HDassert( ! (entry_ptr->is_protected) );
|
||||
HDassert( ! (entry_ptr->is_read_only) );
|
||||
HDassert( entry_ptr->ro_ref_count == 0 );
|
||||
@ -499,22 +540,31 @@ H5C_construct_candidate_list__clean_cache(H5C_t * cache_ptr)
|
||||
HDassert( entry_ptr->in_slist );
|
||||
|
||||
nominated_addr = entry_ptr->addr;
|
||||
|
||||
if(H5AC_add_candidate((H5AC_t *)cache_ptr, nominated_addr) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "H5AC_add_candidate() failed")
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, \
|
||||
"H5AC_add_candidate() failed")
|
||||
|
||||
nominated_entries_size += entry_ptr->size;
|
||||
nominated_entries_count++;
|
||||
|
||||
} /* end if */
|
||||
|
||||
entry_ptr = entry_ptr->next;
|
||||
|
||||
} /* end while */
|
||||
|
||||
HDassert( nominated_entries_count == cache_ptr->slist_len );
|
||||
HDassert( ( ! cache_ptr->slist_enabled ) ||
|
||||
( nominated_entries_count == cache_ptr->slist_len ) );
|
||||
HDassert( nominated_entries_size == space_needed );
|
||||
|
||||
} /* end if */
|
||||
|
||||
done:
|
||||
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
|
||||
} /* H5C_construct_candidate_list__clean_cache() */
|
||||
|
||||
|
||||
@ -534,6 +584,12 @@ done:
|
||||
* Programmer: John Mainzer
|
||||
* 3/17/10
|
||||
*
|
||||
* Changes: With the slist optimization, the slist is not maintained
|
||||
* unless a flush is in progress. Updated sanity checks to
|
||||
* reflect this.
|
||||
*
|
||||
* JRM -- 7/27/20
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
@ -551,54 +607,77 @@ H5C_construct_candidate_list__min_clean(H5C_t * cache_ptr)
|
||||
* cache back within its min clean constraints.
|
||||
*/
|
||||
if(cache_ptr->max_cache_size > cache_ptr->index_size) {
|
||||
if(((cache_ptr->max_cache_size - cache_ptr->index_size) +
|
||||
cache_ptr->cLRU_list_size) >= cache_ptr->min_clean_size)
|
||||
|
||||
if ( ( (cache_ptr->max_cache_size - cache_ptr->index_size) +
|
||||
cache_ptr->cLRU_list_size) >= cache_ptr->min_clean_size ) {
|
||||
|
||||
space_needed = 0;
|
||||
else
|
||||
|
||||
} else {
|
||||
|
||||
space_needed = cache_ptr->min_clean_size -
|
||||
((cache_ptr->max_cache_size - cache_ptr->index_size) +
|
||||
cache_ptr->cLRU_list_size);
|
||||
}
|
||||
} /* end if */
|
||||
else {
|
||||
if(cache_ptr->min_clean_size <= cache_ptr->cLRU_list_size)
|
||||
|
||||
if(cache_ptr->min_clean_size <= cache_ptr->cLRU_list_size) {
|
||||
|
||||
space_needed = 0;
|
||||
else
|
||||
|
||||
} else {
|
||||
|
||||
space_needed = cache_ptr->min_clean_size -
|
||||
cache_ptr->cLRU_list_size;
|
||||
}
|
||||
} /* end else */
|
||||
|
||||
if(space_needed > 0) { /* we have work to do */
|
||||
|
||||
H5C_cache_entry_t *entry_ptr;
|
||||
unsigned nominated_entries_count = 0;
|
||||
size_t nominated_entries_size = 0;
|
||||
|
||||
HDassert( cache_ptr->slist_len > 0 );
|
||||
HDassert( ( ! cache_ptr->slist_enabled ) ||
|
||||
( cache_ptr->slist_len > 0 ) );
|
||||
|
||||
/* Scan the dirty LRU list from tail forward and nominate sufficient
|
||||
* entries to free up the necessary space.
|
||||
*/
|
||||
entry_ptr = cache_ptr->dLRU_tail_ptr;
|
||||
while((nominated_entries_size < space_needed) &&
|
||||
(nominated_entries_count < cache_ptr->slist_len) &&
|
||||
(entry_ptr != NULL) &&
|
||||
(!entry_ptr->flush_me_last)) {
|
||||
haddr_t nominated_addr;
|
||||
|
||||
while ( ( nominated_entries_size < space_needed ) &&
|
||||
( ( ! cache_ptr->slist_enabled ) ||
|
||||
( nominated_entries_count < cache_ptr->slist_len ) ) &&
|
||||
( entry_ptr != NULL ) &&
|
||||
( ! entry_ptr->flush_me_last ) ) {
|
||||
|
||||
haddr_t nominated_addr;
|
||||
|
||||
HDassert( ! (entry_ptr->is_protected) );
|
||||
HDassert( ! (entry_ptr->is_read_only) );
|
||||
HDassert( entry_ptr->ro_ref_count == 0 );
|
||||
HDassert( entry_ptr->is_dirty );
|
||||
HDassert( entry_ptr->in_slist );
|
||||
HDassert( ( ! cache_ptr->slist_enabled ) ||
|
||||
( entry_ptr->in_slist ) );
|
||||
|
||||
nominated_addr = entry_ptr->addr;
|
||||
|
||||
if(H5AC_add_candidate((H5AC_t *)cache_ptr, nominated_addr) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "H5AC_add_candidate() failed")
|
||||
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, \
|
||||
"H5AC_add_candidate() failed")
|
||||
|
||||
nominated_entries_size += entry_ptr->size;
|
||||
nominated_entries_count++;
|
||||
entry_ptr = entry_ptr->aux_prev;
|
||||
|
||||
} /* end while */
|
||||
HDassert( nominated_entries_count <= cache_ptr->slist_len );
|
||||
|
||||
HDassert( ( ! cache_ptr->slist_enabled ) ||
|
||||
( nominated_entries_count <= cache_ptr->slist_len ) );
|
||||
HDassert( nominated_entries_size <= cache_ptr->dirty_index_size );
|
||||
HDassert( nominated_entries_size >= space_needed );
|
||||
} /* end if */
|
||||
|
||||
@ -769,7 +848,7 @@ H5C_mark_entries_as_clean(H5F_t * f,
|
||||
* of the pre_serialize / serialize routines, this may
|
||||
* cease to be the case -- requiring a review of this
|
||||
* point.
|
||||
* JRM -- 4/7/15
|
||||
* JRM -- 4/7/15
|
||||
*/
|
||||
entries_cleared = 0;
|
||||
entries_examined = 0;
|
||||
@ -873,9 +952,9 @@ done:
|
||||
herr_t
|
||||
H5C_clear_coll_entries(H5C_t *cache_ptr, hbool_t partial)
|
||||
{
|
||||
uint32_t clear_cnt;
|
||||
H5C_cache_entry_t * entry_ptr = NULL;
|
||||
herr_t ret_value = SUCCEED;
|
||||
uint32_t clear_cnt;
|
||||
H5C_cache_entry_t * entry_ptr = NULL;
|
||||
herr_t ret_value = SUCCEED;
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT
|
||||
|
||||
@ -921,6 +1000,7 @@ H5C__collective_write(H5F_t *f)
|
||||
{
|
||||
H5AC_t *cache_ptr;
|
||||
H5FD_mpio_xfer_t orig_xfer_mode = H5FD_MPIO_COLLECTIVE;
|
||||
void *base_buf;
|
||||
int count;
|
||||
int *length_array = NULL;
|
||||
MPI_Aint *buf_array = NULL;
|
||||
@ -930,6 +1010,8 @@ H5C__collective_write(H5F_t *f)
|
||||
MPI_Datatype ftype;
|
||||
hbool_t ftype_created = FALSE;
|
||||
int mpi_code;
|
||||
char unused = 0; /* Unused, except for non-NULL pointer value */
|
||||
size_t buf_count;
|
||||
herr_t ret_value = SUCCEED;
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
@ -944,20 +1026,17 @@ H5C__collective_write(H5F_t *f)
|
||||
if(H5CX_get_io_xfer_mode(&orig_xfer_mode) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTGET, FAIL, "can't get MPI-I/O transfer mode")
|
||||
|
||||
/* Set transfer mode */
|
||||
if(H5CX_set_io_xfer_mode(H5FD_MPIO_COLLECTIVE) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTSET, FAIL, "can't set MPI-I/O transfer mode")
|
||||
|
||||
/* Get number of entries in collective write list */
|
||||
count = (int)H5SL_count(cache_ptr->coll_write_list);
|
||||
|
||||
if(count > 0) {
|
||||
H5FD_mpio_xfer_t xfer_mode = H5FD_MPIO_COLLECTIVE;
|
||||
H5SL_node_t *node;
|
||||
H5C_cache_entry_t *entry_ptr;
|
||||
void *base_buf;
|
||||
int i;
|
||||
|
||||
/* Set new transfer mode */
|
||||
if(H5CX_set_io_xfer_mode(xfer_mode) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTSET, FAIL, "can't set MPI-I/O transfer mode")
|
||||
|
||||
/* Allocate arrays */
|
||||
if(NULL == (length_array = (int *)H5MM_malloc((size_t)count * sizeof(int))) )
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTALLOC, FAIL, "memory allocation failed for collective write table length array")
|
||||
@ -981,7 +1060,6 @@ H5C__collective_write(H5F_t *f)
|
||||
node = H5SL_next(node);
|
||||
i = 1;
|
||||
while(node) {
|
||||
|
||||
if(NULL == (entry_ptr = (H5C_cache_entry_t *)H5SL_item(node)))
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_NOTFOUND, FAIL, "can't retrieve skip list item")
|
||||
|
||||
@ -998,68 +1076,40 @@ H5C__collective_write(H5F_t *f)
|
||||
/* Create memory MPI type */
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_create_hindexed(count, length_array, buf_array, MPI_BYTE, &btype)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_hindexed failed", mpi_code)
|
||||
|
||||
btype_created = TRUE;
|
||||
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_commit(&btype)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_commit failed", mpi_code)
|
||||
|
||||
/* Create file MPI type */
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_create_hindexed(count, length_array, offset_array, MPI_BYTE, &ftype)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_hindexed failed", mpi_code)
|
||||
|
||||
ftype_created = TRUE;
|
||||
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_commit(&ftype)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_commit failed", mpi_code)
|
||||
|
||||
/* Pass buf type, file type to the file driver */
|
||||
if(H5CX_set_mpi_coll_datatypes(btype, ftype) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTSET, FAIL, "can't set MPI-I/O properties")
|
||||
|
||||
/* Write data */
|
||||
if(H5F_block_write(f, H5FD_MEM_DEFAULT, (haddr_t)0, (size_t)1, base_buf) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to write entries collectively")
|
||||
|
||||
/* MPI count to write */
|
||||
buf_count = 1;
|
||||
} /* end if */
|
||||
else {
|
||||
MPI_Status mpi_stat;
|
||||
MPI_File *mpi_fh_p;
|
||||
MPI_File mpi_fh;
|
||||
MPI_Info *info_p;
|
||||
MPI_Info info;
|
||||
/* Pass trivial buf type, file type to the file driver */
|
||||
btype = MPI_BYTE;
|
||||
ftype = MPI_BYTE;
|
||||
|
||||
/* This should be rewritten to call H5F_block_write, with the correct
|
||||
* buffer and file datatypes (null ones). -QAK, 2018/02/21
|
||||
*/
|
||||
if(H5F_get_mpi_handle(f, (MPI_File **)&mpi_fh_p) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTGET, FAIL, "can't get mpi file handle")
|
||||
/* Set non-NULL pointer for I/O operation */
|
||||
base_buf = &unused;
|
||||
|
||||
mpi_fh = *(MPI_File*)mpi_fh_p;
|
||||
|
||||
if(H5F_get_mpi_info(f, &info_p) < 0)
|
||||
HGOTO_ERROR(H5E_FILE, H5E_CANTGET, FAIL, "can't get mpi file info")
|
||||
|
||||
info = *info_p;
|
||||
|
||||
/* just to match up with the 1st MPI_File_set_view from
|
||||
* H5FD_mpio_write()
|
||||
*/
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_File_set_view(mpi_fh, (MPI_Offset)0, MPI_BYTE, MPI_BYTE, "native", info)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_File_set_view failed", mpi_code)
|
||||
|
||||
/* just to match up with MPI_File_write_at_all from H5FD_mpio_write() */
|
||||
HDmemset(&mpi_stat, 0, sizeof(MPI_Status));
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_File_write_at_all(mpi_fh, (MPI_Offset)0, NULL, 0, MPI_BYTE, &mpi_stat)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_File_write_at_all failed", mpi_code)
|
||||
|
||||
/* just to match up with the 2nd MPI_File_set_view (reset) in
|
||||
* H5FD_mpio_write()
|
||||
*/
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_File_set_view(mpi_fh, (MPI_Offset)0, MPI_BYTE, MPI_BYTE, "native", info)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_File_set_view failed", mpi_code)
|
||||
/* MPI count to write */
|
||||
buf_count = 0;
|
||||
} /* end else */
|
||||
|
||||
/* Pass buf type, file type to the file driver */
|
||||
if(H5CX_set_mpi_coll_datatypes(btype, ftype) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_CANTSET, FAIL, "can't set MPI-I/O properties")
|
||||
|
||||
/* Write data */
|
||||
if(H5F_block_write(f, H5FD_MEM_DEFAULT, (haddr_t)0, buf_count, base_buf) < 0)
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_WRITEERROR, FAIL, "unable to write entries collectively")
|
||||
|
||||
done:
|
||||
/* Free arrays */
|
||||
length_array = (int *)H5MM_xfree(length_array);
|
||||
@ -1124,17 +1174,17 @@ H5C__flush_candidate_entries(H5F_t *f, unsigned entries_to_flush[H5C_RING_NTYPES
|
||||
unsigned entries_to_clear[H5C_RING_NTYPES])
|
||||
{
|
||||
#if H5C_DO_SANITY_CHECKS
|
||||
int i;
|
||||
uint32_t index_len = 0;
|
||||
size_t index_size = (size_t)0;
|
||||
size_t clean_index_size = (size_t)0;
|
||||
size_t dirty_index_size = (size_t)0;
|
||||
size_t slist_size = (size_t)0;
|
||||
uint32_t slist_len = 0;
|
||||
int i;
|
||||
uint32_t index_len = 0;
|
||||
size_t index_size = (size_t)0;
|
||||
size_t clean_index_size = (size_t)0;
|
||||
size_t dirty_index_size = (size_t)0;
|
||||
size_t slist_size = (size_t)0;
|
||||
uint32_t slist_len = 0;
|
||||
#endif /* H5C_DO_SANITY_CHECKS */
|
||||
H5C_ring_t ring;
|
||||
H5C_ring_t ring;
|
||||
H5C_t * cache_ptr;
|
||||
herr_t ret_value = SUCCEED;
|
||||
herr_t ret_value = SUCCEED;
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
|
509
src/H5Cpkg.h
509
src/H5Cpkg.h
@ -47,13 +47,22 @@
|
||||
/* Number of epoch markers active */
|
||||
#define H5C__MAX_EPOCH_MARKERS 10
|
||||
|
||||
|
||||
/* Cache configuration settings */
|
||||
#define H5C__HASH_TABLE_LEN (64 * 1024) /* must be a power of 2 */
|
||||
#define H5C__H5C_T_MAGIC 0x005CAC0E
|
||||
|
||||
|
||||
/* Initial allocated size of the "flush_dep_parent" array */
|
||||
#define H5C_FLUSH_DEP_PARENT_INIT 8
|
||||
|
||||
|
||||
/* Set to TRUE to enable the slist optimization. If this field is TRUE,
|
||||
* the slist is disabled whenever a flush is not in progress.
|
||||
*/
|
||||
#define H5C__SLIST_OPT_ENABLED TRUE
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
*
|
||||
* We maintain doubly linked lists of instances of H5C_cache_entry_t for a
|
||||
@ -1568,49 +1577,82 @@ if ( ( (cache_ptr)->index_size != \
|
||||
* Added code to maintain the cache_ptr->slist_ring_len
|
||||
* and cache_ptr->slist_ring_size arrays.
|
||||
*
|
||||
* JRM -- 4/29/20
|
||||
* Reworked macro to support the slist_enabled field
|
||||
* of H5C_t. If slist_enabled == TRUE, the macro
|
||||
* functions as before. Otherwise, the macro is a no-op,
|
||||
* and the slist must be empty.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
/* NOTE: The H5C__INSERT_ENTRY_IN_SLIST() macro is set up so that
|
||||
*
|
||||
* H5C_DO_SANITY_CHECKS
|
||||
*
|
||||
* and
|
||||
*
|
||||
* H5C_DO_SLIST_SANITY_CHECKS
|
||||
*
|
||||
* can be selected independantly. This is easy to miss as the
|
||||
* two #defines are easy to confuse.
|
||||
*/
|
||||
|
||||
#if H5C_DO_SLIST_SANITY_CHECKS
|
||||
|
||||
#define ENTRY_IN_SLIST(cache_ptr, entry_ptr) \
|
||||
H5C_entry_in_skip_list((cache_ptr), (entry_ptr))
|
||||
|
||||
#else /* H5C_DO_SLIST_SANITY_CHECKS */
|
||||
|
||||
#define ENTRY_IN_SLIST(cache_ptr, entry_ptr) FALSE
|
||||
|
||||
#endif /* H5C_DO_SLIST_SANITY_CHECKS */
|
||||
|
||||
|
||||
#if H5C_DO_SANITY_CHECKS
|
||||
|
||||
#define H5C__INSERT_ENTRY_IN_SLIST(cache_ptr, entry_ptr, fail_val) \
|
||||
{ \
|
||||
HDassert( (cache_ptr) ); \
|
||||
HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \
|
||||
HDassert( (entry_ptr) ); \
|
||||
HDassert( (entry_ptr)->size > 0 ); \
|
||||
HDassert( H5F_addr_defined((entry_ptr)->addr) ); \
|
||||
HDassert( !((entry_ptr)->in_slist) ); \
|
||||
HDassert( !ENTRY_IN_SLIST((cache_ptr), (entry_ptr)) ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
\
|
||||
if(H5SL_insert((cache_ptr)->slist_ptr, entry_ptr, &(entry_ptr)->addr) < 0) \
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_BADVALUE, (fail_val), "can't insert entry in skip list") \
|
||||
if ( (cache_ptr)->slist_enabled ) { \
|
||||
\
|
||||
(entry_ptr)->in_slist = TRUE; \
|
||||
(cache_ptr)->slist_changed = TRUE; \
|
||||
(cache_ptr)->slist_len++; \
|
||||
(cache_ptr)->slist_size += (entry_ptr)->size; \
|
||||
((cache_ptr)->slist_ring_len[(entry_ptr)->ring])++; \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) += (entry_ptr)->size; \
|
||||
(cache_ptr)->slist_len_increase++; \
|
||||
(cache_ptr)->slist_size_increase += (int64_t)((entry_ptr)->size); \
|
||||
HDassert( (entry_ptr) ); \
|
||||
HDassert( (entry_ptr)->size > 0 ); \
|
||||
HDassert( H5F_addr_defined((entry_ptr)->addr) ); \
|
||||
HDassert( !((entry_ptr)->in_slist) ); \
|
||||
HDassert( ! ENTRY_IN_SLIST((cache_ptr), (entry_ptr)) ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
HDassert( (cache_ptr)->slist_size > 0 ); \
|
||||
if ( H5SL_insert((cache_ptr)->slist_ptr, entry_ptr, \
|
||||
&((entry_ptr)->addr)) < 0) \
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_BADVALUE, (fail_val), \
|
||||
"can't insert entry in skip list") \
|
||||
\
|
||||
(entry_ptr)->in_slist = TRUE; \
|
||||
(cache_ptr)->slist_changed = TRUE; \
|
||||
(cache_ptr)->slist_len++; \
|
||||
(cache_ptr)->slist_size += (entry_ptr)->size; \
|
||||
((cache_ptr)->slist_ring_len[(entry_ptr)->ring])++; \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) += (entry_ptr)->size;\
|
||||
(cache_ptr)->slist_len_increase++; \
|
||||
(cache_ptr)->slist_size_increase += (int64_t)((entry_ptr)->size); \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
HDassert( (cache_ptr)->slist_size > 0 ); \
|
||||
\
|
||||
} else { /* slist disabled */ \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len == 0 ); \
|
||||
HDassert( (cache_ptr)->slist_size == 0 ); \
|
||||
} \
|
||||
} /* H5C__INSERT_ENTRY_IN_SLIST */
|
||||
|
||||
#else /* H5C_DO_SANITY_CHECKS */
|
||||
@ -1619,31 +1661,42 @@ if ( ( (cache_ptr)->index_size != \
|
||||
{ \
|
||||
HDassert( (cache_ptr) ); \
|
||||
HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \
|
||||
HDassert( (entry_ptr) ); \
|
||||
HDassert( (entry_ptr)->size > 0 ); \
|
||||
HDassert( H5F_addr_defined((entry_ptr)->addr) ); \
|
||||
HDassert( !((entry_ptr)->in_slist) ); \
|
||||
HDassert( !ENTRY_IN_SLIST((cache_ptr), (entry_ptr)) ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
\
|
||||
if(H5SL_insert((cache_ptr)->slist_ptr, entry_ptr, &(entry_ptr)->addr) < 0) \
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_BADVALUE, (fail_val), "can't insert entry in skip list") \
|
||||
if ( (cache_ptr)->slist_enabled ) { \
|
||||
\
|
||||
(entry_ptr)->in_slist = TRUE; \
|
||||
(cache_ptr)->slist_changed = TRUE; \
|
||||
(cache_ptr)->slist_len++; \
|
||||
(cache_ptr)->slist_size += (entry_ptr)->size; \
|
||||
((cache_ptr)->slist_ring_len[(entry_ptr)->ring])++; \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) += (entry_ptr)->size; \
|
||||
HDassert( (entry_ptr) ); \
|
||||
HDassert( (entry_ptr)->size > 0 ); \
|
||||
HDassert( ! ENTRY_IN_SLIST((cache_ptr), (entry_ptr)) ); \
|
||||
HDassert( H5F_addr_defined((entry_ptr)->addr) ); \
|
||||
HDassert( !((entry_ptr)->in_slist) ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
HDassert( (cache_ptr)->slist_ptr ); \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
HDassert( (cache_ptr)->slist_size > 0 ); \
|
||||
if ( H5SL_insert((cache_ptr)->slist_ptr, entry_ptr, \
|
||||
&((entry_ptr)->addr)) < 0) \
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_BADVALUE, (fail_val), \
|
||||
"can't insert entry in skip list") \
|
||||
\
|
||||
(entry_ptr)->in_slist = TRUE; \
|
||||
(cache_ptr)->slist_changed = TRUE; \
|
||||
(cache_ptr)->slist_len++; \
|
||||
(cache_ptr)->slist_size += (entry_ptr)->size; \
|
||||
((cache_ptr)->slist_ring_len[(entry_ptr)->ring])++; \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) += (entry_ptr)->size;\
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
HDassert( (cache_ptr)->slist_size > 0 ); \
|
||||
\
|
||||
} else { /* slist disabled */ \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len == 0 ); \
|
||||
HDassert( (cache_ptr)->slist_size == 0 ); \
|
||||
} \
|
||||
} /* H5C__INSERT_ENTRY_IN_SLIST */
|
||||
|
||||
#endif /* H5C_DO_SANITY_CHECKS */
|
||||
@ -1654,87 +1707,136 @@ if ( ( (cache_ptr)->index_size != \
|
||||
* Function: H5C__REMOVE_ENTRY_FROM_SLIST
|
||||
*
|
||||
* Purpose: Remove the specified instance of H5C_cache_entry_t from the
|
||||
* index skip list in the specified instance of H5C_t. Update
|
||||
* the associated length and size fields.
|
||||
* index skip list in the specified instance of H5C_t. Update
|
||||
* the associated length and size fields.
|
||||
*
|
||||
* Return: N/A
|
||||
*
|
||||
* Programmer: John Mainzer, 5/10/04
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
* JRM -- 7/21/04
|
||||
* Updated function for the addition of the hash table.
|
||||
*
|
||||
* JRM - 7/27/04
|
||||
* Converted from the function H5C_remove_entry_from_tree()
|
||||
* to the macro H5C__REMOVE_ENTRY_FROM_TREE in the hopes of
|
||||
* wringing a little more performance out of the cache.
|
||||
*
|
||||
* QAK -- 11/27/04
|
||||
* Switched over to using skip list routines.
|
||||
*
|
||||
* JRM -- 3/28/07
|
||||
* Updated sanity checks for the new is_read_only and
|
||||
* ro_ref_count fields in H5C_cache_entry_t.
|
||||
*
|
||||
* JRM -- 12/13/14
|
||||
* Added code to set cache_ptr->slist_changed to TRUE
|
||||
* when an entry is removed from the slist.
|
||||
*
|
||||
* JRM -- 4/29/20
|
||||
* Reworked macro to support the slist_enabled field
|
||||
* of H5C_t. If slist_enabled == TRUE, the macro
|
||||
* functions as before. Otherwise, the macro is a no-op,
|
||||
* and the slist must be empty.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#if H5C_DO_SANITY_CHECKS
|
||||
#define H5C__REMOVE_ENTRY_FROM_SLIST(cache_ptr, entry_ptr, during_flush) \
|
||||
{ \
|
||||
HDassert( (cache_ptr) ); \
|
||||
HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \
|
||||
HDassert( (entry_ptr) ); \
|
||||
HDassert( !((entry_ptr)->is_read_only) ); \
|
||||
HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \
|
||||
HDassert( (entry_ptr)->size > 0 ); \
|
||||
HDassert( (entry_ptr)->in_slist ); \
|
||||
HDassert( (cache_ptr)->slist_ptr ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
\
|
||||
if ( H5SL_remove((cache_ptr)->slist_ptr, &(entry_ptr)->addr) \
|
||||
!= (entry_ptr) ) \
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_BADVALUE, FAIL, "can't delete entry from skip list") \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
if(!(during_flush)) \
|
||||
(cache_ptr)->slist_changed = TRUE; \
|
||||
(cache_ptr)->slist_len--; \
|
||||
HDassert( (cache_ptr)->slist_size >= (entry_ptr)->size ); \
|
||||
(cache_ptr)->slist_size -= (entry_ptr)->size; \
|
||||
((cache_ptr)->slist_ring_len[(entry_ptr)->ring])--; \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr->ring)] >= \
|
||||
(entry_ptr)->size ); \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) -= (entry_ptr)->size; \
|
||||
(cache_ptr)->slist_len_increase--; \
|
||||
(cache_ptr)->slist_size_increase -= (int64_t)((entry_ptr)->size); \
|
||||
(entry_ptr)->in_slist = FALSE; \
|
||||
#define H5C__REMOVE_ENTRY_FROM_SLIST(cache_ptr, entry_ptr, during_flush) \
|
||||
{ \
|
||||
HDassert( (cache_ptr) ); \
|
||||
HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \
|
||||
\
|
||||
if ( (cache_ptr)->slist_enabled ) { \
|
||||
\
|
||||
HDassert( (entry_ptr) ); \
|
||||
HDassert( !((entry_ptr)->is_read_only) ); \
|
||||
HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \
|
||||
HDassert( (entry_ptr)->size > 0 ); \
|
||||
HDassert( (entry_ptr)->in_slist ); \
|
||||
HDassert( (cache_ptr)->slist_ptr ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
HDassert( (cache_ptr)->slist_size >= (entry_ptr)->size ); \
|
||||
\
|
||||
if ( H5SL_remove((cache_ptr)->slist_ptr, &(entry_ptr)->addr) \
|
||||
!= (entry_ptr) ) \
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_BADVALUE, FAIL, \
|
||||
"can't delete entry from skip list") \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
if(!(during_flush)) \
|
||||
(cache_ptr)->slist_changed = TRUE; \
|
||||
(cache_ptr)->slist_len--; \
|
||||
HDassert( (cache_ptr)->slist_size >= (entry_ptr)->size ); \
|
||||
(cache_ptr)->slist_size -= (entry_ptr)->size; \
|
||||
((cache_ptr)->slist_ring_len[(entry_ptr)->ring])--; \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr->ring)] >= \
|
||||
(entry_ptr)->size ); \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) -= (entry_ptr)->size;\
|
||||
(cache_ptr)->slist_len_increase--; \
|
||||
(cache_ptr)->slist_size_increase -= (int64_t)((entry_ptr)->size); \
|
||||
(entry_ptr)->in_slist = FALSE; \
|
||||
\
|
||||
} else { /* slist disabled */ \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len == 0 ); \
|
||||
HDassert( (cache_ptr)->slist_size == 0 ); \
|
||||
} \
|
||||
} /* H5C__REMOVE_ENTRY_FROM_SLIST */
|
||||
|
||||
#else /* H5C_DO_SANITY_CHECKS */
|
||||
|
||||
#define H5C__REMOVE_ENTRY_FROM_SLIST(cache_ptr, entry_ptr, during_flush) \
|
||||
{ \
|
||||
HDassert( (cache_ptr) ); \
|
||||
HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \
|
||||
HDassert( (entry_ptr) ); \
|
||||
HDassert( !((entry_ptr)->is_read_only) ); \
|
||||
HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \
|
||||
HDassert( (entry_ptr)->in_slist ); \
|
||||
HDassert( (cache_ptr)->slist_ptr ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
\
|
||||
if ( H5SL_remove((cache_ptr)->slist_ptr, &(entry_ptr)->addr) \
|
||||
!= (entry_ptr) ) \
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_BADVALUE, FAIL, "can't delete entry from skip list") \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
if(!(during_flush)) \
|
||||
(cache_ptr)->slist_changed = TRUE; \
|
||||
(cache_ptr)->slist_len--; \
|
||||
HDassert( (cache_ptr)->slist_size >= (entry_ptr)->size ); \
|
||||
(cache_ptr)->slist_size -= (entry_ptr)->size; \
|
||||
((cache_ptr)->slist_ring_len[(entry_ptr)->ring])--; \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr->ring)] >= \
|
||||
(entry_ptr)->size ); \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) -= (entry_ptr)->size; \
|
||||
(entry_ptr)->in_slist = FALSE; \
|
||||
#define H5C__REMOVE_ENTRY_FROM_SLIST(cache_ptr, entry_ptr, during_flush) \
|
||||
{ \
|
||||
HDassert( (cache_ptr) ); \
|
||||
HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \
|
||||
\
|
||||
if ( (cache_ptr)->slist_enabled ) { \
|
||||
\
|
||||
HDassert( (entry_ptr) ); \
|
||||
HDassert( !((entry_ptr)->is_read_only) ); \
|
||||
HDassert( ((entry_ptr)->ro_ref_count) == 0 ); \
|
||||
HDassert( (entry_ptr)->in_slist ); \
|
||||
HDassert( (cache_ptr)->slist_ptr ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
\
|
||||
if ( H5SL_remove((cache_ptr)->slist_ptr, &(entry_ptr)->addr) \
|
||||
!= (entry_ptr) ) \
|
||||
HGOTO_ERROR(H5E_CACHE, H5E_BADVALUE, FAIL, \
|
||||
"can't delete entry from skip list") \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
if(!(during_flush)) \
|
||||
(cache_ptr)->slist_changed = TRUE; \
|
||||
(cache_ptr)->slist_len--; \
|
||||
HDassert( (cache_ptr)->slist_size >= (entry_ptr)->size ); \
|
||||
(cache_ptr)->slist_size -= (entry_ptr)->size; \
|
||||
((cache_ptr)->slist_ring_len[(entry_ptr)->ring])--; \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr->ring)] >= \
|
||||
(entry_ptr)->size ); \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) -= (entry_ptr)->size;\
|
||||
(entry_ptr)->in_slist = FALSE; \
|
||||
\
|
||||
} else { /* slist disabled */ \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len == 0 ); \
|
||||
HDassert( (cache_ptr)->slist_size == 0 ); \
|
||||
} \
|
||||
} /* H5C__REMOVE_ENTRY_FROM_SLIST */
|
||||
|
||||
#endif /* H5C_DO_SANITY_CHECKS */
|
||||
|
||||
|
||||
@ -1743,7 +1845,7 @@ if ( ( (cache_ptr)->index_size != \
|
||||
* Function: H5C__UPDATE_SLIST_FOR_SIZE_CHANGE
|
||||
*
|
||||
* Purpose: Update cache_ptr->slist_size for a change in the size of
|
||||
* and entry in the slist.
|
||||
* and entry in the slist.
|
||||
*
|
||||
* Return: N/A
|
||||
*
|
||||
@ -1751,24 +1853,30 @@ if ( ( (cache_ptr)->index_size != \
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
* JRM -- 8/27/06
|
||||
* Added the H5C_DO_SANITY_CHECKS version of the macro.
|
||||
* JRM -- 8/27/06
|
||||
* Added the H5C_DO_SANITY_CHECKS version of the macro.
|
||||
*
|
||||
* This version maintains the slist_size_increase field
|
||||
* that are used in sanity checks in the flush routines.
|
||||
* This version maintains the slist_size_increase field
|
||||
* that are used in sanity checks in the flush routines.
|
||||
*
|
||||
* All this is needed as the fractal heap needs to be
|
||||
* able to dirty, resize and/or move entries during the
|
||||
* flush.
|
||||
* All this is needed as the fractal heap needs to be
|
||||
* able to dirty, resize and/or move entries during the
|
||||
* flush.
|
||||
*
|
||||
* JRM -- 12/13/14
|
||||
* Note that we do not set cache_ptr->slist_changed to TRUE
|
||||
* in this case, as the structure of the slist is not
|
||||
* modified.
|
||||
* JRM -- 12/13/14
|
||||
* Note that we do not set cache_ptr->slist_changed to TRUE
|
||||
* in this case, as the structure of the slist is not
|
||||
* modified.
|
||||
*
|
||||
* JRM -- 9/1/15
|
||||
* Added code to maintain the cache_ptr->slist_ring_len
|
||||
* and cache_ptr->slist_ring_size arrays.
|
||||
* JRM -- 9/1/15
|
||||
* Added code to maintain the cache_ptr->slist_ring_len
|
||||
* and cache_ptr->slist_ring_size arrays.
|
||||
*
|
||||
* JRM -- 4/29/20
|
||||
* Reworked macro to support the slist_enabled field
|
||||
* of H5C_t. If slist_enabled == TRUE, the macro
|
||||
* functions as before. Otherwise, the macro is a no-op,
|
||||
* and the slist must be empty.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -1779,32 +1887,43 @@ if ( ( (cache_ptr)->index_size != \
|
||||
{ \
|
||||
HDassert( (cache_ptr) ); \
|
||||
HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \
|
||||
HDassert( (old_size) > 0 ); \
|
||||
HDassert( (new_size) > 0 ); \
|
||||
HDassert( (old_size) <= (cache_ptr)->slist_size ); \
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
HDassert( ((cache_ptr)->slist_len > 1) || \
|
||||
( (cache_ptr)->slist_size == (old_size) ) ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
\
|
||||
(cache_ptr)->slist_size -= (old_size); \
|
||||
(cache_ptr)->slist_size += (new_size); \
|
||||
if ( (cache_ptr)->slist_enabled ) { \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr->ring)] >=(old_size) ); \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) -= (old_size); \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) += (new_size); \
|
||||
HDassert( (old_size) > 0 ); \
|
||||
HDassert( (new_size) > 0 ); \
|
||||
HDassert( (old_size) <= (cache_ptr)->slist_size ); \
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
HDassert( ((cache_ptr)->slist_len > 1) || \
|
||||
( (cache_ptr)->slist_size == (old_size) ) ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
\
|
||||
(cache_ptr)->slist_size_increase -= (int64_t)(old_size); \
|
||||
(cache_ptr)->slist_size_increase += (int64_t)(new_size); \
|
||||
(cache_ptr)->slist_size -= (old_size); \
|
||||
(cache_ptr)->slist_size += (new_size); \
|
||||
\
|
||||
HDassert( (new_size) <= (cache_ptr)->slist_size ); \
|
||||
HDassert( ( (cache_ptr)->slist_len > 1 ) || \
|
||||
( (cache_ptr)->slist_size == (new_size) ) ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr->ring)] \
|
||||
>= (old_size) ); \
|
||||
\
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) -= (old_size); \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) += (new_size); \
|
||||
\
|
||||
(cache_ptr)->slist_size_increase -= (int64_t)(old_size); \
|
||||
(cache_ptr)->slist_size_increase += (int64_t)(new_size); \
|
||||
\
|
||||
HDassert( (new_size) <= (cache_ptr)->slist_size ); \
|
||||
HDassert( ( (cache_ptr)->slist_len > 1 ) || \
|
||||
( (cache_ptr)->slist_size == (new_size) ) ); \
|
||||
\
|
||||
} else { /* slist disabled */ \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len == 0 ); \
|
||||
HDassert( (cache_ptr)->slist_size == 0 ); \
|
||||
} \
|
||||
} /* H5C__UPDATE_SLIST_FOR_SIZE_CHANGE */
|
||||
|
||||
#else /* H5C_DO_SANITY_CHECKS */
|
||||
@ -1813,29 +1932,39 @@ if ( ( (cache_ptr)->index_size != \
|
||||
{ \
|
||||
HDassert( (cache_ptr) ); \
|
||||
HDassert( (cache_ptr)->magic == H5C__H5C_T_MAGIC ); \
|
||||
HDassert( (old_size) > 0 ); \
|
||||
HDassert( (new_size) > 0 ); \
|
||||
HDassert( (old_size) <= (cache_ptr)->slist_size ); \
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
HDassert( ((cache_ptr)->slist_len > 1) || \
|
||||
( (cache_ptr)->slist_size == (old_size) ) ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
\
|
||||
(cache_ptr)->slist_size -= (old_size); \
|
||||
(cache_ptr)->slist_size += (new_size); \
|
||||
if ( (cache_ptr)->slist_enabled ) { \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr->ring)] >=(old_size) ); \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) -= (old_size); \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) += (new_size); \
|
||||
HDassert( (old_size) > 0 ); \
|
||||
HDassert( (new_size) > 0 ); \
|
||||
HDassert( (old_size) <= (cache_ptr)->slist_size ); \
|
||||
HDassert( (cache_ptr)->slist_len > 0 ); \
|
||||
HDassert( ((cache_ptr)->slist_len > 1) || \
|
||||
( (cache_ptr)->slist_size == (old_size) ) ); \
|
||||
HDassert( (entry_ptr)->ring > H5C_RING_UNDEFINED ); \
|
||||
HDassert( (entry_ptr)->ring < H5C_RING_NTYPES ); \
|
||||
HDassert( (cache_ptr)->slist_ring_len[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_len ); \
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr)->ring] <= \
|
||||
(cache_ptr)->slist_size ); \
|
||||
\
|
||||
HDassert( (new_size) <= (cache_ptr)->slist_size ); \
|
||||
HDassert( ( (cache_ptr)->slist_len > 1 ) || \
|
||||
( (cache_ptr)->slist_size == (new_size) ) ); \
|
||||
(cache_ptr)->slist_size -= (old_size); \
|
||||
(cache_ptr)->slist_size += (new_size); \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_ring_size[(entry_ptr->ring)] >= \
|
||||
(old_size) ); \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) -= (old_size); \
|
||||
((cache_ptr)->slist_ring_size[(entry_ptr)->ring]) += (new_size); \
|
||||
\
|
||||
HDassert( (new_size) <= (cache_ptr)->slist_size ); \
|
||||
HDassert( ( (cache_ptr)->slist_len > 1 ) || \
|
||||
( (cache_ptr)->slist_size == (new_size) ) ); \
|
||||
\
|
||||
} else { /* slist disabled */ \
|
||||
\
|
||||
HDassert( (cache_ptr)->slist_len == 0 ); \
|
||||
HDassert( (cache_ptr)->slist_size == 0 ); \
|
||||
} \
|
||||
} /* H5C__UPDATE_SLIST_FOR_SIZE_CHANGE */
|
||||
|
||||
#endif /* H5C_DO_SANITY_CHECKS */
|
||||
@ -3723,10 +3852,11 @@ typedef struct H5C_tag_info_t {
|
||||
* one.
|
||||
*
|
||||
* entry_watched_for_removal: Pointer to an instance of H5C_cache_entry_t
|
||||
* which contains the 'next' entry for an iteration. Removing
|
||||
* which contains the 'next' entry for an iteration. Removing
|
||||
* this entry must trigger a rescan of the iteration, so each
|
||||
* entry removed from the cache is compared against this pointer
|
||||
* and the pointer is reset to NULL if the watched entry is removed.
|
||||
* and the pointer is reset to NULL if the watched entry is
|
||||
* removed.
|
||||
* (This functions similarly to a "dead man's switch")
|
||||
*
|
||||
*
|
||||
@ -3740,6 +3870,36 @@ typedef struct H5C_tag_info_t {
|
||||
* are flushed. (this has been changed -- dirty entries are now removed from
|
||||
* the skip list as they are flushed. JRM - 10/25/05)
|
||||
*
|
||||
* Update 4/21/20:
|
||||
*
|
||||
* Profiling indicates that the cost of maintaining the skip list is
|
||||
* significant. As it is only used on flush and close, maintaining it
|
||||
* only when needed is an obvious optimization.
|
||||
*
|
||||
* To do this, we add a flag to control maintenanace of the skip list.
|
||||
* This flag is initially set to FALSE, which disables all operations
|
||||
* on the skip list.
|
||||
*
|
||||
* At the beginning of either flush or close, we scan the index list,
|
||||
* insert all dirtly entries in the skip list, and enable operations
|
||||
* on skip list by setting above control flag to true.
|
||||
*
|
||||
* At the end of a complete flush, we verify that the skip list is empty,
|
||||
* and set the control flag back to false, so as to avoid skip list
|
||||
* maintenance overhead until the next flush or close.
|
||||
*
|
||||
* In the case of a partial flush (i.e. flush marked entries), we remove
|
||||
* all remaining entries from the skip list, and then set the control flag
|
||||
* back to false -- again avoiding skip list maintenance overhead until
|
||||
* the next flush or close.
|
||||
*
|
||||
* slist_enabled: Boolean flag used to control operation of the skip
|
||||
* list. If this filed is FALSE, operations on the
|
||||
* slist are no-ops, and the slist must be empty. If
|
||||
* it is TRUE, operations on the slist proceed as usual,
|
||||
* and all dirty entries in the metadata cache must be
|
||||
* listed in the slist.
|
||||
*
|
||||
* slist_changed: Boolean flag used to indicate whether the contents of
|
||||
* the slist has changed since the last time this flag was
|
||||
* reset. This is used in the cache flush code to detect
|
||||
@ -4649,6 +4809,7 @@ typedef struct H5C_tag_info_t {
|
||||
* NDEBUG is not #defined.
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
struct H5C_t {
|
||||
uint32_t magic;
|
||||
hbool_t flush_in_progress;
|
||||
@ -4664,7 +4825,7 @@ struct H5C_t {
|
||||
hbool_t evictions_enabled;
|
||||
hbool_t close_warning_received;
|
||||
|
||||
/* Fields for maintaining [hash table] index of entries */
|
||||
/* Fields for maintaining the [hash table] index of entries */
|
||||
uint32_t index_len;
|
||||
size_t index_size;
|
||||
uint32_t index_ring_len[H5C_RING_NTYPES];
|
||||
@ -4685,6 +4846,7 @@ struct H5C_t {
|
||||
H5C_cache_entry_t * entry_watched_for_removal;
|
||||
|
||||
/* Fields for maintaining list of in-order entries, for flushing */
|
||||
hbool_t slist_enabled;
|
||||
hbool_t slist_changed;
|
||||
uint32_t slist_len;
|
||||
size_t slist_size;
|
||||
@ -4882,7 +5044,8 @@ struct H5C_t {
|
||||
#ifndef NDEBUG
|
||||
int64_t get_entry_ptr_from_addr_counter;
|
||||
#endif /* NDEBUG */
|
||||
};
|
||||
|
||||
}; /* H5C_t */
|
||||
|
||||
/* Define typedef for tagged cache entry iteration callbacks */
|
||||
typedef int (*H5C_tag_iter_cb_t)(H5C_cache_entry_t *entry, void *ctx);
|
||||
@ -4911,8 +5074,6 @@ H5_DLL herr_t H5C__mark_flush_dep_unserialized(H5C_cache_entry_t * entry_ptr);
|
||||
H5_DLL herr_t H5C__make_space_in_cache(H5F_t * f, size_t space_needed,
|
||||
hbool_t write_permitted);
|
||||
H5_DLL herr_t H5C__flush_marked_entries(H5F_t * f);
|
||||
H5_DLL herr_t H5C__generate_image(H5F_t *f, H5C_t *cache_ptr,
|
||||
H5C_cache_entry_t *entry_ptr);
|
||||
H5_DLL herr_t H5C__serialize_cache(H5F_t *f);
|
||||
H5_DLL herr_t H5C__iter_tagged_entries(H5C_t *cache, haddr_t tag, hbool_t match_global,
|
||||
H5C_tag_iter_cb_t cb, void *cb_ctx);
|
||||
|
@ -20,8 +20,6 @@
|
||||
* Purpose: Constants and typedefs available to the rest of the
|
||||
* library.
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
@ -2243,7 +2241,6 @@ H5_DLL herr_t H5C_expunge_entry(H5F_t *f, const H5C_class_t *type, haddr_t addr,
|
||||
unsigned flags);
|
||||
H5_DLL herr_t H5C_flush_cache(H5F_t *f, unsigned flags);
|
||||
H5_DLL herr_t H5C_flush_tagged_entries(H5F_t *f, haddr_t tag);
|
||||
H5_DLL herr_t H5C_force_cache_image_load(H5F_t * f);
|
||||
H5_DLL herr_t H5C_evict_tagged_entries(H5F_t *f, haddr_t tag, hbool_t match_global);
|
||||
H5_DLL herr_t H5C_expunge_tag_type_metadata(H5F_t *f, haddr_t tag, int type_id, unsigned flags);
|
||||
H5_DLL herr_t H5C_get_tag(const void *thing, /*OUT*/ haddr_t *tag);
|
||||
@ -2288,7 +2285,10 @@ H5_DLL herr_t H5C_resize_entry(void *thing, size_t new_size);
|
||||
H5_DLL herr_t H5C_set_cache_auto_resize_config(H5C_t *cache_ptr, H5C_auto_size_ctl_t *config_ptr);
|
||||
H5_DLL herr_t H5C_set_cache_image_config(const H5F_t *f, H5C_t *cache_ptr,
|
||||
H5C_cache_image_ctl_t *config_ptr);
|
||||
H5_DLL herr_t H5C_set_evictions_enabled(H5C_t *cache_ptr, hbool_t evictions_enabled);
|
||||
H5_DLL herr_t H5C_set_evictions_enabled(H5C_t *cache_ptr,
|
||||
hbool_t evictions_enabled);
|
||||
H5_DLL herr_t H5C_set_slist_enabled(H5C_t *cache_ptr, hbool_t slist_enabled,
|
||||
hbool_t clear_slist);
|
||||
H5_DLL herr_t H5C_set_prefix(H5C_t *cache_ptr, char *prefix);
|
||||
H5_DLL herr_t H5C_stats(H5C_t *cache_ptr, const char *cache_name,
|
||||
hbool_t display_detailed_stats);
|
||||
@ -2336,12 +2336,9 @@ H5_DLL herr_t H5C_dump_cache_LRU(H5C_t *cache_ptr, const char *cache_name);
|
||||
H5_DLL hbool_t H5C_get_serialization_in_progress(const H5C_t *cache_ptr);
|
||||
H5_DLL hbool_t H5C_cache_is_clean(const H5C_t *cache_ptr, H5C_ring_t inner_ring);
|
||||
H5_DLL herr_t H5C_dump_cache_skip_list(H5C_t *cache_ptr, char *calling_fcn);
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
H5_DLL herr_t H5C_dump_coll_write_list(H5C_t * cache_ptr, char * calling_fcn);
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
H5_DLL herr_t H5C_get_entry_ptr_from_addr(H5C_t *cache_ptr, haddr_t addr,
|
||||
void **entry_ptr_ptr);
|
||||
H5_DLL herr_t H5C_flush_dependency_exists(H5C_t *cache_ptr, haddr_t parent_addr,
|
||||
H5_DLL herr_t H5C_flush_dependency_exists(H5C_t *cache_ptr, haddr_t parent_addr,
|
||||
haddr_t child_addr, hbool_t *fd_exists_ptr);
|
||||
H5_DLL herr_t H5C_verify_entry_type(H5C_t *cache_ptr, haddr_t addr,
|
||||
const H5C_class_t *expected_type, hbool_t *in_cache_ptr,
|
||||
|
@ -19,8 +19,6 @@
|
||||
*
|
||||
* Purpose: Public include file for cache functions.
|
||||
*
|
||||
* Modifications:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
#ifndef _H5Cpublic_H
|
||||
|
@ -11,7 +11,7 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/* Programmer: Robb Matzke <matzke@llnl.gov>
|
||||
/* Programmer: Robb Matzke
|
||||
* Wednesday, October 8, 1997
|
||||
*
|
||||
* Purpose: v1 B-tree indexed (chunked) I/O functions. The chunks are
|
||||
@ -620,8 +620,7 @@ done:
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Robb Matzke
|
||||
* Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
* March 28, 2002
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
|
@ -112,7 +112,7 @@ static herr_t H5D__bt2_found_cb(const void *nrecord, void *op_data);
|
||||
*/
|
||||
static herr_t H5D__bt2_remove_cb(const void *nrecord, void *_udata);
|
||||
|
||||
/* Callback for H5B2_modify() which is called in H5D__bt2_idx_insert() */
|
||||
/* Callback for H5B2_update() which is called in H5D__bt2_idx_insert() */
|
||||
static herr_t H5D__bt2_mod_cb(void *_record, void *_op_data, hbool_t *changed);
|
||||
|
||||
/* Chunked layout indexing callbacks for v2 B-tree indexing */
|
||||
@ -837,7 +837,7 @@ H5D__bt2_idx_is_space_alloc(const H5O_storage_chunk_t *storage)
|
||||
* Function: H5D__bt2_mod_cb
|
||||
*
|
||||
* Purpose: Modify record for dataset chunk when it is found in a v2 B-tree.
|
||||
* This is the callback for H5B2_modify() which is called in
|
||||
* This is the callback for H5B2_update() which is called in
|
||||
* H5D__bt2_idx_insert().
|
||||
*
|
||||
* Return: Success: non-negative
|
||||
@ -1266,13 +1266,6 @@ done:
|
||||
*
|
||||
* Programmer: Vailin Choi; June 2010
|
||||
*
|
||||
* Modifications:
|
||||
* Vailin Choi; March 2011
|
||||
* Initialize size of an unfiltered chunk.
|
||||
* This is a fix for for the assertion failure in:
|
||||
* [src/H5FSsection.c:968: H5FS_sect_link_size: Assertion `bin < sinfo->nbins' failed.]
|
||||
* which is uncovered by test_unlink_chunked_dataset() in test/unlink.c
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
|
251
src/H5Dchunk.c
251
src/H5Dchunk.c
@ -11,7 +11,7 @@
|
||||
* help@hdfgroup.org. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/* Programmer: Quincey Koziol <koziol@hdfgroup.org>
|
||||
/* Programmer: Quincey Koziol
|
||||
* Thursday, April 24, 2008
|
||||
*
|
||||
* Purpose: Abstract indexed (chunked) I/O functions. The logical
|
||||
@ -278,7 +278,7 @@ H5D__nonexistent_readvv(const H5D_io_info_t *io_info,
|
||||
size_t chunk_max_nseq, size_t *chunk_curr_seq, size_t chunk_len_arr[], hsize_t chunk_offset_arr[],
|
||||
size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[]);
|
||||
|
||||
/* format convert cb */
|
||||
/* Format convert cb */
|
||||
static int H5D__chunk_format_convert_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata);
|
||||
|
||||
/* Helper routines */
|
||||
@ -300,9 +300,7 @@ static herr_t H5D__create_chunk_file_map_all(H5D_chunk_map_t *fm,
|
||||
const H5D_io_info_t *io_info);
|
||||
static herr_t H5D__create_chunk_file_map_hyper(H5D_chunk_map_t *fm,
|
||||
const H5D_io_info_t *io_info);
|
||||
|
||||
static herr_t H5D__create_chunk_mem_map_1d(const H5D_chunk_map_t *fm);
|
||||
|
||||
static herr_t H5D__create_chunk_mem_map_hyper(const H5D_chunk_map_t *fm);
|
||||
static herr_t H5D__chunk_file_cb(void *elem, const H5T_t *type, unsigned ndims,
|
||||
const hsize_t *coords, void *fm);
|
||||
@ -327,8 +325,8 @@ static herr_t H5D__chunk_collective_fill(const H5D_t *dset,
|
||||
static int H5D__chunk_cmp_addr(const void *addr1, const void *addr2);
|
||||
#endif /* H5_HAVE_PARALLEL */
|
||||
|
||||
static int
|
||||
H5D__chunk_dump_index_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata);
|
||||
/* Debugging helper routine callback */
|
||||
static int H5D__chunk_dump_index_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata);
|
||||
|
||||
/*********************/
|
||||
/* Package Variables */
|
||||
@ -999,7 +997,7 @@ H5D__chunk_init(H5F_t *f, const H5D_t * const dset, hid_t dapl_id)
|
||||
rdcc->scaled_dims[u] = (dset->shared->curr_dims[u] + dset->shared->layout.u.chunk.dim[u] - 1) /
|
||||
dset->shared->layout.u.chunk.dim[u];
|
||||
|
||||
if( !(scaled_power2up = H5VM_power2up(rdcc->scaled_dims[u])) )
|
||||
if(!(scaled_power2up = H5VM_power2up(rdcc->scaled_dims[u])))
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "unable to get the next power of 2")
|
||||
|
||||
/* Inital 'power2up' values for scaled dimensions */
|
||||
@ -2821,12 +2819,12 @@ H5D__chunk_flush(H5D_t *dset)
|
||||
|
||||
/* Loop over all entries in the chunk cache */
|
||||
for(ent = rdcc->head; ent; ent = next) {
|
||||
next = ent->next;
|
||||
next = ent->next;
|
||||
if(H5D__chunk_flush_entry(dset, ent, FALSE) < 0)
|
||||
nerrors++;
|
||||
} /* end for */
|
||||
if(nerrors)
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTFLUSH, FAIL, "unable to flush one or more raw data chunks")
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTFLUSH, FAIL, "unable to flush one or more raw data chunks")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
@ -2970,7 +2968,7 @@ H5D_chunk_idx_reset(H5O_storage_chunk_t *storage, hbool_t reset_addr)
|
||||
|
||||
/* Reset index structures */
|
||||
if((storage->ops->reset)(storage, reset_addr) < 0)
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "unable to reset chunk index info")
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTFREE, FAIL, "unable to reset chunk index info")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
@ -2992,7 +2990,7 @@ done:
|
||||
static herr_t
|
||||
H5D__chunk_cinfo_cache_reset(H5D_chunk_cached_t *last)
|
||||
{
|
||||
FUNC_ENTER_PACKAGE_NOERR
|
||||
FUNC_ENTER_STATIC_NOERR
|
||||
|
||||
/* Sanity check */
|
||||
HDassert(last);
|
||||
@ -3615,14 +3613,14 @@ H5D__chunk_cache_evict(const H5D_t *dset, H5D_rdcc_ent_t *ent, hbool_t flush)
|
||||
static herr_t
|
||||
H5D__chunk_cache_prune(const H5D_t *dset, size_t size)
|
||||
{
|
||||
const H5D_rdcc_t *rdcc = &(dset->shared->cache.chunk);
|
||||
size_t total = rdcc->nbytes_max;
|
||||
const int nmeth = 2; /*number of methods */
|
||||
int w[1]; /*weighting as an interval */
|
||||
H5D_rdcc_ent_t *p[2], *cur; /*list pointers */
|
||||
H5D_rdcc_ent_t *n[2]; /*list next pointers */
|
||||
int nerrors = 0; /* Accumulated error count during preemptions */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
const H5D_rdcc_t *rdcc = &(dset->shared->cache.chunk);
|
||||
size_t total = rdcc->nbytes_max;
|
||||
const int nmeth = 2; /* Number of methods */
|
||||
int w[1]; /* Weighting as an interval */
|
||||
H5D_rdcc_ent_t *p[2], *cur; /* List pointers */
|
||||
H5D_rdcc_ent_t *n[2]; /* List next pointers */
|
||||
int nerrors = 0; /* Accumulated error count during preemptions */
|
||||
herr_t ret_value = SUCCEED;/* Return value */
|
||||
|
||||
FUNC_ENTER_STATIC
|
||||
|
||||
@ -3643,62 +3641,62 @@ H5D__chunk_cache_prune(const H5D_t *dset, size_t size)
|
||||
while((p[0] || p[1]) && (rdcc->nbytes_used + size) > total) {
|
||||
int i; /* Local index variable */
|
||||
|
||||
/* Introduce new pointers */
|
||||
for(i = 0; i < nmeth - 1; i++)
|
||||
/* Introduce new pointers */
|
||||
for(i = 0; i < nmeth - 1; i++)
|
||||
if(0 == w[i])
|
||||
p[i + 1] = rdcc->head;
|
||||
|
||||
/* Compute next value for each pointer */
|
||||
for(i = 0; i < nmeth; i++)
|
||||
/* Compute next value for each pointer */
|
||||
for(i = 0; i < nmeth; i++)
|
||||
n[i] = p[i] ? p[i]->next : NULL;
|
||||
|
||||
/* Give each method a chance */
|
||||
for(i = 0; i < nmeth && (rdcc->nbytes_used + size) > total; i++) {
|
||||
if(0 == i && p[0] && !p[0]->locked &&
|
||||
/* Give each method a chance */
|
||||
for(i = 0; i < nmeth && (rdcc->nbytes_used + size) > total; i++) {
|
||||
if(0 == i && p[0] && !p[0]->locked &&
|
||||
((0 == p[0]->rd_count && 0 == p[0]->wr_count) ||
|
||||
(0 == p[0]->rd_count && dset->shared->layout.u.chunk.size == p[0]->wr_count) ||
|
||||
(dset->shared->layout.u.chunk.size == p[0]->rd_count && 0 == p[0]->wr_count))) {
|
||||
/*
|
||||
* Method 0: Preempt entries that have been completely written
|
||||
* and/or completely read but not entries that are partially
|
||||
* written or partially read.
|
||||
*/
|
||||
cur = p[0];
|
||||
} else if(1 == i && p[1] && !p[1]->locked) {
|
||||
/*
|
||||
* Method 1: Preempt the entry without regard to
|
||||
* considerations other than being locked. This is the last
|
||||
* resort preemption.
|
||||
*/
|
||||
cur = p[1];
|
||||
} else {
|
||||
/* Nothing to preempt at this point */
|
||||
cur = NULL;
|
||||
}
|
||||
(0 == p[0]->rd_count && dset->shared->layout.u.chunk.size == p[0]->wr_count) ||
|
||||
(dset->shared->layout.u.chunk.size == p[0]->rd_count && 0 == p[0]->wr_count))) {
|
||||
/*
|
||||
* Method 0: Preempt entries that have been completely written
|
||||
* and/or completely read but not entries that are partially
|
||||
* written or partially read.
|
||||
*/
|
||||
cur = p[0];
|
||||
} else if(1 == i && p[1] && !p[1]->locked) {
|
||||
/*
|
||||
* Method 1: Preempt the entry without regard to
|
||||
* considerations other than being locked. This is the last
|
||||
* resort preemption.
|
||||
*/
|
||||
cur = p[1];
|
||||
} else {
|
||||
/* Nothing to preempt at this point */
|
||||
cur = NULL;
|
||||
}
|
||||
|
||||
if(cur) {
|
||||
if(cur) {
|
||||
int j; /* Local index variable */
|
||||
|
||||
for(j = 0; j < nmeth; j++) {
|
||||
if(p[j] == cur)
|
||||
for(j = 0; j < nmeth; j++) {
|
||||
if(p[j] == cur)
|
||||
p[j] = NULL;
|
||||
if(n[j] == cur)
|
||||
if(n[j] == cur)
|
||||
n[j] = cur->next;
|
||||
} /* end for */
|
||||
if(H5D__chunk_cache_evict(dset, cur, TRUE) < 0)
|
||||
} /* end for */
|
||||
if(H5D__chunk_cache_evict(dset, cur, TRUE) < 0)
|
||||
nerrors++;
|
||||
} /* end if */
|
||||
} /* end for */
|
||||
} /* end if */
|
||||
} /* end for */
|
||||
|
||||
/* Advance pointers */
|
||||
for(i = 0; i < nmeth; i++)
|
||||
/* Advance pointers */
|
||||
for(i = 0; i < nmeth; i++)
|
||||
p[i] = n[i];
|
||||
for(i = 0; i < nmeth - 1; i++)
|
||||
for(i = 0; i < nmeth - 1; i++)
|
||||
w[i] -= 1;
|
||||
} /* end while */
|
||||
|
||||
if(nerrors)
|
||||
HGOTO_ERROR(H5E_IO, H5E_CANTFLUSH, FAIL, "unable to preempt one or more raw data cache entry")
|
||||
HGOTO_ERROR(H5E_IO, H5E_CANTFLUSH, FAIL, "unable to preempt one or more raw data cache entry")
|
||||
|
||||
done:
|
||||
FUNC_LEAVE_NOAPI(ret_value)
|
||||
@ -4347,7 +4345,7 @@ H5D__chunk_allocate(const H5D_io_info_t *io_info, hbool_t full_overwrite, hsize_
|
||||
hbool_t unfilt_edge_chunk_dim[H5O_LAYOUT_NDIMS]; /* Whether there are unfiltered edge chunks at the edge of each dimension */
|
||||
hsize_t edge_chunk_scaled[H5O_LAYOUT_NDIMS]; /* Offset of the unfiltered edge chunks at the edge of each dimension */
|
||||
unsigned nunfilt_edge_chunk_dims = 0; /* Number of dimensions on an edge */
|
||||
const H5O_storage_chunk_t *sc = &(layout->storage.u.chunk);
|
||||
H5O_storage_chunk_t *sc = &(layout->storage.u.chunk); /* Convenience variable */
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_PACKAGE
|
||||
@ -4556,9 +4554,8 @@ H5D__chunk_allocate(const H5D_io_info_t *io_info, hbool_t full_overwrite, hsize_
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTGET, FAIL, "error looking up chunk address")
|
||||
#ifndef NDEBUG
|
||||
/* None of the chunks should be allocated */
|
||||
if(H5D_CHUNK_IDX_NONE != sc->idx_type) {
|
||||
if(H5D_CHUNK_IDX_NONE != sc->idx_type)
|
||||
HDassert(!H5F_addr_defined(udata.chunk_block.offset));
|
||||
}
|
||||
|
||||
/* Make sure the chunk is really in the dataset and outside the
|
||||
* original dimensions */
|
||||
@ -4957,7 +4954,7 @@ H5D__chunk_collective_fill(const H5D_t *dset, H5D_chunk_coll_info_t *chunk_info,
|
||||
int blocks, leftover, block_len; /* converted to int for MPI */
|
||||
MPI_Aint *chunk_disp_array = NULL;
|
||||
int *block_lens = NULL;
|
||||
MPI_Datatype mem_type, file_type;
|
||||
MPI_Datatype mem_type = MPI_BYTE, file_type = MPI_BYTE;
|
||||
H5FD_mpio_xfer_t prev_xfer_mode; /* Previous data xfer mode */
|
||||
hbool_t have_xfer_mode = FALSE; /* Whether the previous xffer mode has been retrieved */
|
||||
hbool_t need_addr_sort = FALSE;
|
||||
@ -4983,9 +4980,9 @@ H5D__chunk_collective_fill(const H5D_t *dset, H5D_chunk_coll_info_t *chunk_info,
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_BADVALUE, FAIL, "Resulted in division by zero")
|
||||
num_blocks = (size_t)(chunk_info->num_io / (size_t)mpi_size); /* value should be the same on all procs */
|
||||
|
||||
/* after evenly distributing the blocks between processes, are
|
||||
there any leftover blocks for each individual process
|
||||
(round-robin) */
|
||||
/* After evenly distributing the blocks between processes, are there any
|
||||
* leftover blocks for each individual process (round-robin)?
|
||||
*/
|
||||
leftover_blocks = (size_t)(chunk_info->num_io % (size_t)mpi_size);
|
||||
|
||||
/* Cast values to types needed by MPI */
|
||||
@ -4993,58 +4990,62 @@ H5D__chunk_collective_fill(const H5D_t *dset, H5D_chunk_coll_info_t *chunk_info,
|
||||
H5_CHECKED_ASSIGN(leftover, int, leftover_blocks, size_t);
|
||||
H5_CHECKED_ASSIGN(block_len, int, chunk_size, size_t);
|
||||
|
||||
/* Allocate buffers */
|
||||
/* (MSC - should not need block_lens if MPI_type_create_hindexed_block is working) */
|
||||
if(NULL == (block_lens = (int *)H5MM_malloc((size_t)(blocks + 1) * sizeof(int))))
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTALLOC, FAIL, "couldn't allocate chunk lengths buffer")
|
||||
if(NULL == (chunk_disp_array = (MPI_Aint *)H5MM_malloc((size_t)(blocks + 1) * sizeof(MPI_Aint))))
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTALLOC, FAIL, "couldn't allocate chunk file displacement buffer")
|
||||
/* Check if we have any chunks to write on this rank */
|
||||
if(num_blocks > 0 || (leftover && leftover > mpi_rank)) {
|
||||
/* Allocate buffers */
|
||||
/* (MSC - should not need block_lens if MPI_type_create_hindexed_block is working) */
|
||||
if(NULL == (block_lens = (int *)H5MM_malloc((size_t)(blocks + 1) * sizeof(int))))
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTALLOC, FAIL, "couldn't allocate chunk lengths buffer")
|
||||
if(NULL == (chunk_disp_array = (MPI_Aint *)H5MM_malloc((size_t)(blocks + 1) * sizeof(MPI_Aint))))
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTALLOC, FAIL, "couldn't allocate chunk file displacement buffer")
|
||||
|
||||
for(i = 0 ; i < blocks ; i++) {
|
||||
/* store the chunk address as an MPI_Aint */
|
||||
chunk_disp_array[i] = (MPI_Aint)(chunk_info->addr[i + mpi_rank*blocks]);
|
||||
for(i = 0 ; i < blocks ; i++) {
|
||||
/* store the chunk address as an MPI_Aint */
|
||||
chunk_disp_array[i] = (MPI_Aint)(chunk_info->addr[i + (mpi_rank * blocks)]);
|
||||
|
||||
/* MSC - should not need this if MPI_type_create_hindexed_block is working */
|
||||
block_lens[i] = block_len;
|
||||
/* MSC - should not need this if MPI_type_create_hindexed_block is working */
|
||||
block_lens[i] = block_len;
|
||||
|
||||
/* make sure that the addresses in the datatype are
|
||||
monotonically non decreasing */
|
||||
if(i && (chunk_disp_array[i] < chunk_disp_array[i - 1]))
|
||||
need_addr_sort = TRUE;
|
||||
} /* end for */
|
||||
/* Make sure that the addresses in the datatype are
|
||||
* monotonically non-decreasing
|
||||
*/
|
||||
if(i && (chunk_disp_array[i] < chunk_disp_array[i - 1]))
|
||||
need_addr_sort = TRUE;
|
||||
} /* end for */
|
||||
|
||||
/* calculate if there are any leftover blocks after evenly
|
||||
distributing. If there are, then round robin the distribution
|
||||
to processes 0 -> leftover. */
|
||||
if(leftover && leftover > mpi_rank) {
|
||||
chunk_disp_array[blocks] = (MPI_Aint)chunk_info->addr[blocks*mpi_size + mpi_rank];
|
||||
if(blocks && (chunk_disp_array[blocks] < chunk_disp_array[blocks - 1]))
|
||||
need_addr_sort = TRUE;
|
||||
block_lens[blocks] = block_len;
|
||||
blocks++;
|
||||
}
|
||||
/* Calculate if there are any leftover blocks after evenly
|
||||
* distributing. If there are, then round-robin the distribution
|
||||
* to processes 0 -> leftover.
|
||||
*/
|
||||
if(leftover && leftover > mpi_rank) {
|
||||
chunk_disp_array[blocks] = (MPI_Aint)chunk_info->addr[(blocks * mpi_size) + mpi_rank];
|
||||
if(blocks && (chunk_disp_array[blocks] < chunk_disp_array[blocks - 1]))
|
||||
need_addr_sort = TRUE;
|
||||
block_lens[blocks] = block_len;
|
||||
blocks++;
|
||||
}
|
||||
|
||||
/*
|
||||
* Ensure that the blocks are sorted in monotonically non-decreasing
|
||||
* order of offset in the file.
|
||||
*/
|
||||
if(need_addr_sort)
|
||||
HDqsort(chunk_disp_array, blocks, sizeof(MPI_Aint), H5D__chunk_cmp_addr);
|
||||
/* Ensure that the blocks are sorted in monotonically non-decreasing
|
||||
* order of offset in the file.
|
||||
*/
|
||||
if(need_addr_sort)
|
||||
HDqsort(chunk_disp_array, blocks, sizeof(MPI_Aint), H5D__chunk_cmp_addr);
|
||||
|
||||
/* MSC - should use this if MPI_type_create_hindexed block is working:
|
||||
* mpi_code = MPI_Type_create_hindexed_block(blocks, block_len, chunk_disp_array, MPI_BYTE, &file_type);
|
||||
*/
|
||||
mpi_code = MPI_Type_create_hindexed(blocks, block_lens, chunk_disp_array, MPI_BYTE, &file_type);
|
||||
if(mpi_code != MPI_SUCCESS)
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_hindexed failed", mpi_code)
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_commit(&file_type)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_commit failed", mpi_code)
|
||||
/* MSC - should use this if MPI_type_create_hindexed block is working:
|
||||
* mpi_code = MPI_Type_create_hindexed_block(blocks, block_len, chunk_disp_array, MPI_BYTE, &file_type);
|
||||
*/
|
||||
mpi_code = MPI_Type_create_hindexed(blocks, block_lens, chunk_disp_array, MPI_BYTE, &file_type);
|
||||
if(mpi_code != MPI_SUCCESS)
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_hindexed failed", mpi_code)
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_commit(&file_type)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_commit failed", mpi_code)
|
||||
|
||||
mpi_code = MPI_Type_create_hvector(blocks, block_len, 0, MPI_BYTE, &mem_type);
|
||||
if(mpi_code != MPI_SUCCESS)
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_hvector failed", mpi_code)
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_commit(&mem_type)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_commit failed", mpi_code)
|
||||
mpi_code = MPI_Type_create_hvector(blocks, block_len, 0, MPI_BYTE, &mem_type);
|
||||
if(mpi_code != MPI_SUCCESS)
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_create_hvector failed", mpi_code)
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_commit(&mem_type)))
|
||||
HMPI_GOTO_ERROR(FAIL, "MPI_Type_commit failed", mpi_code)
|
||||
} /* end if */
|
||||
|
||||
/* Set MPI-IO VFD properties */
|
||||
|
||||
@ -5076,10 +5077,12 @@ done:
|
||||
HDONE_ERROR(H5E_DATASET, H5E_CANTSET, FAIL, "can't set transfer mode")
|
||||
|
||||
/* free things */
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_free(&file_type)))
|
||||
HMPI_DONE_ERROR(FAIL, "MPI_Type_free failed", mpi_code)
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_free(&mem_type)))
|
||||
HMPI_DONE_ERROR(FAIL, "MPI_Type_free failed", mpi_code)
|
||||
if(MPI_BYTE != file_type)
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_free(&file_type)))
|
||||
HMPI_DONE_ERROR(FAIL, "MPI_Type_free failed", mpi_code)
|
||||
if(MPI_BYTE != mem_type)
|
||||
if(MPI_SUCCESS != (mpi_code = MPI_Type_free(&mem_type)))
|
||||
HMPI_DONE_ERROR(FAIL, "MPI_Type_free failed", mpi_code)
|
||||
H5MM_xfree(chunk_disp_array);
|
||||
H5MM_xfree(block_lens);
|
||||
|
||||
@ -5126,8 +5129,8 @@ H5D__chunk_cmp_addr(const void *addr1, const void *addr2)
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* March 26, 2002
|
||||
* Programmer: Pedro Vicente
|
||||
* March 26, 2002
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
@ -5252,7 +5255,7 @@ done:
|
||||
*
|
||||
* Return: Non-negative on success/Negative on failure
|
||||
*
|
||||
* Programmer: Pedro Vicente, pvn@ncsa.uiuc.edu
|
||||
* Programmer: Pedro Vicente
|
||||
* Algorithm: Robb Matzke
|
||||
* March 27, 2002
|
||||
*
|
||||
@ -5405,13 +5408,13 @@ H5D__chunk_prune_by_extent(H5D_t *dset, const hsize_t *old_dim)
|
||||
elmts_per_chunk = 1;
|
||||
for(u = 0; u < space_ndims; u++) {
|
||||
elmts_per_chunk *= layout->u.chunk.dim[u];
|
||||
chunk_dim[u] = layout->u.chunk.dim[u];
|
||||
shrunk_dim[u] = (space_dim[u] < old_dim[u]);
|
||||
chunk_dim[u] = layout->u.chunk.dim[u];
|
||||
shrunk_dim[u] = (space_dim[u] < old_dim[u]);
|
||||
} /* end for */
|
||||
|
||||
/* Create a dataspace for a chunk & set the extent */
|
||||
if(NULL == (chunk_space = H5S_create_simple(space_ndims, chunk_dim, NULL)))
|
||||
HGOTO_ERROR(H5E_DATASPACE, H5E_CANTCREATE, FAIL, "can't create simple dataspace")
|
||||
HGOTO_ERROR(H5E_DATASPACE, H5E_CANTCREATE, FAIL, "can't create simple dataspace")
|
||||
|
||||
/* Reset hyperslab start array */
|
||||
/* (hyperslabs will always start from origin) */
|
||||
@ -5599,7 +5602,7 @@ H5D__chunk_prune_by_extent(H5D_t *dset, const hsize_t *old_dim)
|
||||
/* Remove the chunk from disk, if present */
|
||||
if(H5F_addr_defined(chk_udata.chunk_block.offset)) {
|
||||
/* Update the offset in idx_udata */
|
||||
idx_udata.scaled = udata.common.scaled;
|
||||
idx_udata.scaled = udata.common.scaled;
|
||||
|
||||
/* Remove the chunk from disk */
|
||||
if((sc->ops->remove)(&idx_info, &idx_udata) < 0)
|
||||
@ -5989,7 +5992,7 @@ H5D__chunk_copy_cb(const H5D_chunk_rec_t *chunk_rec, void *_udata)
|
||||
if(pline && pline->nused) {
|
||||
must_filter = TRUE;
|
||||
if((udata->common.layout->flags & H5O_LAYOUT_CHUNK_DONT_FILTER_PARTIAL_BOUND_CHUNKS) &&
|
||||
H5D__chunk_is_partial_edge_chunk(udata->dset_ndims, udata->common.layout->dim, chunk_rec->scaled, udata->dset_dims))
|
||||
H5D__chunk_is_partial_edge_chunk(udata->dset_ndims, udata->common.layout->dim, chunk_rec->scaled, udata->dset_dims))
|
||||
must_filter = FALSE;
|
||||
}
|
||||
|
||||
@ -6932,9 +6935,9 @@ H5D__chunk_file_alloc(const H5D_chk_idx_info_t *idx_info, const H5F_block_t *old
|
||||
} /* end else */
|
||||
} /* end if */
|
||||
else {
|
||||
HDassert(!H5F_addr_defined(new_chunk->offset));
|
||||
HDassert(new_chunk->length == idx_info->layout->size);
|
||||
alloc_chunk = TRUE;
|
||||
HDassert(!H5F_addr_defined(new_chunk->offset));
|
||||
HDassert(new_chunk->length == idx_info->layout->size);
|
||||
alloc_chunk = TRUE;
|
||||
} /* end else */
|
||||
|
||||
/* Actually allocate space for the chunk in the file */
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Raymond Lu <slu@ncsa.uiuc.edu>
|
||||
* Programmer: Raymond Lu
|
||||
* August 5, 2002
|
||||
*
|
||||
* Purpose: Compact dataset I/O functions. These routines are similar
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Thursday, September 28, 2000
|
||||
*
|
||||
* Purpose:
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5Ddeprec.c
|
||||
* April 5 2007
|
||||
* Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Deprecated functions from the H5D interface. These
|
||||
* functions are here for compatibility purposes and may be
|
||||
@ -148,12 +148,12 @@ H5Dcreate1(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id,
|
||||
if(NULL == (vol_obj = H5VL_vol_object(loc_id)))
|
||||
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, H5I_INVALID_HID, "invalid location identifier")
|
||||
|
||||
/* Create the dataset through the VOL */
|
||||
/* Create the dataset */
|
||||
if(NULL == (dset = H5VL_dataset_create(vol_obj, &loc_params, name, H5P_LINK_CREATE_DEFAULT, type_id, space_id, dcpl_id,
|
||||
H5P_DATASET_ACCESS_DEFAULT, H5P_DATASET_XFER_DEFAULT, H5_REQUEST_NULL)))
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, H5I_INVALID_HID, "unable to create dataset")
|
||||
|
||||
/* Get an atom for the dataset */
|
||||
/* Register the new dataset to get an ID for it */
|
||||
if((ret_value = H5VL_register(H5I_DATASET, dset, vol_obj->connector, TRUE)) < 0)
|
||||
HGOTO_ERROR(H5E_DATASET, H5E_CANTREGISTER, H5I_INVALID_HID, "unable to register dataset")
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
/*
|
||||
* Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
|
||||
* Programmer: Quincey Koziol
|
||||
* Thursday, September 30, 2004
|
||||
*/
|
||||
|
||||
@ -336,9 +336,6 @@ done:
|
||||
* Programmer: Robb Matzke
|
||||
* Wednesday, March 4, 1998
|
||||
*
|
||||
* Modifications:
|
||||
* Robb Matzke, 1999-07-28
|
||||
* The ADDR argument is passed by value.
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
|
@ -15,7 +15,7 @@
|
||||
*
|
||||
* Created: H5Dfill.c
|
||||
* Jun 19 2007
|
||||
* Quincey Koziol <koziol@hdfgroup.org>
|
||||
* Quincey Koziol
|
||||
*
|
||||
* Purpose: Fill value operations for datasets
|
||||
*
|
||||
@ -647,7 +647,7 @@ done:
|
||||
static herr_t
|
||||
H5D__fill_release(H5D_fill_buf_info_t *fb_info)
|
||||
{
|
||||
FUNC_ENTER_PACKAGE_NOERR
|
||||
FUNC_ENTER_STATIC_NOERR
|
||||
|
||||
/* Check args */
|
||||
HDassert(fb_info);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user