[svn-r1240] Changes since 19990427

----------------------

./tools/h5ls.c
	Added a `--address' (`-a') switch which causes h5ls to display
	file addresses for raw data. For contiguous datasets it's just
	a nice simple number, but for chunked datasets it's a list of
	logical dataset coordinates, file addresses, filter masks, and
	storage sizes.

	Changed `--dump' switch to `--data'.

./src/H5D.c
./src/H5F.c
./src/H5Fprivate.h
	Enhanced the indexed-storage B-tree iterator so it can dump
	raw data addresses (and other info) to the standard error
	stream.

	Added H5Ddebug() so h5ls has a way to dump addresses for
	datasets. I'm not sure what else this API function should do,
	so I think we should discuss it before we document it. So far,
	h5ls is the only thing that uses it, and we can easily change
	that.

./src/H5Tconv.c
./test/dtypes.c
	Finally had a chance to verify Paul's H5T_conv_s_s (general
	string to string conversions) bug fixes and incorporate them
	into H5T_conv_f_f (general floating-point to floating-point
	conversions) and H5T_conv_i_i (general integer to integer
	conversons). Thanks Paul.

./src/H5D.c
./src/H5S.c
./src/H5Sprivate.h
	Added performance timers around data space read and write
	callbacks. They were already there for the gather/scatter
	callbacks.

	The timings for read/write callbacks are displayed along with
	gather/scatter when data space debugging is turned on.

./bin/iostats
	Updated to print totals. Added a `--fast' option that doesn't
	do any output except the totals and is much faster.

./bin/trace
	Changed __unused__ to UNUSED to match source code.

./config/gnu-flags
	Updated error message for pgcc. I've sent bug reports to the
	pgcc people but the new version still has the same bug.

./configure.in
./config/conclude.in
./config/depend.in
	Fixed dependencies for non-GNU makes when run in a directory
	other than the hdf5 source tree.

	Updated GNU `make dep' rules to copy the distributed
	dependencies for non-GNU makes into the source tree when run
	in some other directory.
This commit is contained in:
Robb Matzke 1999-04-30 10:54:52 -05:00
parent 2be6b9f63c
commit cc2184b6ef
20 changed files with 491 additions and 163 deletions

View File

@ -3,51 +3,81 @@
# Usage: pipe the output of Linux's `strace' program into the stdin of
# this command, and the output of this command into gnuplot.
my ($fast,$npasses);
if ($ARGV[0] =~ /^--?fast$/) {
$fast = 1;
shift;
}
my $filename = shift || "tstab2.h5";
my $total = 0;
my %What; # What{pos}{nbytes}{r|w} = naccesses
my($total_writes, $total_bytes_out, $total_reads, $total_bytes_in);
while (<>) {
if (!defined $fd) {
if (/^open\("(.*?)".*=\s+(\d+)/ && $1 eq $filename) {
$fd = $2;
$pos = 0;
}
} elsif (/^close\((\d+)/ && $1==$fd) {
$fd = undef;
} elsif (/^lseek\((\d+), -?\d+,.*= (\d+)/ &&
$1==$fd && $2>=0) {
$pos = $2;
} elsif (/^lseek\((\d+),/ && $1==$fd) {
die $_;
} elsif (/^write\((\d+), ".*?"(\.\.\.)?, \d+\)\s*= (\d+)/ &&
$1==$fd && $3>=0) {
my $nbytes = $3;
if (!defined $fd) {
if (/^open\("(.*?)".*=\s+(\d+)/ && $1 eq $filename) {
$fd = $2;
$pos = 0;
}
} elsif (/^close\((\d+)/ && $1==$fd) {
$fd = undef;
} elsif (!$fast &&
/^lseek\((\d+), -?\d+,.*= (\d+)/ &&
$1==$fd && $2>=0) {
$pos = $2;
} elsif (!$fast && /^lseek\((\d+),/ && $1==$fd) {
die $_;
} elsif (/^write\((\d+), ".*?"(\.\.\.)?, \d+\)\s*= (\d+)/ &&
$1==$fd && $3>=0) {
my $nbytes = $3;
if ($fast) {
$total_writes++;
$total_bytes_out += $nbytes;
} else {
$What{$pos}{$nbytes}{w}++;
printf "%d %d\n", $total, $pos;
$pos += $nbytes;
$total += $nbytes;
} elsif (/^write\((\d+),/ && $1==$fd) {
die $_;
} elsif (/^read\((\d+), ".*?"(\.\.\.)?, \d+\)\s*= (\d+)/ &&
$1==$fd && $3>=0) {
my $nbytes = $3;
}
} elsif (/^write\((\d+),/ && $1==$fd) {
die $_;
} elsif (/^read\((\d+), ".*?"(\.\.\.)?, \d+\)\s*= (\d+)/ &&
$1==$fd && $3>=0) {
my $nbytes = $3;
if ($fast) {
$total_reads++;
$total_bytes_in += $nbytes;
} else {
$What{$pos}{$nbytes}{r}++;
printf "%d %d\n", $total, $pos;
$pos += $nbytes;
$total += $nbytes;
} elsif (/^read\((\d+),/ && $1==$fd) {
die $_;
}
}
} elsif (/^read\((\d+),/ && $1==$fd) {
die $_;
}
}
print "="x36, "\n";
if (!$fast) {
print "="x36, "\n";
printf "%8s %8s %8s %8s\n","Position","NBytes","NReads","NWrites";
for $pos (sort {$a<=>$b} keys %What) {
for $nbytes (sort {$a<=>$b} keys %{$What{$pos}}) {
printf "%8d %8d %8d %8d\n", $pos, $nbytes,
$What{$pos}{$nbytes}{r},
$What{$pos}{$nbytes}{w};
for $pos (sort {$a<=>$b} keys %What) {
for $nbytes (sort {$a<=>$b} keys %{$What{$pos}}) {
printf("%8d %8d %8d %8d\n", $pos, $nbytes,
$What{$pos}{$nbytes}{r},
$What{$pos}{$nbytes}{w});
$total_writes += $What{$pos}{$nbytes}{w};
$total_reads += $What{$pos}{$nbytes}{r};
$total_bytes_out += $What{$pos}{$nbytes}{w} * $nbytes;
$total_bytes_in += $What{$pos}{$nbytes}{r} * $nbytes;
}
}
}
print "="x36, "\n";
printf("Write: %8d calls, %10d total bytes, %10g average bytes\n",
$total_writes, $total_bytes_out, $total_bytes_out/$total_writes);
printf("Read: %8d calls, %10d total bytes, %10g average bytes\n",
$total_reads, $total_bytes_in, $total_bytes_in/$total_reads);

View File

@ -92,7 +92,7 @@ sub argstring ($$$) {
# Normalize the data type by removing redundant white space,
# certain type qualifiers, and indirection.
$atype =~ s/^\bconst\b//;
$atype =~ s/\b__unused__\b//g;
$atype =~ s/\bUNUSED\b//g;
$atype =~ s/\s+/ /g;
$ptr = length $1 if $atype =~ s/(\*+)//;
$atype =~ s/^\s+//;

View File

@ -146,3 +146,5 @@ maintainer-clean: distclean
@DEPEND1@
@DEPEND2@
@DEPEND3@
@DEPEND4@

View File

@ -38,7 +38,7 @@ dep depend: .distdep
$(CC) -M -MG $(CPPFLAGS) $$dep |sed 's/\.o/.lo/' >>$@; \
fi; \
done;
-perl -p $(top_srcdir)/bin/distdep .depend >.distdep
-perl -p $(top_srcdir)/bin/distdep .depend >$(srcdir)/.distdep
-include .depend

View File

@ -44,14 +44,14 @@ EOF
v2=`echo $cc_version |cut -f2 -d.`
v3=`echo $cc_version |cut -f3 -d.`
v=`expr $v2 '*' 1000 + $v3`
if test $v -lt 91060; then
if test $v -le 91066; then
cat <<EOF
**
** This compiler may have problems allocating registers for long
** long data types when optimizations are enabled. There may be
** other code generation problems as well. Please upgrade to at
** least pgcc-2.91.60 (egcs-1.1.1) before reporting bugs to the
** HDF5 team.
** other code generation problems as well. We know of no version
** of pgcc which is capable of compiling HDF5 in production mode.
** Please use gcc-2.8 or egcs-1.1.1 before reporting bugs.
**
EOF
sleep 5

12
configure vendored
View File

@ -4768,9 +4768,13 @@ fi
if test "X$GCC" = "Xyes" && test "X$GMAKE" = "Xyes"; then
DEPEND1=config/depend
DEPEND2=/dev/null
DEPEND3=/dev/null
DEPEND4=/dev/null
else
DEPEND1=src/.distdep
DEPEND2=test/.distdep
DEPEND1=$srcdir/src/.distdep
DEPEND2=$srcdir/test/.distdep
DEPEND3=$srcdir/testpar/.distdep
DEPEND4=$srcdirtools/.distdep
fi
if test "X$GMAKE" = "Xyes"; then
@ -4961,6 +4965,10 @@ s%@CONCLUDE@%%g
s%@DEPEND1@%%g
/@DEPEND2@/r $DEPEND2
s%@DEPEND2@%%g
/@DEPEND3@/r $DEPEND3
s%@DEPEND3@%%g
/@DEPEND4@/r $DEPEND4
s%@DEPEND4@%%g
s%@SETX@%$SETX%g
s%@ROOT@%$ROOT%g

View File

@ -710,9 +710,13 @@ AC_SUBST_FILE(CONCLUDE) CONCLUDE=config/conclude
if test "X$GCC" = "Xyes" && test "X$GMAKE" = "Xyes"; then
AC_SUBST_FILE(DEPEND1) DEPEND1=config/depend
AC_SUBST_FILE(DEPEND2) DEPEND2=/dev/null
AC_SUBST_FILE(DEPEND3) DEPEND3=/dev/null
AC_SUBST_FILE(DEPEND4) DEPEND4=/dev/null
else
AC_SUBST_FILE(DEPEND1) DEPEND1=src/.distdep
AC_SUBST_FILE(DEPEND2) DEPEND2=test/.distdep
AC_SUBST_FILE(DEPEND1) DEPEND1=$srcdir/src/.distdep
AC_SUBST_FILE(DEPEND2) DEPEND2=$srcdir/test/.distdep
AC_SUBST_FILE(DEPEND3) DEPEND3=$srcdir/testpar/.distdep
AC_SUBST_FILE(DEPEND4) DEPEND4=$srcdirtools/.distdep
fi
dnl We don't need to say when we're entering directories if we're using

View File

@ -1,4 +1,4 @@
H5.o: \
H5.lo: \
H5.c \
H5private.h \
H5public.h \
@ -27,7 +27,7 @@ H5.o: \
H5Gpublic.h \
H5Oprivate.h \
H5Opublic.h
H5A.o: \
H5A.lo: \
H5A.c \
H5private.h \
H5public.h \
@ -61,7 +61,7 @@ H5A.o: \
H5Ppublic.h \
H5Apkg.h \
H5Aprivate.h
H5AC.o: \
H5AC.lo: \
H5AC.c \
H5private.h \
H5public.h \
@ -75,7 +75,7 @@ H5AC.o: \
H5Dpublic.h \
H5Eprivate.h \
H5Epublic.h
H5B.o: \
H5B.lo: \
H5B.c \
H5private.h \
H5public.h \
@ -94,7 +94,7 @@ H5B.o: \
H5MFprivate.h \
H5MFpublic.h \
H5MMprivate.h
H5D.o: \
H5D.lo: \
H5D.c \
H5private.h \
H5public.h \
@ -133,7 +133,7 @@ H5D.o: \
H5Pprivate.h \
H5Ppublic.h \
H5TBprivate.h
H5E.o: \
H5E.lo: \
H5E.c \
H5private.h \
H5public.h \
@ -142,7 +142,7 @@ H5E.o: \
H5Iprivate.h \
H5Ipublic.h \
H5Eprivate.h
H5F.o: \
H5F.lo: \
H5F.c \
H5private.h \
H5public.h \
@ -176,7 +176,7 @@ H5F.o: \
H5Epublic.h \
H5MMprivate.h \
H5MMpublic.h
H5Farray.o: \
H5Farray.lo: \
H5Farray.c \
H5private.h \
H5public.h \
@ -205,7 +205,7 @@ H5Farray.o: \
H5Epublic.h \
H5MFprivate.h \
H5MFpublic.h
H5Fcore.o: \
H5Fcore.lo: \
H5Fcore.c \
H5private.h \
H5public.h \
@ -214,7 +214,7 @@ H5Fcore.o: \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h
H5Ffamily.o: \
H5Ffamily.lo: \
H5Ffamily.c \
H5private.h \
H5public.h \
@ -223,7 +223,7 @@ H5Ffamily.o: \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h
H5Fistore.o: \
H5Fistore.lo: \
H5Fistore.c \
H5private.h \
H5public.h \
@ -252,7 +252,7 @@ H5Fistore.o: \
H5Epublic.h \
H5MFprivate.h \
H5MFpublic.h
H5Flow.o: \
H5Flow.lo: \
H5Flow.c \
H5private.h \
H5public.h \
@ -261,7 +261,7 @@ H5Flow.o: \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h
H5Fmpio.o: \
H5Fmpio.lo: \
H5Fmpio.c \
H5private.h \
H5public.h \
@ -285,7 +285,7 @@ H5Fmpio.o: \
H5Tprivate.h \
H5Tpublic.h \
H5Sprivate.h
H5Fsec2.o: \
H5Fsec2.lo: \
H5Fsec2.c \
H5private.h \
H5public.h \
@ -294,7 +294,7 @@ H5Fsec2.o: \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h
H5Fsplit.o: \
H5Fsplit.lo: \
H5Fsplit.c \
H5private.h \
H5public.h \
@ -308,7 +308,7 @@ H5Fsplit.o: \
H5Dpublic.h \
H5MFprivate.h \
H5MFpublic.h
H5Fstdio.o: \
H5Fstdio.lo: \
H5Fstdio.c \
H5private.h \
H5public.h \
@ -317,7 +317,7 @@ H5Fstdio.o: \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h
H5G.o: \
H5G.lo: \
H5G.c \
H5private.h \
H5public.h \
@ -351,7 +351,7 @@ H5G.o: \
H5ACpublic.h \
H5HLprivate.h \
H5HLpublic.h
H5Gent.o: \
H5Gent.lo: \
H5Gent.c \
H5private.h \
H5public.h \
@ -370,7 +370,7 @@ H5Gent.o: \
H5Gpublic.h \
H5Bprivate.h \
H5Bpublic.h
H5Gnode.o: \
H5Gnode.lo: \
H5Gnode.c \
H5private.h \
H5public.h \
@ -404,7 +404,7 @@ H5Gnode.o: \
H5Sprivate.h \
H5Spublic.h \
H5Zprivate.h
H5Gstab.o: \
H5Gstab.lo: \
H5Gstab.c \
H5private.h \
H5public.h \
@ -434,7 +434,7 @@ H5Gstab.o: \
H5Tprivate.h \
H5Tpublic.h \
H5Sprivate.h
H5HG.o: \
H5HG.lo: \
H5HG.c \
H5private.h \
H5public.h \
@ -453,7 +453,7 @@ H5HG.o: \
H5MFprivate.h \
H5MFpublic.h \
H5MMprivate.h
H5HL.o: \
H5HL.lo: \
H5HL.c \
H5private.h \
H5public.h \
@ -472,7 +472,7 @@ H5HL.o: \
H5MFprivate.h \
H5MFpublic.h \
H5MMprivate.h
H5I.o: \
H5I.lo: \
H5I.c \
H5private.h \
H5public.h \
@ -481,7 +481,7 @@ H5I.o: \
H5Iprivate.h \
H5Ipublic.h \
H5Eprivate.h
H5MF.o: \
H5MF.lo: \
H5MF.c \
H5private.h \
H5public.h \
@ -490,7 +490,7 @@ H5MF.o: \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h
H5MM.o: \
H5MM.lo: \
H5MM.c \
H5private.h \
H5public.h \
@ -499,7 +499,7 @@ H5MM.o: \
H5Eprivate.h \
H5Epublic.h \
H5Ipublic.h
H5O.o: \
H5O.lo: \
H5O.c \
H5private.h \
H5public.h \
@ -528,7 +528,7 @@ H5O.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5Oattr.o: \
H5Oattr.lo: \
H5Oattr.c \
H5private.h \
H5public.h \
@ -557,7 +557,7 @@ H5Oattr.o: \
H5Zprivate.h \
H5Zpublic.h \
H5Apkg.h
H5Ocomp.o: \
H5Ocomp.lo: \
H5Ocomp.c \
H5private.h \
H5public.h \
@ -581,7 +581,7 @@ H5Ocomp.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5Ocont.o: \
H5Ocont.lo: \
H5Ocont.c \
H5private.h \
H5public.h \
@ -605,7 +605,7 @@ H5Ocont.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5Odtype.o: \
H5Odtype.lo: \
H5Odtype.c \
H5private.h \
H5public.h \
@ -634,7 +634,7 @@ H5Odtype.o: \
H5Zprivate.h \
H5Zpublic.h \
H5Tpkg.h
H5Oefl.o: \
H5Oefl.lo: \
H5Oefl.c \
H5private.h \
H5public.h \
@ -663,7 +663,7 @@ H5Oefl.o: \
H5Sprivate.h \
H5Spublic.h \
H5Zprivate.h
H5Ofill.o: \
H5Ofill.lo: \
H5Ofill.c \
H5private.h \
H5public.h \
@ -687,7 +687,7 @@ H5Ofill.o: \
H5HGprivate.h \
H5HGpublic.h \
H5Tprivate.h
H5Olayout.o: \
H5Olayout.lo: \
H5Olayout.c \
H5private.h \
H5public.h \
@ -711,7 +711,7 @@ H5Olayout.o: \
H5Sprivate.h \
H5Spublic.h \
H5Zprivate.h
H5Omtime.o: \
H5Omtime.lo: \
H5Omtime.c \
H5private.h \
H5public.h \
@ -735,7 +735,7 @@ H5Omtime.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5Oname.o: \
H5Oname.lo: \
H5Oname.c \
H5private.h \
H5public.h \
@ -759,7 +759,7 @@ H5Oname.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5Onull.o: \
H5Onull.lo: \
H5Onull.c \
H5private.h \
H5public.h \
@ -778,7 +778,7 @@ H5Onull.o: \
H5HGprivate.h \
H5HGpublic.h \
H5Tprivate.h
H5Osdspace.o: \
H5Osdspace.lo: \
H5Osdspace.c \
H5private.h \
H5public.h \
@ -802,7 +802,7 @@ H5Osdspace.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5Oshared.o: \
H5Oshared.lo: \
H5Oshared.c \
H5private.h \
H5public.h \
@ -826,7 +826,7 @@ H5Oshared.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5Ostab.o: \
H5Ostab.lo: \
H5Ostab.c \
H5private.h \
H5public.h \
@ -850,7 +850,7 @@ H5Ostab.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5P.o: \
H5P.lo: \
H5P.c \
H5private.h \
H5public.h \
@ -879,7 +879,7 @@ H5P.o: \
H5Eprivate.h \
H5Epublic.h \
H5MMprivate.h
H5R.o: \
H5R.lo: \
H5R.c \
H5private.h \
H5public.h \
@ -908,7 +908,7 @@ H5R.o: \
H5Eprivate.h \
H5Epublic.h \
H5MMprivate.h
H5RA.o: \
H5RA.lo: \
H5RA.c \
H5RAprivate.h \
H5RApublic.h \
@ -937,7 +937,7 @@ H5RA.o: \
H5Zpublic.h \
H5Eprivate.h \
H5Epublic.h
H5S.o: \
H5S.lo: \
H5S.c \
H5private.h \
H5public.h \
@ -961,7 +961,7 @@ H5S.o: \
H5HGprivate.h \
H5HGpublic.h \
H5Tprivate.h
H5Sall.o: \
H5Sall.lo: \
H5Sall.c \
H5private.h \
H5public.h \
@ -985,7 +985,7 @@ H5Sall.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5Shyper.o: \
H5Shyper.lo: \
H5Shyper.c \
H5private.h \
H5public.h \
@ -1014,7 +1014,7 @@ H5Shyper.o: \
H5Vprivate.h \
H5MMprivate.h \
H5MMpublic.h
H5Smpio.o: \
H5Smpio.lo: \
H5Smpio.c \
H5private.h \
H5public.h \
@ -1038,7 +1038,7 @@ H5Smpio.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5Snone.o: \
H5Snone.lo: \
H5Snone.c \
H5private.h \
H5public.h \
@ -1062,7 +1062,7 @@ H5Snone.o: \
H5HGpublic.h \
H5Tprivate.h \
H5Tpublic.h
H5Spoint.o: \
H5Spoint.lo: \
H5Spoint.c \
H5private.h \
H5public.h \
@ -1091,7 +1091,7 @@ H5Spoint.o: \
H5Zprivate.h \
H5Zpublic.h \
H5Vprivate.h
H5Sselect.o: \
H5Sselect.lo: \
H5Sselect.c \
H5private.h \
H5public.h \
@ -1120,7 +1120,7 @@ H5Sselect.o: \
H5Tpublic.h \
H5Zprivate.h \
H5Zpublic.h
H5T.o: \
H5T.lo: \
H5T.c \
H5private.h \
H5public.h \
@ -1149,7 +1149,7 @@ H5T.o: \
H5Eprivate.h \
H5Epublic.h \
H5MMprivate.h
H5Tbit.o: \
H5Tbit.lo: \
H5Tbit.c \
H5private.h \
H5public.h \
@ -1168,7 +1168,7 @@ H5Tbit.o: \
H5Rprivate.h \
H5Rpublic.h \
H5Tprivate.h
H5Tconv.o: \
H5Tconv.lo: \
H5Tconv.c \
H5Iprivate.h \
H5Ipublic.h \
@ -1189,7 +1189,7 @@ H5Tconv.o: \
H5Rprivate.h \
H5Rpublic.h \
H5Tprivate.h
H5Tinit.o: \
H5Tinit.lo: \
H5Tinit.c \
H5private.h \
H5public.h \
@ -1213,7 +1213,7 @@ H5Tinit.o: \
H5Tpublic.h \
H5Gprivate.h \
H5Gpublic.h
H5TB.o: \
H5TB.lo: \
H5TB.c \
H5private.h \
H5public.h \
@ -1222,7 +1222,7 @@ H5TB.o: \
H5Iprivate.h \
H5Ipublic.h \
H5Eprivate.h
H5V.o: \
H5V.lo: \
H5V.c \
H5private.h \
H5public.h \
@ -1246,7 +1246,7 @@ H5V.o: \
H5Tpublic.h \
H5Sprivate.h \
H5Spublic.h
H5Z.o: \
H5Z.lo: \
H5Z.c \
H5private.h \
H5public.h \

View File

@ -1545,6 +1545,9 @@ H5D_read(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
* application's buffer. This saves at least one mem-to-mem copy.
*/
if (H5T_IS_NOOP(tpath) && sconv->read) {
#ifdef H5S_DEBUG
H5_timer_begin(&timer);
#endif
status = (sconv->read)(dataset->ent.file, &(dataset->layout),
&(dataset->create_parms->pline),
&(dataset->create_parms->efl),
@ -1561,6 +1564,12 @@ H5D_read(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
* fall through and xfer the data in the more roundabout way */
} else {
/* direct xfer accomplished successfully */
#ifdef H5S_DEBUG
H5_timer_end(&(sconv->stats[1].read_timer), &timer);
sconv->stats[1].read_nbytes += nelmts *
H5T_get_size(dataset->type);
sconv->stats[1].read_ncalls++;
#endif
goto succeed;
}
#ifdef H5D_DEBUG
@ -1920,6 +1929,9 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
* application buffer to file.
*/
if (H5T_IS_NOOP(tpath) && sconv->write) {
#ifdef H5S_DEBUG
H5_timer_begin(&timer);
#endif
status = (sconv->write)(dataset->ent.file, &(dataset->layout),
&(dataset->create_parms->pline),
&(dataset->create_parms->efl),
@ -1936,6 +1948,11 @@ H5D_write(H5D_t *dataset, const H5T_t *mem_type, const H5S_t *mem_space,
* fall through and xfer the data in the more roundabout way */
} else {
/* direct xfer accomplished successfully */
#ifdef H5S_DEBUG
H5_timer_end(&(sconv->stats[0].write_timer), &timer);
sconv->stats[0].write_nbytes += nelmts * H5T_get_size(mem_type);
sconv->stats[0].write_ncalls++;
#endif
goto succeed;
}
#ifdef H5D_DEBUG
@ -2515,3 +2532,47 @@ H5D_get_storage_size(H5D_t *dset)
FUNC_LEAVE(size);
}
/*-------------------------------------------------------------------------
* Function: H5Ddebug
*
* Purpose: Prints various information about a dataset. This function is
* not to be documented in the API at this time.
*
* Return: Success: Non-negative
*
* Failure: Negative
*
* Programmer: Robb Matzke
* Wednesday, April 28, 1999
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
herr_t
H5Ddebug(hid_t dset_id, unsigned UNUSED flags)
{
H5D_t *dset=NULL;
FUNC_ENTER(H5Ddebug, FAIL);
H5TRACE2("e","iIu",dset_id,flags);
/* Check args */
if (H5I_DATASET!=H5I_get_type(dset_id) ||
NULL==(dset=H5I_object(dset_id))) {
HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a dataset");
}
/* Print B-tree information */
if (H5D_CHUNKED==dset->layout.type) {
H5F_istore_dump_btree(dset->ent.file, stdout, dset->layout.ndims,
&(dset->layout.addr));
} else if (H5D_CONTIGUOUS==dset->layout.type) {
HDfprintf(stdout, " %-10s %a\n", "Address:",
&(dset->layout.addr));
}
FUNC_LEAVE(SUCCEED);
}

View File

@ -147,6 +147,7 @@ typedef struct H5F_istore_ud1_t {
haddr_t addr; /*file address of chunk */
H5O_layout_t mesg; /*layout message */
hsize_t total_storage; /*output from iterator */
FILE *stream; /*debug output stream */
} H5F_istore_ud1_t;
/* inherits B-tree like properties from H5B */
@ -724,7 +725,9 @@ H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key,
/*-------------------------------------------------------------------------
* Function: H5F_istore_iterate
*
* Purpose: Simply counts the number of chunks for a dataset.
* Purpose: Simply counts the number of chunks for a dataset. If the
* UDATA.STREAM member is non-null then debugging information is
* written to that stream.
*
* Return: Success: Non-negative
*
@ -744,8 +747,27 @@ H5F_istore_iterate (H5F_t UNUSED *f, void *_lt_key,
{
H5F_istore_ud1_t *bt_udata = (H5F_istore_ud1_t *)_udata;
H5F_istore_key_t *lt_key = (H5F_istore_key_t *)_lt_key;
int i;
FUNC_ENTER(H5F_istore_iterate, FAIL);
if (bt_udata->stream) {
if (0==bt_udata->total_storage) {
fprintf(bt_udata->stream, " Address:\n");
fprintf(bt_udata->stream,
" Flags Bytes Address Logical Offset\n");
fprintf(bt_udata->stream,
" ========== ======== ========== "
"==============================\n");
}
HDfprintf(bt_udata->stream, " 0x%08x %8Zu %10a [",
lt_key->filter_mask, lt_key->nbytes, addr);
for (i=0; i<bt_udata->mesg.ndims; i++) {
HDfprintf(bt_udata->stream, "%s%Hd", i?", ":"", lt_key->offset[i]);
}
fputs("]\n", bt_udata->stream);
}
bt_udata->total_storage += lt_key->nbytes;
FUNC_LEAVE(SUCCEED);
}
@ -1952,8 +1974,8 @@ H5F_istore_allocated(H5F_t *f, int ndims, haddr_t *addr)
H5F_istore_ud1_t udata;
FUNC_ENTER(H5F_istore_nchunks, 0);
HDmemset(&udata, 0, sizeof udata);
udata.mesg.ndims = ndims;
udata.total_storage = 0;
if (H5B_iterate(f, H5B_ISTORE, addr, &udata)<0) {
HRETURN_ERROR(H5E_IO, H5E_INTERNAL, 0,
"unable to iterate over chunk B-tree");
@ -1961,6 +1983,40 @@ H5F_istore_allocated(H5F_t *f, int ndims, haddr_t *addr)
FUNC_LEAVE(udata.total_storage);
}
/*-------------------------------------------------------------------------
* Function: H5F_istore_dump_btree
*
* Purpose: Prints information about the storage B-tree to the specified
* stream.
*
* Return: Success: Non-negative
*
* Failure: negative
*
* Programmer: Robb Matzke
* Wednesday, April 28, 1999
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
herr_t
H5F_istore_dump_btree(H5F_t *f, FILE *stream, int ndims, haddr_t *addr)
{
H5F_istore_ud1_t udata;
FUNC_ENTER(H5F_istore_dump_btree, FAIL);
HDmemset(&udata, 0, sizeof udata);
udata.mesg.ndims = ndims;
udata.stream = stream;
if (H5B_iterate(f, H5B_ISTORE, addr, &udata)<0) {
HRETURN_ERROR(H5E_IO, H5E_INTERNAL, 0,
"unable to iterate over chunk B-tree");
}
FUNC_LEAVE(SUCCEED);
}
/*-------------------------------------------------------------------------
* Function: H5F_istore_stats

View File

@ -56,6 +56,7 @@ __DLL__ herr_t H5Dread (hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
__DLL__ herr_t H5Dwrite (hid_t dset_id, hid_t mem_type_id, hid_t mem_space_id,
hid_t file_space_id, hid_t plist_id, const void *buf);
__DLL__ herr_t H5Dextend (hid_t dset_id, const hsize_t *size);
__DLL__ herr_t H5Ddebug(hid_t dset_id, unsigned int flags);
#ifdef __cplusplus
}

View File

@ -509,11 +509,9 @@ H5F_compare_files(void * _obj, const void * _key)
FUNC_ENTER(H5F_compare_files, FALSE);
#if WIN32
ret_value = (obj->shared->key.dev == key->dev &&
obj->shared->key.fileindexhi == key->fileindexhi &&
obj->shared->key.fileindexlo == key->fileindexlo);
#else
ret_value = (obj->shared->key.dev == key->dev &&
obj->shared->key.ino == key->ino);

View File

@ -147,6 +147,7 @@ typedef struct H5F_istore_ud1_t {
haddr_t addr; /*file address of chunk */
H5O_layout_t mesg; /*layout message */
hsize_t total_storage; /*output from iterator */
FILE *stream; /*debug output stream */
} H5F_istore_ud1_t;
/* inherits B-tree like properties from H5B */
@ -724,7 +725,9 @@ H5F_istore_insert(H5F_t *f, const haddr_t *addr, void *_lt_key,
/*-------------------------------------------------------------------------
* Function: H5F_istore_iterate
*
* Purpose: Simply counts the number of chunks for a dataset.
* Purpose: Simply counts the number of chunks for a dataset. If the
* UDATA.STREAM member is non-null then debugging information is
* written to that stream.
*
* Return: Success: Non-negative
*
@ -744,8 +747,27 @@ H5F_istore_iterate (H5F_t UNUSED *f, void *_lt_key,
{
H5F_istore_ud1_t *bt_udata = (H5F_istore_ud1_t *)_udata;
H5F_istore_key_t *lt_key = (H5F_istore_key_t *)_lt_key;
int i;
FUNC_ENTER(H5F_istore_iterate, FAIL);
if (bt_udata->stream) {
if (0==bt_udata->total_storage) {
fprintf(bt_udata->stream, " Address:\n");
fprintf(bt_udata->stream,
" Flags Bytes Address Logical Offset\n");
fprintf(bt_udata->stream,
" ========== ======== ========== "
"==============================\n");
}
HDfprintf(bt_udata->stream, " 0x%08x %8Zu %10a [",
lt_key->filter_mask, lt_key->nbytes, addr);
for (i=0; i<bt_udata->mesg.ndims; i++) {
HDfprintf(bt_udata->stream, "%s%Hd", i?", ":"", lt_key->offset[i]);
}
fputs("]\n", bt_udata->stream);
}
bt_udata->total_storage += lt_key->nbytes;
FUNC_LEAVE(SUCCEED);
}
@ -1952,8 +1974,8 @@ H5F_istore_allocated(H5F_t *f, int ndims, haddr_t *addr)
H5F_istore_ud1_t udata;
FUNC_ENTER(H5F_istore_nchunks, 0);
HDmemset(&udata, 0, sizeof udata);
udata.mesg.ndims = ndims;
udata.total_storage = 0;
if (H5B_iterate(f, H5B_ISTORE, addr, &udata)<0) {
HRETURN_ERROR(H5E_IO, H5E_INTERNAL, 0,
"unable to iterate over chunk B-tree");
@ -1961,6 +1983,40 @@ H5F_istore_allocated(H5F_t *f, int ndims, haddr_t *addr)
FUNC_LEAVE(udata.total_storage);
}
/*-------------------------------------------------------------------------
* Function: H5F_istore_dump_btree
*
* Purpose: Prints information about the storage B-tree to the specified
* stream.
*
* Return: Success: Non-negative
*
* Failure: negative
*
* Programmer: Robb Matzke
* Wednesday, April 28, 1999
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
herr_t
H5F_istore_dump_btree(H5F_t *f, FILE *stream, int ndims, haddr_t *addr)
{
H5F_istore_ud1_t udata;
FUNC_ENTER(H5F_istore_dump_btree, FAIL);
HDmemset(&udata, 0, sizeof udata);
udata.mesg.ndims = ndims;
udata.stream = stream;
if (H5B_iterate(f, H5B_ISTORE, addr, &udata)<0) {
HRETURN_ERROR(H5E_IO, H5E_INTERNAL, 0,
"unable to iterate over chunk B-tree");
}
FUNC_LEAVE(SUCCEED);
}
/*-------------------------------------------------------------------------
* Function: H5F_istore_stats

View File

@ -303,16 +303,17 @@ typedef struct H5F_search_t {
dev_t dev; /* Device number containing file */
ino_t ino; /* Unique file number on device */
#if WIN32
/*
Specifies the low-order word of a unique identifier associated with the file.
This identifier and the volume serial number uniquely identify a file. This number
may change when the system is restarted or when the file is opened. After a process
opens a file, the identifier is constant until the file is closed. An application can
use this identifier and the volume serial number to determine whether two handles refer
to the same file.
*/
int fileindexlo;
int fileindexhi;
/*
* Specifies the low-order word of a unique identifier associated with the
* file. This identifier and the volume serial number uniquely identify a
* file. This number may change when the system is restarted or when the
* file is opened. After a process opens a file, the identifier is
* constant until the file is closed. An application can use this
* identifier and the volume serial number to determine whether two
* handles refer to the same file.
*/
int fileindexlo;
int fileindexhi;
#endif
} H5F_search_t;
@ -658,6 +659,8 @@ __DLL__ herr_t H5F_istore_allocate (H5F_t *f,
const double split_ratios[],
const struct H5O_pline_t *pline,
const struct H5O_fill_t *fill);
__DLL__ herr_t H5F_istore_dump_btree(H5F_t *f, FILE *stream, int ndims,
haddr_t *addr);
/* Functions that operate on contiguous storage wrt boot block */
__DLL__ herr_t H5F_block_read(H5F_t *f, const haddr_t *addr, hsize_t size,

View File

@ -134,7 +134,9 @@ H5S_term_interface(void)
for (j=0; j<2; j++) {
if (0==path->stats[j].gath_ncalls &&
0==path->stats[j].scat_ncalls &&
0==path->stats[j].bkg_ncalls) {
0==path->stats[j].bkg_ncalls &&
0==path->stats[j].read_ncalls &&
0==path->stats[j].write_ncalls) {
continue;
}
if (0==nprints++) {
@ -202,6 +204,38 @@ H5S_term_interface(void)
path->stats[j].bkg_timer.etime,
buf);
}
/* Read */
if (path->stats[j].read_ncalls) {
H5_bandwidth(buf,
(double)(path->stats[j].read_nbytes),
path->stats[j].read_timer.etime);
HDfprintf(H5DEBUG(S),
" %16s %10Hu %10Hu %8.2f %8.2f %8.2f "
"%10s\n", "read",
path->stats[j].read_nbytes,
path->stats[j].read_ncalls,
path->stats[j].read_timer.utime,
path->stats[j].read_timer.stime,
path->stats[j].read_timer.etime,
buf);
}
/* Write */
if (path->stats[j].write_ncalls) {
H5_bandwidth(buf,
(double)(path->stats[j].write_nbytes),
path->stats[j].write_timer.etime);
HDfprintf(H5DEBUG(S),
" %16s %10Hu %10Hu %8.2f %8.2f %8.2f "
"%10s\n", "write",
path->stats[j].write_nbytes,
path->stats[j].write_ncalls,
path->stats[j].write_timer.utime,
path->stats[j].write_timer.stime,
path->stats[j].write_timer.etime,
buf);
}
}
}
}

View File

@ -278,6 +278,12 @@ typedef struct H5S_conv_t {
H5_timer_t bkg_timer; /*time for background */
hsize_t bkg_nbytes; /*background throughput */
hsize_t bkg_ncalls; /*number of calls */
H5_timer_t read_timer; /*time for read calls */
hsize_t read_nbytes; /*total bytes read */
hsize_t read_ncalls; /*number of calls */
H5_timer_t write_timer; /*time for write calls */
hsize_t write_nbytes; /*total bytes written */
hsize_t write_ncalls; /*number of calls */
} stats[2]; /* 0=output, 1=input */
#endif
} H5S_conv_t;

View File

@ -1259,16 +1259,19 @@ H5T_conv_i_i (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
direction = 1;
olap = nelmts;
} else if (src->size>=dst->size) {
double olap_d = HDceil((double)(dst->size)/
(double)(src->size-dst->size));
olap = (size_t)olap_d;
sp = dp = (uint8_t*)buf;
direction = 1;
olap = (size_t)(HDceil((double)(src->size)/
(double)(src->size-dst->size))-1);
} else {
double olap_d = HDceil((double)(src->size)/
(double)(dst->size-src->size));
olap = (size_t)olap_d;
sp = (uint8_t*)buf + (nelmts-1) * src->size;
dp = (uint8_t*)buf + (nelmts-1) * dst->size;
direction = -1;
olap = (size_t)(HDceil((double)(dst->size)/
(double)(dst->size-src->size))-1);
}
/* The conversion loop */
@ -1283,7 +1286,7 @@ H5T_conv_i_i (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
d = elmtno<olap ? dbuf : dp;
} else {
s = sp;
d = elmtno >= nelmts-olap ? dbuf : dp;
d = elmtno+olap >= nelmts ? dbuf : dp;
}
#ifndef NDEBUG
/* I don't quite trust the overlap calculations yet --rpm */
@ -1636,16 +1639,18 @@ H5T_conv_f_f (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
direction = 1;
olap = nelmts;
} else if (src_p->size>=dst_p->size) {
double olap_d = HDceil((double)(dst_p->size)/
(double)(src_p->size-dst_p->size));
olap = (size_t)olap_d;
sp = dp = (uint8_t*)buf;
direction = 1;
olap = (size_t)(HDceil((double)(src_p->size)/
(double)(src_p->size-dst_p->size))-1);
} else {
double olap_d = HDceil((double)(src_p->size)/
(double)(dst_p->size-src_p->size));
olap = (size_t)olap_d;
sp = (uint8_t*)buf + (nelmts-1) * src_p->size;
dp = (uint8_t*)buf + (nelmts-1) * dst_p->size;
direction = -1;
olap = (size_t)(HDceil((double)(dst_p->size)/
(double)(dst_p->size-src_p->size))-1);
}
/* The conversion loop */
@ -1659,7 +1664,7 @@ H5T_conv_f_f (hid_t src_id, hid_t dst_id, H5T_cdata_t *cdata,
d = elmtno<olap ? dbuf : dp;
} else {
s = sp;
d = elmtno >= nelmts-olap ? dbuf : dp;
d = elmtno+olap >= nelmts ? dbuf : dp;
}
#ifndef NDEBUG
/* I don't quite trust the overlap calculations yet --rpm */

View File

@ -1,4 +1,4 @@
h5test.o: \
h5test.lo: \
h5test.c \
h5test.h \
../src/hdf5.h \
@ -30,7 +30,7 @@ h5test.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
big.o: \
big.lo: \
big.c \
h5test.h \
../src/hdf5.h \
@ -62,7 +62,7 @@ big.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
bittests.o: \
bittests.lo: \
bittests.c \
h5test.h \
../src/hdf5.h \
@ -94,7 +94,7 @@ bittests.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
chunk.o: \
chunk.lo: \
chunk.c \
../src/hdf5.h \
../src/H5public.h \
@ -119,7 +119,7 @@ chunk.o: \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h
cmpd_dset.o: \
cmpd_dset.lo: \
cmpd_dset.c \
h5test.h \
../src/hdf5.h \
@ -151,7 +151,7 @@ cmpd_dset.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
dsets.o: \
dsets.lo: \
dsets.c \
h5test.h \
../src/hdf5.h \
@ -183,7 +183,7 @@ dsets.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
dtypes.o: \
dtypes.lo: \
dtypes.c \
h5test.h \
../src/hdf5.h \
@ -215,7 +215,7 @@ dtypes.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
extend.o: \
extend.lo: \
extend.c \
h5test.h \
../src/hdf5.h \
@ -247,7 +247,7 @@ extend.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
external.o: \
external.lo: \
external.c \
h5test.h \
../src/hdf5.h \
@ -279,7 +279,7 @@ external.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
fillval.o: \
fillval.lo: \
fillval.c \
h5test.h \
../src/hdf5.h \
@ -311,7 +311,7 @@ fillval.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
flush1.o: \
flush1.lo: \
flush1.c \
h5test.h \
../src/hdf5.h \
@ -343,7 +343,7 @@ flush1.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
flush2.o: \
flush2.lo: \
flush2.c \
h5test.h \
../src/hdf5.h \
@ -375,7 +375,7 @@ flush2.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
gheap.o: \
gheap.lo: \
gheap.c \
h5test.h \
../src/hdf5.h \
@ -410,7 +410,7 @@ gheap.o: \
../src/H5Gprivate.h \
../src/H5Bprivate.h \
../src/H5Eprivate.h
hyperslab.o: \
hyperslab.lo: \
hyperslab.c \
../src/H5private.h \
../src/H5public.h \
@ -418,7 +418,7 @@ hyperslab.o: \
../src/H5api_adpt.h \
../src/H5MMprivate.h \
../src/H5MMpublic.h
iopipe.o: \
iopipe.lo: \
iopipe.c \
../src/hdf5.h \
../src/H5public.h \
@ -443,7 +443,7 @@ iopipe.o: \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h
istore.o: \
istore.lo: \
istore.c \
h5test.h \
../src/hdf5.h \
@ -484,7 +484,7 @@ istore.o: \
../src/H5Iprivate.h \
../src/H5Pprivate.h \
../src/H5MMprivate.h
lheap.o: \
lheap.lo: \
lheap.c \
h5test.h \
../src/hdf5.h \
@ -519,7 +519,7 @@ lheap.o: \
../src/H5Gprivate.h \
../src/H5Bprivate.h \
../src/H5HLprivate.h
links.o: \
links.lo: \
links.c \
h5test.h \
../src/hdf5.h \
@ -551,7 +551,7 @@ links.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
mount.o: \
mount.lo: \
mount.c \
h5test.h \
../src/hdf5.h \
@ -583,7 +583,7 @@ mount.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
mtime.o: \
mtime.lo: \
mtime.c \
h5test.h \
../src/hdf5.h \
@ -615,7 +615,7 @@ mtime.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
ohdr.o: \
ohdr.lo: \
ohdr.c \
h5test.h \
../src/hdf5.h \
@ -653,7 +653,7 @@ ohdr.o: \
../src/H5Oprivate.h \
../src/H5Sprivate.h \
../src/H5Zprivate.h
overhead.o: \
overhead.lo: \
overhead.c \
../src/hdf5.h \
../src/H5public.h \
@ -678,7 +678,7 @@ overhead.o: \
../src/H5RApublic.h \
../src/H5Spublic.h \
../src/H5Tpublic.h
ragged.o: \
ragged.lo: \
ragged.c \
../src/hdf5.h \
../src/H5public.h \
@ -704,7 +704,7 @@ ragged.o: \
../src/H5Spublic.h \
../src/H5Tpublic.h \
../src/H5private.h
stab.o: \
stab.lo: \
stab.c \
h5test.h \
../src/hdf5.h \
@ -739,7 +739,7 @@ stab.o: \
../src/H5Gprivate.h \
../src/H5Bprivate.h \
../src/H5Gpkg.h
tattr.o: \
tattr.lo: \
tattr.c \
testhdf5.h \
../src/H5private.h \
@ -766,7 +766,7 @@ tattr.o: \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h
testhdf5.o: \
testhdf5.lo: \
testhdf5.c \
testhdf5.h \
../src/H5private.h \
@ -775,7 +775,7 @@ testhdf5.o: \
../src/H5api_adpt.h \
../src/H5Eprivate.h \
../src/H5Epublic.h
tfile.o: \
tfile.lo: \
tfile.c \
testhdf5.h \
../src/H5private.h \
@ -790,7 +790,7 @@ tfile.o: \
../src/H5Fprivate.h \
../src/H5Fpublic.h \
../src/H5Dpublic.h
th5s.o: \
th5s.lo: \
th5s.c \
testhdf5.h \
../src/H5private.h \
@ -817,7 +817,7 @@ th5s.o: \
../src/H5Tpublic.h \
../src/H5Zprivate.h \
../src/H5Zpublic.h
tmeta.o: \
tmeta.lo: \
tmeta.c \
testhdf5.h \
../src/H5private.h \
@ -829,7 +829,7 @@ tmeta.o: \
../src/H5Ipublic.h \
../src/H5Fprivate.h \
../src/H5Fpublic.h
trefer.o: \
trefer.lo: \
trefer.c \
testhdf5.h \
../src/H5private.h \
@ -856,7 +856,7 @@ trefer.o: \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h
tselect.o: \
tselect.lo: \
tselect.c \
testhdf5.h \
../src/H5private.h \
@ -883,7 +883,7 @@ tselect.o: \
../src/H5Rpublic.h \
../src/H5RApublic.h \
../src/H5Spublic.h
unlink.o: \
unlink.lo: \
unlink.c \
h5test.h \
../src/hdf5.h \
@ -915,7 +915,7 @@ unlink.o: \
../src/H5Fprivate.h \
../src/H5Rprivate.h \
../src/H5Tprivate.h
enum.o: \
enum.lo: \
enum.c \
h5test.h \
../src/hdf5.h \

View File

@ -2263,6 +2263,59 @@ test_conv_int_1(const char *name, hid_t src, hid_t dst)
return MAX((int)fails_all_tests, 1);
}
/*-------------------------------------------------------------------------
* Function: test_conv_int_2
*
* Purpose: Tests overlap calculates in H5T_conv_i_i(), which should be
* the same as for H5T_conv_f_f() and H5T_conv_s_s().
*
* Return: Success: 0
*
* Failure: number of errors
*
* Programmer: Robb Matzke
* Friday, April 30, 1999
*
* Modifications:
*
*-------------------------------------------------------------------------
*/
static int
test_conv_int_2(void)
{
int i, j;
hid_t src_type, dst_type;
char buf[32*100];
printf("%-70s", "Testing overlap calculations");
fflush(stdout);
memset(buf, 0, sizeof buf);
for (i=1; i<=32; i++) {
for (j=1; j<=32; j++) {
/* Source type */
src_type = H5Tcopy(H5T_NATIVE_CHAR);
H5Tset_size(src_type, i);
/* Destination type */
dst_type = H5Tcopy(H5T_NATIVE_CHAR);
H5Tset_size(dst_type, j);
/*
* Conversion. If overlap calculations aren't right then an
* assertion will fail in H5T_conv_i_i()
*/
H5Tconvert(src_type, dst_type, 100, buf, NULL);
H5Tclose(src_type);
H5Tclose(dst_type);
}
}
PASSED();
return 0;
}
/*-------------------------------------------------------------------------
* Function: my_isnan
@ -2984,6 +3037,7 @@ main(void)
reset_hdf5();
/* Test software integer conversion functions */
nerrors += test_conv_int_2();
nerrors += run_integer_tests("sw");
/* Test software floating-point conversion functions */

View File

@ -18,7 +18,8 @@
/* Command-line switches */
static int verbose_g = 0; /*lots of extra output */
static int width_g = 80; /*output width in characters */
static hbool_t dump_g = FALSE; /*display dataset values? */
static hbool_t address_g = FALSE; /*print raw data addresses */
static hbool_t data_g = FALSE; /*display dataset values? */
static hbool_t label_g = FALSE; /*label compound values? */
static hbool_t string_g = FALSE; /*print 1-byte numbers as ASCII? */
static hbool_t fullname_g = FALSE; /*print full path names */
@ -83,7 +84,8 @@ usage (const char *progname)
usage: %s [OPTIONS] FILE [OBJECTS...]\n\
OPTIONS\n\
-h, -?, --help Print a usage message and exit\n\
-d, --dump Print the values of datasets\n\
-a, --address Print addresses for raw data\n\
-d, --data Print the values of datasets\n\
-f, --full Print full path names instead of base names\n\
-g, --group Show information about a group, not its contents\n\
-l, --label Label members of compound datasets\n\
@ -1312,13 +1314,16 @@ dataset_list2(hid_t dset, const char UNUSED *name)
display_type(type, 15);
printf("\n");
/* Print address information */
if (address_g) H5Ddebug(dset, 0);
/* Close stuff */
H5Tclose(type);
H5Sclose(space);
H5Pclose(dcpl);
}
if (dump_g) dump_dataset_values(dset);
if (data_g) dump_dataset_values(dset);
return 0;
}
@ -1402,7 +1407,7 @@ datatype_list2(hid_t type, const char UNUSED *name)
static herr_t
ragged_list2(hid_t UNUSED ra, const char UNUSED *name)
{
if (dump_g) {
if (data_g) {
puts(" Data: Not implemented yet (see values of member");
puts(" datasets `raw', `over', and `meta')");
}
@ -1752,10 +1757,12 @@ main (int argc, char *argv[])
} else if (!strcmp(argv[argno], "--help")) {
usage(progname);
exit(0);
} else if (!strcmp(argv[argno], "--address")) {
address_g = TRUE;
} else if (!strcmp(argv[argno], "--group")) {
grp_literal_g = TRUE;
} else if (!strcmp(argv[argno], "--dump")) {
dump_g = TRUE;
} else if (!strcmp(argv[argno], "--data")) {
data_g = TRUE;
} else if (!strcmp(argv[argno], "--full")) {
fullname_g = TRUE;
} else if (!strcmp(argv[argno], "--label")) {
@ -1799,8 +1806,11 @@ main (int argc, char *argv[])
case 'h': /* --help */
usage(progname);
exit(0);
case 'd': /* --dump */
dump_g++;
case 'a': /* --address */
address_g = TRUE;
break;
case 'd': /* --data */
data_g = TRUE;
break;
case 'f': /* --full */
fullname_g = TRUE;