summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MANIFEST7
-rw-r--r--fortran/src/Dependencies90
-rw-r--r--pablo/Makefile.in10
-rw-r--r--perform/Dependencies48
-rw-r--r--src/Dependencies576
-rw-r--r--src/H5.c205
-rw-r--r--src/H5AC.c80
-rw-r--r--src/H5D.c18
-rw-r--r--src/H5Dcontig.c5
-rw-r--r--src/H5Distore.c9
-rw-r--r--src/H5Dprivate.h4
-rw-r--r--src/H5F.c183
-rw-r--r--src/H5FD.c133
-rw-r--r--src/H5FDcore.c190
-rw-r--r--src/H5FDcore.h1
-rw-r--r--src/H5FDfamily.c338
-rw-r--r--src/H5FDfamily.h1
-rw-r--r--src/H5FDfphdf5.c1788
-rw-r--r--src/H5FDfphdf5.h127
-rw-r--r--src/H5FDgass.c178
-rw-r--r--src/H5FDgass.h1
-rw-r--r--src/H5FDlog.c240
-rw-r--r--src/H5FDlog.h1
-rw-r--r--src/H5FDmpi.c4
-rw-r--r--src/H5FDmpi.h3
-rw-r--r--src/H5FDmpio.c835
-rw-r--r--src/H5FDmpio.h18
-rw-r--r--src/H5FDmpiposix.c490
-rw-r--r--src/H5FDmpiposix.h8
-rw-r--r--src/H5FDmulti.c23
-rw-r--r--src/H5FDmulti.h3
-rw-r--r--src/H5FDprivate.h11
-rw-r--r--src/H5FDsec2.c227
-rw-r--r--src/H5FDsec2.h1
-rw-r--r--src/H5FDsrb.c178
-rw-r--r--src/H5FDsrb.h1
-rw-r--r--src/H5FDstdio.c123
-rw-r--r--src/H5FDstdio.h1
-rw-r--r--src/H5FDstream.c216
-rw-r--r--src/H5FDstream.h3
-rw-r--r--src/H5FP.c457
-rw-r--r--src/H5FPclient.c828
-rw-r--r--src/H5FPprivate.h306
-rw-r--r--src/H5FPpublic.h35
-rw-r--r--src/H5FPserver.c1599
-rw-r--r--src/H5Fprivate.h2
-rw-r--r--src/H5Smpio.c20
-rw-r--r--src/H5private.h2
-rw-r--r--src/Makefile.in33
-rw-r--r--src/hdf5.h6
-rw-r--r--test/Dependencies418
-rw-r--r--test/Makefile.in6
-rw-r--r--test/th5s.c1
-rw-r--r--testpar/Dependencies36
-rw-r--r--tools/gifconv/Dependencies48
-rw-r--r--tools/h5diff/Dependencies36
-rw-r--r--tools/h5dump/Dependencies12
-rw-r--r--tools/h5ls/Dependencies6
-rw-r--r--tools/h5repack/Dependencies172
-rw-r--r--tools/lib/Dependencies78
-rw-r--r--tools/misc/Dependencies16
61 files changed, 2713 insertions, 7782 deletions
diff --git a/MANIFEST b/MANIFEST
index 3c38c67..41814b6 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -867,8 +867,6 @@
./src/H5FDcore.h
./src/H5FDfamily.c
./src/H5FDfamily.h
-./src/H5FDfphdf5.c
-./src/H5FDfphdf5.h
./src/H5FDgass.c
./src/H5FDgass.h
./src/H5FDlog.c
@@ -893,11 +891,6 @@
./src/H5FLprivate.h
./src/H5FO.c
./src/H5FOprivate.h
-./src/H5FP.c
-./src/H5FPclient.c
-./src/H5FPprivate.h
-./src/H5FPpublic.h
-./src/H5FPserver.c
./src/H5FS.c
./src/H5FSprivate.h
./src/H5G.c
diff --git a/fortran/src/Dependencies b/fortran/src/Dependencies
index 0ac9420..dabc30e 100644
--- a/fortran/src/Dependencies
+++ b/fortran/src/Dependencies
@@ -8,8 +8,8 @@ H5f90kit.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -28,10 +28,10 @@ H5f90kit.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -50,8 +50,8 @@ H5_f.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -70,10 +70,10 @@ H5_f.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -91,8 +91,8 @@ H5Git.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -111,10 +111,10 @@ H5Git.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -131,8 +131,8 @@ H5Rf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -151,10 +151,10 @@ H5Rf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -173,8 +173,8 @@ H5Ff.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -193,10 +193,10 @@ H5Ff.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -207,7 +207,8 @@ H5Ff.lo: \
$(top_srcdir)/src/H5private.h \
$(top_srcdir)/src/H5MPprivate.h \
$(srcdir)/H5f90proto.h \
- $(srcdir)/H5Git.h
+ $(srcdir)/H5Git.h \
+ $(top_srcdir)/src/H5Eprivate.h
H5Sf.lo: \
$(srcdir)/H5Sf.c \
$(srcdir)/H5f90.h \
@@ -215,8 +216,8 @@ H5Sf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -235,10 +236,10 @@ H5Sf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -257,8 +258,8 @@ H5Df.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -277,10 +278,10 @@ H5Df.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -299,8 +300,8 @@ H5Gf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -319,10 +320,10 @@ H5Gf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -341,8 +342,8 @@ H5Af.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -361,10 +362,10 @@ H5Af.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -383,8 +384,8 @@ H5Tf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -403,10 +404,10 @@ H5Tf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -425,8 +426,8 @@ H5Pf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -445,10 +446,10 @@ H5Pf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -467,8 +468,8 @@ H5If.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -487,10 +488,10 @@ H5If.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -501,7 +502,8 @@ H5If.lo: \
$(top_srcdir)/src/H5private.h \
$(top_srcdir)/src/H5MPprivate.h \
$(srcdir)/H5f90proto.h \
- $(srcdir)/H5Git.h
+ $(srcdir)/H5Git.h \
+ $(top_srcdir)/src/H5Eprivate.h
H5Ef.lo: \
$(srcdir)/H5Ef.c \
$(srcdir)/H5f90.h \
@@ -509,8 +511,8 @@ H5Ef.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -529,10 +531,10 @@ H5Ef.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -551,8 +553,8 @@ H5Zf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -571,10 +573,10 @@ H5Zf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
diff --git a/pablo/Makefile.in b/pablo/Makefile.in
index 43a0b62..d0f82dc 100644
--- a/pablo/Makefile.in
+++ b/pablo/Makefile.in
@@ -50,10 +50,10 @@ SRCDIRS=./. ../src/.
# problems somewhere). - QAK
#
LIB_SRC=H5.c H5A.c H5AC.c H5B.c H5D.c H5Dio.c H5E.c H5F.c H5FD.c \
- H5FDcore.c H5FDfamily.c H5FDfphdf5.c H5FDgass.c H5FDlog.c \
+ H5FDcore.c H5FDfamily.c H5FDgass.c H5FDlog.c \
H5FDmpio.c H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDsrb.c \
- H5FDstdio.c H5FDstream.c H5FL.c H5FO.c H5FP.c H5FPclient.c \
- H5FPserver.c H5FS.c H5Fcompact.c H5Fcontig.c H5Fistore.c H5Fseq.c \
+ H5FDstdio.c H5FDstream.c H5FL.c H5FO.c \
+ H5FS.c H5Fcompact.c H5Fcontig.c H5Fistore.c H5Fseq.c \
H5G.c H5Gent.c H5Gnode.c H5Gstab.c H5HG.c H5HL.c H5HP.c H5I.c \
H5MF.c H5MM.c H5O.c H5Oattr.c H5Obogus.c H5Ocont.c H5Odtype.c \
H5Oefl.c H5Ofill.c H5Olayout.c H5Omtime.c H5Oname.c H5Onull.c \
@@ -225,7 +225,6 @@ H5F.c: $(top_srcdir)/src/H5F.c
H5FD.c: $(top_srcdir)/src/H5FD.c
H5FDcore.c: $(top_srcdir)/src/H5FDcore.c
H5FDfamily.c: $(top_srcdir)/src/H5FDfamily.c
-H5FDfphdf5.c: $(top_srcdir)/src/H5FDfphdf5.c
H5FDgass.c: $(top_srcdir)/src/H5FDgass.c
H5FDlog.c: $(top_srcdir)/src/H5FDlog.c
H5FDmpio.c: $(top_srcdir)/src/H5FDmpio.c
@@ -237,9 +236,6 @@ H5FDstdio.c: $(top_srcdir)/src/H5FDstdio.c
H5FDstream.c: $(top_srcdir)/src/H5FDstream.c
H5FL.c: $(top_srcdir)/src/H5FL.c
H5FO.c: $(top_srcdir)/src/H5FO.c
-H5FP.c: $(top_srcdir)/src/H5FP.c
-H5FPclient.c: $(top_srcdir)/src/H5FPclient.c
-H5FPserver.c: $(top_srcdir)/src/H5FPserver.c
H5FS.c: $(top_srcdir)/src/H5FS.c
H5Fcompact.c: $(top_srcdir)/src/H5Fcompact.c
H5Fcontig.c: $(top_srcdir)/src/H5Fcontig.c
diff --git a/perform/Dependencies b/perform/Dependencies
index c64e6d0..afc1c09 100644
--- a/perform/Dependencies
+++ b/perform/Dependencies
@@ -7,8 +7,8 @@ iopipe.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -27,10 +27,10 @@ iopipe.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -45,8 +45,8 @@ chunk.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -65,10 +65,10 @@ chunk.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -81,8 +81,8 @@ overhead.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -101,10 +101,10 @@ overhead.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -119,8 +119,8 @@ zip_perf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -139,10 +139,10 @@ zip_perf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -157,8 +157,8 @@ perf_meta.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -177,10 +177,10 @@ perf_meta.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -195,8 +195,8 @@ pio_perf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -215,10 +215,10 @@ pio_perf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -237,8 +237,8 @@ pio_engine.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -257,10 +257,10 @@ pio_engine.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -279,8 +279,8 @@ pio_timer.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -299,10 +299,10 @@ pio_timer.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
diff --git a/src/Dependencies b/src/Dependencies
index 0b4dcf5..80d76d4 100644
--- a/src/Dependencies
+++ b/src/Dependencies
@@ -16,9 +16,11 @@ H5.lo: \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5Ipublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -38,7 +40,6 @@ H5.lo: \
$(srcdir)/H5Zpublic.h \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5Ipkg.h \
$(srcdir)/H5Iprivate.h \
@@ -67,12 +68,14 @@ H5A.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Sprivate.h \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -107,7 +110,8 @@ H5AC.lo: \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -115,6 +119,7 @@ H5AC.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -153,9 +158,11 @@ H5B.lo: \
$(srcdir)/H5Bpkg.h \
$(srcdir)/H5Bprivate.h \
$(srcdir)/H5Bpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -181,7 +188,6 @@ H5B.lo: \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5MFprivate.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5MMprivate.h \
$(srcdir)/H5Pprivate.h \
$(srcdir)/H5Ppublic.h
@@ -196,10 +202,11 @@ H5D.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -207,6 +214,7 @@ H5D.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -226,7 +234,6 @@ H5D.lo: \
$(srcdir)/H5Ppublic.h \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5FOprivate.h \
$(srcdir)/H5TBprivate.h \
@@ -246,10 +253,11 @@ H5Dcontig.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -257,6 +265,7 @@ H5Dcontig.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -276,7 +285,6 @@ H5Dcontig.lo: \
$(srcdir)/H5Ppublic.h \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5MFprivate.h \
$(srcdir)/H5Vprivate.h
@@ -291,10 +299,11 @@ H5Dcompact.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -302,6 +311,7 @@ H5Dcompact.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -321,7 +331,6 @@ H5Dcompact.lo: \
$(srcdir)/H5Ppublic.h \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5Vprivate.h
H5Dio.lo: \
@@ -335,10 +344,11 @@ H5Dio.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -346,6 +356,7 @@ H5Dio.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -365,7 +376,6 @@ H5Dio.lo: \
$(srcdir)/H5Ppublic.h \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5MMprivate.h \
@@ -387,10 +397,12 @@ H5Distore.lo: \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5Ipublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Dpkg.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -416,7 +428,6 @@ H5Distore.lo: \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5MFprivate.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5MMprivate.h \
$(srcdir)/H5Vprivate.h
H5Dseq.lo: \
@@ -430,10 +441,11 @@ H5Dseq.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -441,6 +453,7 @@ H5Dseq.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -460,7 +473,6 @@ H5Dseq.lo: \
$(srcdir)/H5Ppublic.h \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5MFprivate.h \
$(srcdir)/H5MMprivate.h \
@@ -476,10 +488,11 @@ H5Dtest.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -487,6 +500,7 @@ H5Dtest.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -522,32 +536,14 @@ H5E.lo: \
$(srcdir)/H5MMpublic.h
H5F.lo: \
$(srcdir)/H5F.c \
- $(srcdir)/H5FDcore.h \
- $(srcdir)/H5Ipublic.h \
+ $(srcdir)/H5private.h \
$(srcdir)/H5public.h \
H5pubconf.h \
$(srcdir)/H5api_adpt.h \
- $(srcdir)/H5FDfamily.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
- $(srcdir)/H5FDpublic.h \
- $(srcdir)/H5Fpublic.h \
- $(srcdir)/H5FDgass.h \
- $(srcdir)/H5FDlog.h \
- $(srcdir)/H5FDmpiposix.h \
- $(srcdir)/H5FDmulti.h \
- $(srcdir)/H5Ppublic.h \
- $(srcdir)/H5Dpublic.h \
- $(srcdir)/H5MMpublic.h \
- $(srcdir)/H5Zpublic.h \
- $(srcdir)/H5FDsec2.h \
- $(srcdir)/H5FDsrb.h \
- $(srcdir)/H5FDstdio.h \
- $(srcdir)/H5FDstream.h \
- $(srcdir)/H5private.h \
$(srcdir)/H5MPprivate.h \
$(srcdir)/H5Aprivate.h \
$(srcdir)/H5Apublic.h \
+ $(srcdir)/H5Ipublic.h \
$(srcdir)/H5Gprivate.h \
$(srcdir)/H5Gpublic.h \
$(srcdir)/H5Opublic.h \
@@ -556,28 +552,46 @@ H5F.lo: \
$(srcdir)/H5ACprivate.h \
$(srcdir)/H5ACpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Dprivate.h \
+ $(srcdir)/H5Dpublic.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
+ $(srcdir)/H5MMpublic.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Zprivate.h \
+ $(srcdir)/H5Zpublic.h \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
$(srcdir)/H5Fpkg.h \
$(srcdir)/H5FOprivate.h \
$(srcdir)/H5TBprivate.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FLprivate.h \
- $(srcdir)/H5FPprivate.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5MMprivate.h \
- $(srcdir)/H5Pprivate.h
+ $(srcdir)/H5Pprivate.h \
+ $(srcdir)/H5Ppublic.h \
+ $(srcdir)/H5FDcore.h \
+ $(srcdir)/H5FDfamily.h \
+ $(srcdir)/H5FDgass.h \
+ $(srcdir)/H5FDlog.h \
+ $(srcdir)/H5FDmulti.h \
+ $(srcdir)/H5FDsec2.h \
+ $(srcdir)/H5FDsrb.h \
+ $(srcdir)/H5FDstdio.h \
+ $(srcdir)/H5FDstream.h
H5FD.lo: \
$(srcdir)/H5FD.c \
$(srcdir)/H5private.h \
@@ -588,10 +602,11 @@ H5FD.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -599,6 +614,7 @@ H5FD.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -618,12 +634,20 @@ H5FD.lo: \
$(srcdir)/H5Fpkg.h \
$(srcdir)/H5FOprivate.h \
$(srcdir)/H5TBprivate.h \
- $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDcore.h \
+ $(srcdir)/H5FDfamily.h \
+ $(srcdir)/H5FDgass.h \
+ $(srcdir)/H5FDlog.h \
+ $(srcdir)/H5FDmulti.h \
+ $(srcdir)/H5Ppublic.h \
+ $(srcdir)/H5FDsec2.h \
+ $(srcdir)/H5FDsrb.h \
+ $(srcdir)/H5FDstdio.h \
+ $(srcdir)/H5FDstream.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5MMprivate.h \
- $(srcdir)/H5Pprivate.h \
- $(srcdir)/H5Ppublic.h
+ $(srcdir)/H5Pprivate.h
H5FDcore.lo: \
$(srcdir)/H5FDcore.c \
$(srcdir)/H5private.h \
@@ -638,7 +662,7 @@ H5FDcore.lo: \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5FDcore.h \
@@ -654,6 +678,7 @@ H5FDcore.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -680,7 +705,7 @@ H5FDfamily.lo: \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5FDfamily.h \
@@ -696,6 +721,7 @@ H5FDfamily.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -708,50 +734,51 @@ H5FDfamily.lo: \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Zprivate.h
-H5FDfphdf5.lo: \
- $(srcdir)/H5FDfphdf5.c \
+H5FDgass.lo: \
+ $(srcdir)/H5FDgass.c \
$(srcdir)/H5private.h \
$(srcdir)/H5public.h \
H5pubconf.h \
$(srcdir)/H5api_adpt.h \
$(srcdir)/H5MPprivate.h \
- $(srcdir)/H5ACprivate.h \
- $(srcdir)/H5ACpublic.h \
+ $(srcdir)/H5Eprivate.h \
+ $(srcdir)/H5Epublic.h \
+ $(srcdir)/H5Ipublic.h \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
- $(srcdir)/H5Ipublic.h \
$(srcdir)/H5FDpublic.h \
- $(srcdir)/H5Dprivate.h \
- $(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
+ $(srcdir)/H5FDgass.h \
+ $(srcdir)/H5Iprivate.h \
+ $(srcdir)/H5MMprivate.h \
+ $(srcdir)/H5MMpublic.h \
+ $(srcdir)/H5Pprivate.h \
+ $(srcdir)/H5Ppublic.h \
+ $(srcdir)/H5Dpublic.h \
+ $(srcdir)/H5Zpublic.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
- $(srcdir)/H5MMpublic.h \
$(srcdir)/H5Gprivate.h \
$(srcdir)/H5Gpublic.h \
$(srcdir)/H5Bprivate.h \
$(srcdir)/H5Bpublic.h \
+ $(srcdir)/H5ACprivate.h \
+ $(srcdir)/H5ACpublic.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
- $(srcdir)/H5Zprivate.h \
- $(srcdir)/H5Zpublic.h \
- $(srcdir)/H5Eprivate.h \
- $(srcdir)/H5Epublic.h \
- $(srcdir)/H5FDprivate.h \
- $(srcdir)/H5Iprivate.h \
- $(srcdir)/H5MMprivate.h \
- $(srcdir)/H5Pprivate.h \
- $(srcdir)/H5Ppublic.h
-H5FDgass.lo: \
- $(srcdir)/H5FDgass.c \
+ $(srcdir)/H5Zprivate.h
+H5FDlog.lo: \
+ $(srcdir)/H5FDlog.c \
$(srcdir)/H5private.h \
$(srcdir)/H5public.h \
H5pubconf.h \
@@ -764,10 +791,10 @@ H5FDgass.lo: \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
- $(srcdir)/H5FDgass.h \
+ $(srcdir)/H5FDlog.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5MMprivate.h \
$(srcdir)/H5MMpublic.h \
@@ -780,6 +807,7 @@ H5FDgass.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -792,8 +820,8 @@ H5FDgass.lo: \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Zprivate.h
-H5FDlog.lo: \
- $(srcdir)/H5FDlog.c \
+H5FDmpi.lo: \
+ $(srcdir)/H5FDmpi.c \
$(srcdir)/H5private.h \
$(srcdir)/H5public.h \
H5pubconf.h \
@@ -806,23 +834,20 @@ H5FDlog.lo: \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
- $(srcdir)/H5FDlog.h \
- $(srcdir)/H5FLprivate.h \
- $(srcdir)/H5Iprivate.h \
- $(srcdir)/H5MMprivate.h \
- $(srcdir)/H5MMpublic.h \
$(srcdir)/H5Pprivate.h \
$(srcdir)/H5Ppublic.h \
$(srcdir)/H5Dpublic.h \
+ $(srcdir)/H5MMpublic.h \
$(srcdir)/H5Zpublic.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -850,7 +875,8 @@ H5FDmpio.lo: \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -858,6 +884,7 @@ H5FDmpio.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -872,7 +899,6 @@ H5FDmpio.lo: \
$(srcdir)/H5Zpublic.h \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5MMprivate.h \
$(srcdir)/H5Pprivate.h \
@@ -893,7 +919,7 @@ H5FDmpiposix.lo: \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Iprivate.h \
@@ -908,6 +934,7 @@ H5FDmpiposix.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -924,8 +951,8 @@ H5FDmulti.lo: \
$(srcdir)/H5public.h \
H5pubconf.h \
$(srcdir)/H5api_adpt.h \
- $(srcdir)/H5Ipublic.h \
$(srcdir)/H5Apublic.h \
+ $(srcdir)/H5Ipublic.h \
$(srcdir)/H5ACpublic.h \
$(srcdir)/H5Bpublic.h \
$(srcdir)/H5Dpublic.h \
@@ -944,10 +971,10 @@ H5FDmulti.lo: \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5FDcore.h \
$(srcdir)/H5FDfamily.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDgass.h \
$(srcdir)/H5FDlog.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5FDmulti.h \
$(srcdir)/H5FDsec2.h \
@@ -968,7 +995,7 @@ H5FDsec2.lo: \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5FDsec2.h \
@@ -985,6 +1012,7 @@ H5FDsec2.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -1011,7 +1039,7 @@ H5FDsrb.lo: \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5FDsrb.h \
@@ -1027,6 +1055,7 @@ H5FDsrb.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -1045,8 +1074,8 @@ H5FDstdio.lo: \
$(srcdir)/H5public.h \
H5pubconf.h \
$(srcdir)/H5api_adpt.h \
- $(srcdir)/H5Ipublic.h \
$(srcdir)/H5Apublic.h \
+ $(srcdir)/H5Ipublic.h \
$(srcdir)/H5ACpublic.h \
$(srcdir)/H5Bpublic.h \
$(srcdir)/H5Dpublic.h \
@@ -1065,10 +1094,10 @@ H5FDstdio.lo: \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5FDcore.h \
$(srcdir)/H5FDfamily.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDgass.h \
$(srcdir)/H5FDlog.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5FDmulti.h \
$(srcdir)/H5FDsec2.h \
@@ -1085,8 +1114,12 @@ H5FDstream.lo: \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
$(srcdir)/H5Ipublic.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5FDstream.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5MMprivate.h \
@@ -1101,6 +1134,7 @@ H5FDstream.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -1149,6 +1183,7 @@ H5FO.lo: \
$(srcdir)/H5Bprivate.h \
$(srcdir)/H5ACprivate.h \
$(srcdir)/H5ACpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5Oprivate.h \
@@ -1163,124 +1198,6 @@ H5FO.lo: \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Zprivate.h \
$(srcdir)/H5Zpublic.h
-H5FP.lo: \
- $(srcdir)/H5FP.c \
- $(srcdir)/H5private.h \
- $(srcdir)/H5public.h \
- H5pubconf.h \
- $(srcdir)/H5api_adpt.h \
- $(srcdir)/H5MPprivate.h \
- $(srcdir)/H5Eprivate.h \
- $(srcdir)/H5Epublic.h \
- $(srcdir)/H5Ipublic.h \
- $(srcdir)/H5Oprivate.h \
- $(srcdir)/H5Opublic.h \
- $(srcdir)/H5Dpublic.h \
- $(srcdir)/H5Spublic.h \
- $(srcdir)/H5HGprivate.h \
- $(srcdir)/H5HGpublic.h \
- $(srcdir)/H5Fprivate.h \
- $(srcdir)/H5Fpublic.h \
- $(srcdir)/H5FDpublic.h \
- $(srcdir)/H5Tprivate.h \
- $(srcdir)/H5Tpublic.h \
- $(srcdir)/H5MMpublic.h \
- $(srcdir)/H5Gprivate.h \
- $(srcdir)/H5Gpublic.h \
- $(srcdir)/H5Bprivate.h \
- $(srcdir)/H5Bpublic.h \
- $(srcdir)/H5ACprivate.h \
- $(srcdir)/H5ACpublic.h \
- $(srcdir)/H5RSprivate.h \
- $(srcdir)/H5Rprivate.h \
- $(srcdir)/H5Rpublic.h \
- $(srcdir)/H5Zprivate.h \
- $(srcdir)/H5Zpublic.h \
- $(srcdir)/H5TBprivate.h
-H5FPclient.lo: \
- $(srcdir)/H5FPclient.c \
- $(srcdir)/H5private.h \
- $(srcdir)/H5public.h \
- H5pubconf.h \
- $(srcdir)/H5api_adpt.h \
- $(srcdir)/H5MPprivate.h \
- $(srcdir)/H5ACprivate.h \
- $(srcdir)/H5ACpublic.h \
- $(srcdir)/H5Fprivate.h \
- $(srcdir)/H5Fpublic.h \
- $(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDpublic.h \
- $(srcdir)/H5Dprivate.h \
- $(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
- $(srcdir)/H5FDmpiposix.h \
- $(srcdir)/H5Oprivate.h \
- $(srcdir)/H5Opublic.h \
- $(srcdir)/H5Spublic.h \
- $(srcdir)/H5HGprivate.h \
- $(srcdir)/H5HGpublic.h \
- $(srcdir)/H5Tprivate.h \
- $(srcdir)/H5Tpublic.h \
- $(srcdir)/H5MMpublic.h \
- $(srcdir)/H5Gprivate.h \
- $(srcdir)/H5Gpublic.h \
- $(srcdir)/H5Bprivate.h \
- $(srcdir)/H5Bpublic.h \
- $(srcdir)/H5RSprivate.h \
- $(srcdir)/H5Rprivate.h \
- $(srcdir)/H5Rpublic.h \
- $(srcdir)/H5Zprivate.h \
- $(srcdir)/H5Zpublic.h \
- $(srcdir)/H5Eprivate.h \
- $(srcdir)/H5Epublic.h \
- $(srcdir)/H5FDprivate.h \
- $(srcdir)/H5Gpkg.h \
- $(srcdir)/H5Iprivate.h \
- $(srcdir)/H5MMprivate.h \
- $(srcdir)/H5Spkg.h \
- $(srcdir)/H5Sprivate.h \
- $(srcdir)/H5Pprivate.h \
- $(srcdir)/H5Ppublic.h \
- $(srcdir)/H5TBprivate.h
-H5FPserver.lo: \
- $(srcdir)/H5FPserver.c \
- $(srcdir)/H5private.h \
- $(srcdir)/H5public.h \
- H5pubconf.h \
- $(srcdir)/H5api_adpt.h \
- $(srcdir)/H5MPprivate.h \
- $(srcdir)/H5ACprivate.h \
- $(srcdir)/H5ACpublic.h \
- $(srcdir)/H5Fprivate.h \
- $(srcdir)/H5Fpublic.h \
- $(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDpublic.h \
- $(srcdir)/H5Eprivate.h \
- $(srcdir)/H5Epublic.h \
- $(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
- $(srcdir)/H5FDmpiposix.h \
- $(srcdir)/H5Oprivate.h \
- $(srcdir)/H5Opublic.h \
- $(srcdir)/H5Dpublic.h \
- $(srcdir)/H5Spublic.h \
- $(srcdir)/H5HGprivate.h \
- $(srcdir)/H5HGpublic.h \
- $(srcdir)/H5Tprivate.h \
- $(srcdir)/H5Tpublic.h \
- $(srcdir)/H5MMpublic.h \
- $(srcdir)/H5Gprivate.h \
- $(srcdir)/H5Gpublic.h \
- $(srcdir)/H5Bprivate.h \
- $(srcdir)/H5Bpublic.h \
- $(srcdir)/H5RSprivate.h \
- $(srcdir)/H5Rprivate.h \
- $(srcdir)/H5Rpublic.h \
- $(srcdir)/H5Zprivate.h \
- $(srcdir)/H5Zpublic.h \
- $(srcdir)/H5TBprivate.h
H5FS.lo: \
$(srcdir)/H5FS.c \
$(srcdir)/H5private.h \
@@ -1309,10 +1226,12 @@ H5G.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -1360,6 +1279,7 @@ H5Gent.lo: \
$(srcdir)/H5Bprivate.h \
$(srcdir)/H5ACprivate.h \
$(srcdir)/H5ACpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Gpkg.h \
$(srcdir)/H5HLprivate.h \
@@ -1381,6 +1301,7 @@ H5Gnode.lo: \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Bprivate.h \
$(srcdir)/H5Bpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
$(srcdir)/H5Fpkg.h \
@@ -1397,7 +1318,7 @@ H5Gnode.lo: \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5MFprivate.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5MMprivate.h \
@@ -1438,6 +1359,7 @@ H5Gstab.lo: \
$(srcdir)/H5Bprivate.h \
$(srcdir)/H5ACprivate.h \
$(srcdir)/H5ACpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5Gpkg.h \
@@ -1479,13 +1401,14 @@ H5HG.lo: \
$(srcdir)/H5Gpublic.h \
$(srcdir)/H5Opublic.h \
$(srcdir)/H5Bprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5MFprivate.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5MMprivate.h \
@@ -1513,13 +1436,14 @@ H5HL.lo: \
$(srcdir)/H5Gpublic.h \
$(srcdir)/H5Opublic.h \
$(srcdir)/H5Bprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5HLprivate.h \
$(srcdir)/H5HLpublic.h \
$(srcdir)/H5MFprivate.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5MMprivate.h \
@@ -1561,6 +1485,7 @@ H5I.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h
H5MF.lo: \
$(srcdir)/H5MF.c \
@@ -1585,9 +1510,10 @@ H5MF.lo: \
$(srcdir)/H5Bprivate.h \
$(srcdir)/H5ACprivate.h \
$(srcdir)/H5ACpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5MFprivate.h
@@ -1626,12 +1552,13 @@ H5O.lo: \
$(srcdir)/H5Gpublic.h \
$(srcdir)/H5Opublic.h \
$(srcdir)/H5Bprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5MFprivate.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5MMprivate.h \
@@ -1671,12 +1598,14 @@ H5Oattr.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Sprivate.h \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -1719,6 +1648,7 @@ H5Obogus.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -1754,6 +1684,7 @@ H5Ocont.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -1788,6 +1719,7 @@ H5Odtype.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5MMprivate.h \
$(srcdir)/H5MMpublic.h \
@@ -1805,7 +1737,8 @@ H5Odtype.lo: \
$(srcdir)/H5Zpublic.h \
$(srcdir)/H5Tpkg.h \
$(srcdir)/H5Dprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h
H5Oefl.lo: \
@@ -1831,6 +1764,7 @@ H5Oefl.lo: \
$(srcdir)/H5Bprivate.h \
$(srcdir)/H5ACprivate.h \
$(srcdir)/H5ACpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5HLprivate.h \
$(srcdir)/H5HLpublic.h \
@@ -1872,6 +1806,7 @@ H5Ofill.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -1897,10 +1832,11 @@ H5Olayout.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -1908,6 +1844,7 @@ H5Olayout.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -1926,7 +1863,6 @@ H5Olayout.lo: \
$(srcdir)/H5Epublic.h \
$(srcdir)/H5FLprivate.h \
$(srcdir)/H5MFprivate.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5MMprivate.h \
$(srcdir)/H5Opkg.h
H5Omtime.lo: \
@@ -1952,6 +1888,7 @@ H5Omtime.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -1987,6 +1924,7 @@ H5Oname.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -2018,6 +1956,7 @@ H5Onull.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2055,6 +1994,7 @@ H5Opline.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -2089,6 +2029,7 @@ H5Osdspace.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5MMprivate.h \
$(srcdir)/H5MMpublic.h \
@@ -2107,7 +2048,8 @@ H5Osdspace.lo: \
$(srcdir)/H5Spkg.h \
$(srcdir)/H5Sprivate.h \
$(srcdir)/H5Dprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Pprivate.h \
@@ -2135,6 +2077,7 @@ H5Oshared.lo: \
$(srcdir)/H5Bprivate.h \
$(srcdir)/H5ACprivate.h \
$(srcdir)/H5ACpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5MMprivate.h \
$(srcdir)/H5MMpublic.h \
@@ -2172,6 +2115,7 @@ H5Ostab.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5MMprivate.h \
$(srcdir)/H5MMpublic.h \
@@ -2197,10 +2141,11 @@ H5P.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -2208,6 +2153,7 @@ H5P.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2241,10 +2187,11 @@ H5Pdcpl.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -2252,6 +2199,7 @@ H5Pdcpl.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2284,10 +2232,11 @@ H5Pdxpl.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -2295,6 +2244,7 @@ H5Pdxpl.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2325,10 +2275,11 @@ H5Pfapl.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -2336,6 +2287,7 @@ H5Pfapl.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2352,7 +2304,6 @@ H5Pfapl.lo: \
$(srcdir)/H5Zpublic.h \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
- $(srcdir)/H5FDprivate.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5Ppkg.h \
$(srcdir)/H5Pprivate.h \
@@ -2374,6 +2325,7 @@ H5Pfcpl.lo: \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5Ipublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Eprivate.h \
$(srcdir)/H5Epublic.h \
$(srcdir)/H5Ppkg.h \
@@ -2421,6 +2373,7 @@ H5Ptest.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -2445,10 +2398,11 @@ H5R.lo: \
$(srcdir)/H5Ipublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -2456,6 +2410,7 @@ H5R.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2479,6 +2434,18 @@ H5R.lo: \
$(srcdir)/H5Sprivate.h \
$(srcdir)/H5Pprivate.h \
$(srcdir)/H5Ppublic.h
+H5RC.lo: \
+ $(srcdir)/H5RC.c \
+ $(srcdir)/H5Eprivate.h \
+ $(srcdir)/H5Epublic.h \
+ $(srcdir)/H5public.h \
+ H5pubconf.h \
+ $(srcdir)/H5api_adpt.h \
+ $(srcdir)/H5Ipublic.h \
+ $(srcdir)/H5private.h \
+ $(srcdir)/H5MPprivate.h \
+ $(srcdir)/H5FLprivate.h \
+ $(srcdir)/H5RCprivate.h
H5RS.lo: \
$(srcdir)/H5RS.c \
$(srcdir)/H5Eprivate.h \
@@ -2514,6 +2481,7 @@ H5S.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -2530,7 +2498,8 @@ H5S.lo: \
$(srcdir)/H5Spkg.h \
$(srcdir)/H5Sprivate.h \
$(srcdir)/H5Dprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Pprivate.h \
@@ -2551,16 +2520,18 @@ H5Sall.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2595,16 +2566,18 @@ H5Shyper.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2645,10 +2618,11 @@ H5Smpio.lo: \
$(srcdir)/H5Bprivate.h \
$(srcdir)/H5ACprivate.h \
$(srcdir)/H5ACpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
- $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Iprivate.h \
$(srcdir)/H5Pprivate.h \
@@ -2684,16 +2658,18 @@ H5Snone.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2730,16 +2706,18 @@ H5Spoint.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -2766,10 +2744,11 @@ H5Sselect.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -2777,6 +2756,7 @@ H5Sselect.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2816,16 +2796,18 @@ H5Stest.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2864,10 +2846,11 @@ H5T.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -2875,6 +2858,7 @@ H5T.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -2923,12 +2907,14 @@ H5Tarray.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -2962,12 +2948,14 @@ H5Tbit.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3001,12 +2989,14 @@ H5Tcommit.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3041,12 +3031,14 @@ H5Tcompound.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3081,6 +3073,7 @@ H5Tconv.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -3095,7 +3088,8 @@ H5Tconv.lo: \
$(srcdir)/H5Zprivate.h \
$(srcdir)/H5Tpkg.h \
$(srcdir)/H5Dprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h
H5Tcset.lo: \
@@ -3123,12 +3117,14 @@ H5Tcset.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3164,12 +3160,14 @@ H5Tenum.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3204,12 +3202,14 @@ H5Tfields.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3243,12 +3243,14 @@ H5Tfixed.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3282,12 +3284,14 @@ H5Tfloat.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3323,12 +3327,14 @@ H5Tinit.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3361,6 +3367,7 @@ H5Tnative.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -3376,7 +3383,8 @@ H5Tnative.lo: \
$(srcdir)/H5MMprivate.h \
$(srcdir)/H5Tpkg.h \
$(srcdir)/H5Dprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h
H5Toffset.lo: \
@@ -3404,12 +3412,14 @@ H5Toffset.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3444,12 +3454,14 @@ H5Topaque.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3483,12 +3495,14 @@ H5Torder.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3522,12 +3536,14 @@ H5Tpad.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3561,12 +3577,14 @@ H5Tprecis.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3600,12 +3618,14 @@ H5Tstrpad.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5RSprivate.h \
$(srcdir)/H5Rprivate.h \
$(srcdir)/H5Rpublic.h \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
@@ -3640,6 +3660,7 @@ H5Tvlen.lo: \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
$(srcdir)/H5Spublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
@@ -3654,7 +3675,8 @@ H5Tvlen.lo: \
$(srcdir)/H5Zprivate.h \
$(srcdir)/H5Tpkg.h \
$(srcdir)/H5Dprivate.h \
- $(srcdir)/H5FDfphdf5.h \
+ $(srcdir)/H5FDprivate.h \
+ $(srcdir)/H5FDmpi.h \
$(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h
H5TB.lo: \
@@ -3705,6 +3727,7 @@ H5V.lo: \
$(srcdir)/H5Fprivate.h \
$(srcdir)/H5Fpublic.h \
$(srcdir)/H5FDpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -3730,10 +3753,11 @@ H5Z.lo: \
$(srcdir)/H5Dprivate.h \
$(srcdir)/H5Dpublic.h \
$(srcdir)/H5Ipublic.h \
- $(srcdir)/H5FDfphdf5.h \
- $(srcdir)/H5FDmpio.h \
+ $(srcdir)/H5FDprivate.h \
$(srcdir)/H5FDpublic.h \
$(srcdir)/H5Fpublic.h \
+ $(srcdir)/H5FDmpi.h \
+ $(srcdir)/H5FDmpio.h \
$(srcdir)/H5FDmpiposix.h \
$(srcdir)/H5Oprivate.h \
$(srcdir)/H5Opublic.h \
@@ -3741,6 +3765,7 @@ H5Z.lo: \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
$(srcdir)/H5Fprivate.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5MMpublic.h \
@@ -3837,6 +3862,7 @@ H5Zszip.lo: \
$(srcdir)/H5Spublic.h \
$(srcdir)/H5HGprivate.h \
$(srcdir)/H5HGpublic.h \
+ $(srcdir)/H5RCprivate.h \
$(srcdir)/H5Tprivate.h \
$(srcdir)/H5Tpublic.h \
$(srcdir)/H5Gprivate.h \
diff --git a/src/H5.c b/src/H5.c
index 028e37f..3a33e4a 100644
--- a/src/H5.c
+++ b/src/H5.c
@@ -14,6 +14,10 @@
#define H5I_PACKAGE /*suppress error about including H5Ipkg */
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5_mask
+
#include "H5private.h" /* Generic Functions */
#include "H5Bprivate.h" /* B-link trees */
#include "H5Dprivate.h" /* Datasets */
@@ -36,8 +40,6 @@
# include <sys/resource.h>
#endif
-#define PABLO_MASK H5_mask
-
/* statically initialize block for pthread_once call used in initializing */
/* the first global mutex */
#ifdef H5_HAVE_THREADSAFE
@@ -78,7 +80,7 @@ H5_init_library(void)
{
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5_init_library, FAIL);
+ FUNC_ENTER_NOAPI(H5_init_library, FAIL)
/*
* Make sure the package information is updated.
*/
@@ -127,7 +129,7 @@ H5_init_library(void)
* adding it again later if the library is cosed and reopened.
*/
if (!dont_atexit_g) {
- HDatexit(H5_term_library);
+ (void)HDatexit(H5_term_library);
dont_atexit_g = TRUE;
}
@@ -140,22 +142,22 @@ H5_init_library(void)
* property classes.
*/
if (H5P_init()<0)
- HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize property list interface");
+ HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize property list interface")
if (H5F_init()<0)
- HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize file interface");
+ HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize file interface")
if (H5T_init()<0)
- HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize datatype interface");
+ 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");
+ 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");
+ HGOTO_ERROR(H5E_FUNC, H5E_CANTINIT, FAIL, "unable to initialize metadata caching interface")
/* Debugging? */
H5_debug_mask("-all");
H5_debug_mask(HDgetenv("HDF5_DEBUG"));
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -194,7 +196,7 @@ H5_term_library(void)
goto done;
/* Check if we should display error output */
- H5Eget_auto(&func,NULL);
+ (void)H5Eget_auto(&func,NULL);
/*
* Terminate each interface. The termination functions return a positive
@@ -206,8 +208,8 @@ H5_term_library(void)
(sprintf(loop+at, "%s%s", at?",":"", #F), \
at += HDstrlen(loop+at), \
n): \
- ((n>0 && at+5<sizeof loop)? \
- (sprintf(loop+at, "..."), \
+ ((n>0 && at+5<sizeof loop)? \
+ (sprintf(loop+at, "..."), \
at += HDstrlen(loop+at), \
n):n))
@@ -314,7 +316,7 @@ H5dont_atexit(void)
{
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API_NOINIT(H5dont_atexit);
+ FUNC_ENTER_API_NOINIT(H5dont_atexit)
H5TRACE0("e","");
if (dont_atexit_g)
@@ -322,7 +324,7 @@ H5dont_atexit(void)
else
dont_atexit_g = TRUE;
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -353,14 +355,15 @@ H5garbage_collect(void)
{
herr_t ret_value = SUCCEED;
- FUNC_ENTER_API(H5garbage_collect, FAIL);
+ FUNC_ENTER_API(H5garbage_collect, FAIL)
H5TRACE0("e","");
/* Call the garbage collection routines in the library */
- H5FL_garbage_coll();
+ if(H5FL_garbage_coll()<0)
+ HGOTO_ERROR(H5E_RESOURCE, H5E_CANTFREE, FAIL, "can't garbage collect objects")
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
} /* end H5garbage_collect() */
@@ -399,15 +402,16 @@ H5set_free_list_limits(int reg_global_lim, int reg_list_lim, int arr_global_lim,
{
herr_t ret_value = SUCCEED;
- FUNC_ENTER_API(H5set_free_list_limits, FAIL);
+ FUNC_ENTER_API(H5set_free_list_limits, FAIL)
H5TRACE6("e","IsIsIsIsIsIs",reg_global_lim,reg_list_lim,arr_global_lim,
arr_list_lim,blk_global_lim,blk_list_lim);
/* Call the free list function to actually set the limits */
- H5FL_set_free_list_limits(reg_global_lim, reg_list_lim, arr_global_lim, arr_list_lim, blk_global_lim, blk_list_lim);
+ if(H5FL_set_free_list_limits(reg_global_lim, reg_list_lim, arr_global_lim, arr_list_lim, blk_global_lim, blk_list_lim)<0)
+ HGOTO_ERROR(H5E_RESOURCE, H5E_CANTSET, FAIL, "can't set garbage collection limits")
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
} /* end H5set_free_list_limits() */
@@ -493,7 +497,7 @@ H5_debug_mask(const char *s)
} else if (HDisdigit(*s)) {
int fd = (int)HDstrtol (s, &rest, 0);
if ((stream=HDfdopen(fd, "w"))) {
- HDsetvbuf (stream, NULL, _IOLBF, 0);
+ (void)HDsetvbuf (stream, NULL, _IOLBF, 0);
}
s = rest;
} else {
@@ -531,7 +535,7 @@ H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum)
{
herr_t ret_value = SUCCEED;
- FUNC_ENTER_API(H5get_libversion, FAIL);
+ FUNC_ENTER_API(H5get_libversion, FAIL)
H5TRACE3("e","*Iu*Iu*Iu",majnum,minnum,relnum);
/* Set the version information */
@@ -540,7 +544,7 @@ H5get_libversion(unsigned *majnum, unsigned *minnum, unsigned *relnum)
if (relnum) *relnum = H5_VERS_RELEASE;
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -575,12 +579,12 @@ H5check_version(unsigned majnum, unsigned minnum, unsigned relnum)
static int disable_version_check = 0; /* Set if the version check should be disabled */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API_NOINIT(H5check_version);
+ FUNC_ENTER_API_NOINIT(H5check_version)
H5TRACE3("e","IuIuIu",majnum,minnum,relnum);
/* Don't check again, if we already have */
if (checked)
- HGOTO_DONE(SUCCEED);
+ HGOTO_DONE(SUCCEED)
{ const char *s; /* Environment string for disabling version check */
@@ -612,7 +616,6 @@ H5check_version(unsigned majnum, unsigned minnum, unsigned relnum)
/* Bail out now. */
HDfputs ("Bye...\n", stderr);
HDabort ();
- break;
case 2:
/* continue silently */
break;
@@ -666,7 +669,7 @@ H5check_version(unsigned majnum, unsigned minnum, unsigned relnum)
}
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -692,11 +695,11 @@ H5open(void)
{
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API_NOCLEAR(H5open, FAIL);
+ FUNC_ENTER_API_NOCLEAR(H5open, FAIL)
H5TRACE0("e","");
/* all work is done by FUNC_ENTER() */
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -722,12 +725,12 @@ H5close(void)
* thing just to release it all right away. It is safe to call this
* function for an uninitialized library.
*/
- FUNC_ENTER_API_NOINIT(H5close);
+ FUNC_ENTER_API_NOINIT(H5close)
H5TRACE0("e","");
H5_term_library();
- FUNC_LEAVE_API(SUCCEED);
+ FUNC_LEAVE_API(SUCCEED)
}
@@ -760,6 +763,7 @@ H5close(void)
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
int
HDsnprintf(char *buf, size_t UNUSED size, const char *fmt, ...)
{
@@ -799,8 +803,9 @@ HDsnprintf(char *buf, size_t UNUSED size, const char *fmt, ...)
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
int
-HDvsnprintf(char *buf, size_t size, const char *fmt, va_list ap)
+HDvsnprintf(char *buf, size_t UNUSED size, const char *fmt, va_list ap)
{
return HDvsprintf(buf, fmt, ap);
}
@@ -885,7 +890,7 @@ HDfprintf(FILE *stream, const char *fmt, ...)
case '#':
prefix = 1;
break;
- }
+ } /*lint !e744 Switch statement doesn't _need_ default */
s++;
}
@@ -916,9 +921,11 @@ HDfprintf(FILE *stream, const char *fmt, ...)
if (prec<1) prec = 1;
}
- /* Type modifier */
+ /* Extra type modifiers */
if (HDstrchr ("ZHhlqLI", *s)) {
switch (*s) {
+ /*lint --e{506} Don't issue warnings about constant value booleans */
+ /*lint --e{774} Don't issue warnings boolean within 'if' always evaluates false/true */
case 'H':
if (sizeof(hsize_t)<sizeof(long)) {
modifier[0] = '\0';
@@ -971,15 +978,12 @@ HDfprintf(FILE *stream, const char *fmt, ...)
sprintf (format_templ, "%%%s%s%s%s%s",
leftjust?"-":"", plussign?"+":"",
ldspace?" ":"", prefix?"#":"", zerofill?"0":"");
- if (fwidth>0) {
+ if (fwidth>0)
sprintf (format_templ+HDstrlen(format_templ), "%d", fwidth);
- }
- if (prec>0) {
+ if (prec>0)
sprintf (format_templ+HDstrlen(format_templ), ".%d", prec);
- }
- if (*modifier) {
+ if (*modifier)
sprintf (format_templ+HDstrlen(format_templ), "%s", modifier);
- }
sprintf (format_templ+HDstrlen(format_templ), "%c", conv);
@@ -988,7 +992,7 @@ HDfprintf(FILE *stream, const char *fmt, ...)
case 'd':
case 'i':
if (!HDstrcmp(modifier, "h")) {
- short x = va_arg (ap, int);
+ short x = (short)va_arg (ap, int);
n = fprintf (stream, format_templ, x);
} else if (!*modifier) {
int x = va_arg (ap, int);
@@ -1007,7 +1011,7 @@ HDfprintf(FILE *stream, const char *fmt, ...)
case 'x':
case 'X':
if (!HDstrcmp (modifier, "h")) {
- unsigned short x = va_arg (ap, unsigned int);
+ unsigned short x = (unsigned short)va_arg (ap, unsigned int);
n = fprintf (stream, format_templ, x);
} else if (!*modifier) {
unsigned int x = va_arg (ap, unsigned int);
@@ -1048,31 +1052,32 @@ HDfprintf(FILE *stream, const char *fmt, ...)
break;
case 'a':
- if (1) {
+ {
haddr_t x = va_arg (ap, haddr_t);
if (H5F_addr_defined(x)) {
sprintf(format_templ, "%%%s%s%s%s%s",
leftjust?"-":"", plussign?"+":"",
ldspace?" ":"", prefix?"#":"",
zerofill?"0":"");
- if (fwidth>0) {
+ if (fwidth>0)
sprintf(format_templ+HDstrlen(format_templ), "%d", fwidth);
- }
+ /*lint --e{506} Don't issue warnings about constant value booleans */
+ /*lint --e{774} Don't issue warnings boolean within 'if' always evaluates false/true */
if (sizeof(x)==H5_SIZEOF_INT) {
- HDstrcat(format_templ, "d");
+ HDstrcat(format_templ, "u");
} else if (sizeof(x)==H5_SIZEOF_LONG) {
- HDstrcat(format_templ, "ld");
+ HDstrcat(format_templ, "lu");
} else if (sizeof(x)==H5_SIZEOF_LONG_LONG) {
HDstrcat(format_templ, H5_PRINTF_LL_WIDTH);
- HDstrcat(format_templ, "d");
+ HDstrcat(format_templ, "u");
}
n = fprintf(stream, format_templ, x);
} else {
HDstrcpy(format_templ, "%");
- if (leftjust) HDstrcat(format_templ, "-");
- if (fwidth) {
+ if (leftjust)
+ HDstrcat(format_templ, "-");
+ if (fwidth)
sprintf(format_templ+HDstrlen(format_templ), "%d", fwidth);
- }
HDstrcat(format_templ, "s");
fprintf(stream, format_templ, "UNDEF");
}
@@ -1080,7 +1085,7 @@ HDfprintf(FILE *stream, const char *fmt, ...)
break;
case 'c':
- if (1) {
+ {
char x = (char)va_arg (ap, int);
n = fprintf (stream, format_templ, x);
}
@@ -1088,17 +1093,15 @@ HDfprintf(FILE *stream, const char *fmt, ...)
case 's':
case 'p':
- if (1) {
+ {
char *x = va_arg (ap, char*);
n = fprintf (stream, format_templ, x);
}
break;
case 'n':
- if (1) {
- format_templ[HDstrlen(format_templ)-1] = 'u';
- n = fprintf (stream, format_templ, nout);
- }
+ format_templ[HDstrlen(format_templ)-1] = 'u';
+ n = fprintf (stream, format_templ, nout);
break;
default:
@@ -1184,7 +1187,7 @@ HDstrtoll(const char *s, const char **rest, int base)
} else if ('-'==*s) {
sign = -1;
s++;
- }
+ }
/* Zero base prefix */
if (0==base && '0'==*s && ('x'==s[1] || 'X'==s[1])) {
@@ -1205,8 +1208,8 @@ HDstrtoll(const char *s, const char **rest, int base)
if (!overflow) {
int64_t digit = 0;
if (*s>='0' && *s<='9') digit = *s - '0';
- else if (*s>='a' && *s<='z') digit = *s-'a'+10;
- else digit = *s-'A'+10;
+ else if (*s>='a' && *s<='z') digit = (*s-'a')+10;
+ else digit = (*s-'A')+10;
if (acc*base+digit < acc) {
overflow = TRUE;
@@ -1455,7 +1458,7 @@ H5_bandwidth(char *buf/*out*/, double nbytes, double nseconds)
*-------------------------------------------------------------------------
*/
double
-H5_trace (double *returning, const char *func, const char *type, ...)
+H5_trace (const double *returning, const char *func, const char *type, ...)
{
va_list ap;
char buf[64], *rest;
@@ -1466,7 +1469,7 @@ H5_trace (double *returning, const char *func, const char *type, ...)
void *vp = NULL;
FILE *out = H5_debug_g.trace;
H5_timer_t event_time;
- static H5_timer_t first_time;
+ static H5_timer_t first_time = {0.0, 0.0, 0.0};
static int current_depth=0;
static int last_call_depth=0;
@@ -1546,7 +1549,7 @@ H5_trace (double *returning, const char *func, const char *type, ...)
assert(']'==*rest);
type = rest+1;
} else {
- rest = HDstrchr(type, ']');
+ rest = (char *)HDstrchr(type, ']');
assert(rest);
type = rest+1;
asize_idx = -1;
@@ -1562,7 +1565,7 @@ H5_trace (double *returning, const char *func, const char *type, ...)
*/
argname = va_arg (ap, char*);
if (argname) {
- unsigned n = MAX (0, (int)HDstrlen(argname)-3);
+ unsigned n = (unsigned)MAX (0, (int)HDstrlen(argname)-3); /*lint !e666 Allow expression with side effects */
if (!HDstrcmp (argname+n, "_id")) {
HDstrncpy (buf, argname, MIN ((int)sizeof(buf)-1, n));
buf[MIN((int)sizeof(buf)-1, n)] = '\0';
@@ -1729,6 +1732,32 @@ H5_trace (double *returning, const char *func, const char *type, ...)
}
break;
+ case 's':
+ if (ptr) {
+ if (vp) {
+ fprintf (out, "0x%lx", (unsigned long)vp);
+ } else {
+ fprintf(out, "NULL");
+ }
+ } else {
+ H5D_space_status_t space_status = va_arg(ap, H5D_space_status_t);
+ switch (space_status) {
+ case H5D_SPACE_STATUS_NOT_ALLOCATED:
+ fprintf (out, "H5D_SPACE_STATUS_NOT_ALLOCATED");
+ break;
+ case H5D_SPACE_STATUS_PART_ALLOCATED:
+ fprintf (out, "H5D_SPACE_STATUS_PART_ALLOCATED");
+ break;
+ case H5D_SPACE_STATUS_ALLOCATED:
+ fprintf (out, "H5D_SPACE_STATUS_ALLOCATED");
+ break;
+ default:
+ fprintf (out, "%ld", (long)space_status);
+ break;
+ }
+ }
+ break;
+
case 't':
if (ptr) {
if (vp) {
@@ -1768,8 +1797,7 @@ H5_trace (double *returning, const char *func, const char *type, ...)
} else {
herr_t status = va_arg (ap, herr_t);
if (status>=0) fprintf (out, "SUCCEED");
- else if (status<0) fprintf (out, "FAIL");
- else fprintf (out, "%d", (int)status);
+ else fprintf (out, "FAIL");
}
break;
@@ -2027,16 +2055,10 @@ H5_trace (double *returning, const char *func, const char *type, ...)
fprintf (out, "%ld (error)", (long)obj);
break;
case H5I_FILE:
- fprintf(out, "%ld", (long)obj);
- if (HDstrcmp (argname, "file")) {
- fprintf (out, " (file)");
- }
+ fprintf(out, "%ld (file)", (long)obj);
break;
case H5I_GROUP:
- fprintf(out, "%ld", (long)obj);
- if (HDstrcmp (argname, "group")) {
- fprintf (out, " (group)");
- }
+ fprintf(out, "%ld (group)", (long)obj);
break;
case H5I_DATATYPE:
if (obj==H5T_NATIVE_SCHAR_g) {
@@ -2126,37 +2148,25 @@ H5_trace (double *returning, const char *func, const char *type, ...)
} else if (obj==H5T_FORTRAN_S1_g) {
fprintf(out, "H5T_FORTRAN_S1");
} else {
- fprintf(out, "%ld", (long)obj);
- if (HDstrcmp (argname, "type")) {
- fprintf (out, " (type)");
- }
+ fprintf(out, "%ld (dtype)", (long)obj);
}
break;
case H5I_DATASPACE:
- fprintf(out, "%ld", (long)obj);
- if (HDstrcmp (argname, "space")) {
- fprintf (out, " (space)");
- }
+ fprintf(out, "%ld (dspace)", (long)obj);
/* Save the rank of simple data spaces for arrays */
/* This may generate recursive call to the library... -QAK */
{
H5S_t *space = H5I_object(obj);
if (H5S_SIMPLE==H5S_GET_EXTENT_TYPE(space)) {
- asize[argno] = H5S_get_simple_extent_ndims(space);
+ asize[argno] = H5S_GET_EXTENT_NDIMS(space);
}
}
break;
case H5I_DATASET:
- fprintf(out, "%ld", (long)obj);
- if (HDstrcmp (argname, "dset")) {
- fprintf (out, " (dset)");
- }
+ fprintf(out, "%ld (dset)", (long)obj);
break;
case H5I_ATTR:
- fprintf(out, "%ld", (long)obj);
- if (HDstrcmp (argname, "attr")) {
- fprintf (out, " (attr)");
- }
+ fprintf(out, "%ld (attr)", (long)obj);
break;
case H5I_TEMPBUF:
fprintf(out, "%ld", (long)obj);
@@ -2171,8 +2181,7 @@ H5_trace (double *returning, const char *func, const char *type, ...)
fprintf(out, "%ld (file driver)", (long)obj);
break;
default:
- fprintf(out, "%ld", (long)obj);
- fprintf (out, " (unknown class)");
+ fprintf(out, "%ld (unknown class)", (long)obj);
break;
}
}
@@ -2208,10 +2217,10 @@ H5_trace (double *returning, const char *func, const char *type, ...)
if (vp) {
fprintf (out, "0x%lx", (unsigned long)vp);
if (asize_idx>=0 && asize[asize_idx]>=0) {
- int *p = (int*)vp;
+ unsigned *p = (unsigned*)vp;
fprintf(out, " {");
for (i=0; i<asize[asize_idx]; i++) {
- HDfprintf(out, "%s%Hu", i?", ":"", p[i]);
+ HDfprintf(out, "%s%u", i?", ":"", p[i]);
}
fprintf(out, "}");
}
@@ -2352,7 +2361,7 @@ H5_trace (double *returning, const char *func, const char *type, ...)
fprintf(out, "H5FD_MEM_OHDR");
break;
default:
- fprintf(out, "%lu", (unsigned long)mt);
+ fprintf(out, "%ld", (long)mt);
break;
}
}
@@ -2946,7 +2955,7 @@ H5_trace (double *returning, const char *func, const char *type, ...)
if (ptr) {
if (vp) {
fprintf (out, "0x%lx", (unsigned long)vp);
- if (vp && asize_idx>=0 && asize[asize_idx]>=0) {
+ if (asize_idx>=0 && asize[asize_idx]>=0) {
ssize_t *p = (ssize_t*)vp;
fprintf(out, " {");
for (i=0; i<asize[asize_idx]; i++) {
diff --git a/src/H5AC.c b/src/H5AC.c
index 1f866e3..d6c91eb 100644
--- a/src/H5AC.c
+++ b/src/H5AC.c
@@ -36,26 +36,21 @@
#define H5F_PACKAGE /*suppress error about including H5Fpkg */
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5AC_mask
+
#include "H5private.h" /* Generic Functions */
#include "H5ACprivate.h" /* Metadata cache */
#include "H5Dprivate.h" /* Dataset functions */
#include "H5Eprivate.h" /* Error handling */
#include "H5Fpkg.h" /* Files */
+#include "H5FDprivate.h" /* File drivers */
#include "H5FLprivate.h" /* Free Lists */
#include "H5Iprivate.h" /* IDs */
#include "H5MMprivate.h" /* Memory management */
#include "H5Pprivate.h" /* Property lists */
-/*
- * The MPIO, MPIPOSIX, & FPHDF5 drivers are needed because there are
- * places where we check for the parallel I/O transfer mode.
- */
-#include "H5FDfphdf5.h"
-#include "H5FDmpio.h"
-#include "H5FDmpiposix.h"
-
-#define PABLO_MASK H5AC_mask
-
/* Interface initialization */
static int interface_initialize_g = 0;
#define INTERFACE_INIT H5AC_init_interface
@@ -196,85 +191,86 @@ H5AC_init_interface(void)
H5FD_mpio_xfer_t xfer_mode; /* I/O transfer mode property value */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI_NOINIT(H5AC_init_interface);
+ FUNC_ENTER_NOAPI_NOINIT(H5AC_init_interface)
/* Sanity check */
- assert(H5P_CLS_DATASET_XFER_g!=(-1));
+ HDassert(H5P_CLS_DATASET_XFER_g!=(-1));
/* Get the dataset transfer property list class object */
if (NULL == (xfer_pclass = H5I_object(H5P_CLS_DATASET_XFER_g)))
- HGOTO_ERROR(H5E_CACHE, H5E_BADATOM, FAIL, "can't get property list class");
+ HGOTO_ERROR(H5E_CACHE, H5E_BADATOM, FAIL, "can't get property list class")
/* Get an ID for the blocking, collective H5AC dxpl */
if ((H5AC_dxpl_id=H5P_create_id(xfer_pclass)) < 0)
- HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "unable to register property list");
+ HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "unable to register property list")
/* Get the property list object */
if (NULL == (xfer_plist = H5I_object(H5AC_dxpl_id)))
- HGOTO_ERROR(H5E_CACHE, H5E_BADATOM, FAIL, "can't get new property list object");
+ HGOTO_ERROR(H5E_CACHE, H5E_BADATOM, FAIL, "can't get new property list object")
/* Insert 'block before metadata write' property */
block_before_meta_write=1;
if(H5P_insert(xfer_plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME,H5AC_BLOCK_BEFORE_META_WRITE_SIZE,&block_before_meta_write,NULL,NULL,NULL,NULL,NULL,NULL)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property")
/* Insert 'library internal' property */
if(H5P_insert(xfer_plist,H5AC_LIBRARY_INTERNAL_NAME,H5AC_LIBRARY_INTERNAL_SIZE,&library_internal,NULL,NULL,NULL,NULL,NULL,NULL)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property")
/* Set the transfer mode */
xfer_mode=H5FD_MPIO_COLLECTIVE;
if (H5P_set(xfer_plist,H5D_XFER_IO_XFER_MODE_NAME,&xfer_mode)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
/* Get an ID for the non-blocking, collective H5AC dxpl */
if ((H5AC_noblock_dxpl_id=H5P_create_id(xfer_pclass)) < 0)
- HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "unable to register property list");
+ HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "unable to register property list")
/* Get the property list object */
if (NULL == (xfer_plist = H5I_object(H5AC_noblock_dxpl_id)))
- HGOTO_ERROR(H5E_CACHE, H5E_BADATOM, FAIL, "can't get new property list object");
+ HGOTO_ERROR(H5E_CACHE, H5E_BADATOM, FAIL, "can't get new property list object")
/* Insert 'block before metadata write' property */
block_before_meta_write=0;
if(H5P_insert(xfer_plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME,H5AC_BLOCK_BEFORE_META_WRITE_SIZE,&block_before_meta_write,NULL,NULL,NULL,NULL,NULL,NULL)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property")
/* Insert 'library internal' property */
if(H5P_insert(xfer_plist,H5AC_LIBRARY_INTERNAL_NAME,H5AC_LIBRARY_INTERNAL_SIZE,&library_internal,NULL,NULL,NULL,NULL,NULL,NULL)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property")
/* Set the transfer mode */
xfer_mode=H5FD_MPIO_COLLECTIVE;
if (H5P_set(xfer_plist,H5D_XFER_IO_XFER_MODE_NAME,&xfer_mode)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
/* Get an ID for the non-blocking, independent H5AC dxpl */
if ((H5AC_ind_dxpl_id=H5P_create_id(xfer_pclass)) < 0)
- HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "unable to register property list");
+ HGOTO_ERROR(H5E_CACHE, H5E_CANTCREATE, FAIL, "unable to register property list")
/* Get the property list object */
if (NULL == (xfer_plist = H5I_object(H5AC_ind_dxpl_id)))
- HGOTO_ERROR(H5E_CACHE, H5E_BADATOM, FAIL, "can't get new property list object");
+ HGOTO_ERROR(H5E_CACHE, H5E_BADATOM, FAIL, "can't get new property list object")
/* Insert 'block before metadata write' property */
block_before_meta_write=0;
if(H5P_insert(xfer_plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME,H5AC_BLOCK_BEFORE_META_WRITE_SIZE,&block_before_meta_write,NULL,NULL,NULL,NULL,NULL,NULL)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property")
/* Insert 'library internal' property */
if(H5P_insert(xfer_plist,H5AC_LIBRARY_INTERNAL_NAME,H5AC_LIBRARY_INTERNAL_SIZE,&library_internal,NULL,NULL,NULL,NULL,NULL,NULL)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert metadata cache dxpl property")
/* Set the transfer mode */
xfer_mode=H5FD_MPIO_INDEPENDENT;
if (H5P_set(xfer_plist,H5D_XFER_IO_XFER_MODE_NAME,&xfer_mode)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
+
#else /* H5_HAVE_PARALLEL */
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5AC_init_interface);
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5AC_init_interface)
/* Sanity check */
assert(H5P_LST_DATASET_XFER_g!=(-1));
@@ -283,7 +279,7 @@ done:
H5AC_noblock_dxpl_id=H5P_DATASET_XFER_DEFAULT;
H5AC_ind_dxpl_id=H5P_DATASET_XFER_DEFAULT;
- FUNC_LEAVE_NOAPI(SUCCEED);
+ FUNC_LEAVE_NOAPI(SUCCEED)
#endif /* H5_HAVE_PARALLEL */
} /* end H5AC_init_interface() */
@@ -310,7 +306,7 @@ H5AC_term_interface(void)
{
int n=0;
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5AC_term_interface);
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5AC_term_interface)
if (interface_initialize_g) {
#ifdef H5_HAVE_PARALLEL
@@ -345,7 +341,7 @@ H5AC_term_interface(void)
interface_initialize_g = 0;
} /* end if */
- FUNC_LEAVE_NOAPI(n);
+ FUNC_LEAVE_NOAPI(n)
} /* end H5AC_term_interface() */
@@ -544,7 +540,7 @@ H5AC_find(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr,
#ifdef H5_HAVE_PARALLEL
/* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
+ if(IS_H5FD_MPI(f)) {
H5AC_dest_func_t dest;
/* Get local pointer to file's dirty cache information */
@@ -622,7 +618,7 @@ H5AC_find(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr,
#ifdef H5_HAVE_PARALLEL
/* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
+ if(IS_H5FD_MPI(f)) {
H5P_genplist_t *dxpl; /* Dataset transfer property list */
H5FD_mpio_xfer_t xfer_mode; /* I/O transfer mode property value */
@@ -804,7 +800,7 @@ H5AC_flush(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr, unsi
HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed");
#ifdef H5_HAVE_PARALLEL
/* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
+ if(IS_H5FD_MPI(f)) {
H5AC_info_t **dinfo;
#ifdef H5AC_DEBUG
H5AC_subid_t type_id;
@@ -931,7 +927,7 @@ H5AC_flush(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr, unsi
info = cache->slot + i;
#ifdef H5_HAVE_PARALLEL
/* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
+ if(IS_H5FD_MPI(f)) {
H5AC_info_t **dinfo;
#ifdef H5AC_DEBUG
H5AC_subid_t type_id;
@@ -1080,7 +1076,7 @@ H5AC_set(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr, void *
#ifdef H5_HAVE_PARALLEL
/* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
+ if(IS_H5FD_MPI(f)) {
H5AC_info_t **dinfo;
#ifdef H5AC_DEBUG
H5AC_subid_t type_id;
@@ -1253,7 +1249,7 @@ H5AC_rename(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t old_addr,
#ifdef H5_HAVE_PARALLEL
/* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
+ if(IS_H5FD_MPI(f)) {
H5AC_info_t **new_dinfo;
#ifdef H5AC_DEBUG
H5AC_subid_t type_id;
@@ -1351,7 +1347,7 @@ H5AC_rename(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t old_addr,
#ifdef H5_HAVE_PARALLEL
/* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
+ if(IS_H5FD_MPI(f)) {
H5AC_info_t **old_dinfo;
#ifdef H5AC_DEBUG
H5AC_subid_t type_id;
@@ -1463,7 +1459,7 @@ H5AC_protect(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr,
#ifdef H5_HAVE_PARALLEL
/* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
+ if(IS_H5FD_MPI(f)) {
H5AC_info_t **dinfo;
/* Get pointer to new 'held' information */
@@ -1685,7 +1681,7 @@ H5AC_unprotect(H5F_t *f, hid_t dxpl_id, const H5AC_class_t *type, haddr_t addr,
if(!deleted) {
#ifdef H5_HAVE_PARALLEL
/* If MPIO, MPIPOSIX, or FPHDF5 is used, do special parallel I/O actions */
- if(IS_H5FD_MPIO(f) || IS_H5FD_MPIPOSIX(f) || IS_H5FD_FPHDF5(f)) {
+ if(IS_H5FD_MPI(f)) {
H5AC_info_t **dinfo;
#ifdef H5AC_DEBUG
H5AC_subid_t type_id;
diff --git a/src/H5D.c b/src/H5D.c
index 9e968cc..6121b43 100644
--- a/src/H5D.c
+++ b/src/H5D.c
@@ -21,7 +21,6 @@
#include "H5private.h" /* Generic Functions */
#include "H5Dpkg.h" /* Datasets */
#include "H5Eprivate.h" /* Error handling */
-#include "H5FDprivate.h" /* File drivers */
#include "H5FLprivate.h" /* Free Lists */
#include "H5FOprivate.h" /* File objects */
#include "H5HLprivate.h" /* Local heaps */
@@ -32,15 +31,6 @@
/*#define H5D_DEBUG*/
-/*
- * The MPIO, MPIPOSIX, & FPHDF5 drivers are needed because there are
- * kludges in this file and places where we check for things that aren't
- * handled by these drivers.
- */
-#include "H5FDfphdf5.h"
-#include "H5FDmpio.h"
-#include "H5FDmpiposix.h"
-
/* Interface initialization */
static int interface_initialize_g = 0;
#define INTERFACE_INIT H5D_init_interface
@@ -177,7 +167,9 @@ H5D_init_interface(void)
hid_t def_vfl_id = H5D_XFER_VFL_ID_DEF;
void *def_vfl_info = H5D_XFER_VFL_INFO_DEF;
size_t def_hyp_vec_size = H5D_XFER_HYPER_VECTOR_SIZE_DEF;
+#ifdef H5_HAVE_PARALLEL
H5FD_mpio_xfer_t def_io_xfer_mode = H5D_XFER_IO_XFER_MODE_DEF;
+#endif /* H5_HAVE_PARALLEL */
H5Z_EDC_t enable_edc = H5D_XFER_EDC_DEF;
H5Z_cb_t filter_cb = H5D_XFER_FILTER_CB_DEF;
@@ -282,9 +274,11 @@ H5D_init_interface(void)
if(H5P_register(xfer_pclass,H5D_XFER_HYPER_VECTOR_SIZE_NAME,H5D_XFER_HYPER_VECTOR_SIZE_SIZE,&def_hyp_vec_size,NULL,NULL,NULL,NULL,NULL,NULL,NULL)<0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+#ifdef H5_HAVE_PARALLEL
/* Register the I/O transfer mode property */
if(H5P_register(xfer_pclass,H5D_XFER_IO_XFER_MODE_NAME,H5D_XFER_IO_XFER_MODE_SIZE,&def_io_xfer_mode,NULL,NULL,NULL,NULL,NULL,NULL,NULL)<0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+#endif /* H5_HAVE_PARALLEL */
/* Register the EDC property */
if(H5P_register(xfer_pclass,H5D_XFER_EDC_NAME,H5D_XFER_EDC_SIZE,&enable_edc,NULL,NULL,NULL,NULL,NULL,NULL,NULL)<0)
@@ -2030,7 +2024,7 @@ H5D_create(H5G_entry_t *loc, const char *name, hid_t type_id, const H5S_t *space
/* Check if the dataspace has an extent set (or is NULL) */
if( !(H5S_has_extent(space)) )
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "dataspace extent has not been set")
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "dataspace extent has not been set.")
/* Initialize the dataset object */
if(NULL == (new_dset = H5D_new(dcpl_id,TRUE,has_vl_type)))
@@ -2188,7 +2182,7 @@ H5D_create(H5G_entry_t *loc, const char *name, hid_t type_id, const H5S_t *space
assert((unsigned)(new_dset->layout.u.chunk.ndims) <= NELMTS(new_dset->layout.u.chunk.dim));
new_dset->layout.u.chunk.addr = HADDR_UNDEF; /* Initialize to no address */
-
+
/*
* Chunked storage allows any type of data space extension, so we
* don't even bother checking.
diff --git a/src/H5Dcontig.c b/src/H5Dcontig.c
index 407873a..7fa3ebd 100644
--- a/src/H5Dcontig.c
+++ b/src/H5Dcontig.c
@@ -40,11 +40,6 @@
#include "H5Sprivate.h" /* Dataspace functions */
#include "H5Vprivate.h" /* Vector and array functions */
-/* MPIO, MPIPOSIX, & FPHDF5 drivers needed for special checks */
-#include "H5FDfphdf5.h"
-#include "H5FDmpio.h"
-#include "H5FDmpiposix.h"
-
/* Private prototypes */
static herr_t H5D_contig_write(H5F_t *f, hid_t dxpl_id, H5D_t *dset,
hsize_t offset, size_t size, const void *buf);
diff --git a/src/H5Distore.c b/src/H5Distore.c
index a1c19c6..136ed69 100644
--- a/src/H5Distore.c
+++ b/src/H5Distore.c
@@ -52,6 +52,7 @@
#include "H5Dpkg.h" /* Datasets */
#include "H5Eprivate.h" /* Error handling */
#include "H5Fprivate.h" /* Files */
+#include "H5FDprivate.h" /* File drivers */
#include "H5FLprivate.h" /* Free Lists */
#include "H5Iprivate.h" /* IDs */
#include "H5MFprivate.h" /* File space management */
@@ -61,11 +62,6 @@
#include "H5Sprivate.h" /* Dataspaces */
#include "H5Vprivate.h" /* Vector and array functions */
-/* MPIO, MPIPOSIX, & FPHDF5 drivers needed for special checks */
-#include "H5FDfphdf5.h"
-#include "H5FDmpio.h"
-#include "H5FDmpiposix.h"
-
/*
* Feature: If this constant is defined then every cache preemption and load
* causes a character to be printed on the standard error stream:
@@ -2245,9 +2241,6 @@ H5D_istore_chunk_alloc(size_t size, const H5O_pline_t *pline)
ret_value=H5MM_malloc(size);
else
ret_value=H5FL_BLK_MALLOC(chunk,size);
-#ifdef H5_USING_PURIFY
-HDmemset(ret_value,0,size);
-#endif /* H5_USING_PURIFY */
FUNC_LEAVE_NOAPI(ret_value);
} /* H5D_istore_chunk_alloc() */
diff --git a/src/H5Dprivate.h b/src/H5Dprivate.h
index c8c0bca..163c1a6 100644
--- a/src/H5Dprivate.h
+++ b/src/H5Dprivate.h
@@ -22,9 +22,7 @@
#include "H5Dpublic.h"
/* Private headers needed by this file */
-#include "H5FDfphdf5.h"
-#include "H5FDmpio.h"
-#include "H5FDmpiposix.h"
+#include "H5FDprivate.h" /* File drivers */
#include "H5Oprivate.h" /* Object headers */
/*
diff --git a/src/H5F.c b/src/H5F.c
index e8c98e9..420c2db 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -18,20 +18,6 @@
/* (Put before include files to avoid problems with inline functions) */
#define PABLO_MASK H5F_mask
-/* Predefined file drivers */
-#include "H5FDcore.h" /*temporary in-memory files */
-#include "H5FDfamily.h" /*family of files */
-#include "H5FDfphdf5.h" /*FPHDF5 */
-#include "H5FDgass.h" /*GASS I/O */
-#include "H5FDlog.h" /* sec2 driver with logging, for debugging */
-#include "H5FDmpio.h" /*MPI-2 I/O */
-#include "H5FDmpiposix.h" /*MPI-2 & posix I/O */
-#include "H5FDmulti.h" /*multiple files partitioned by mem usage */
-#include "H5FDsec2.h" /*Posix unbuffered I/O */
-#include "H5FDsrb.h" /*SRB I/O */
-#include "H5FDstdio.h" /* Standard C buffered I/O */
-#include "H5FDstream.h" /*in-memory files streamed via sockets */
-
/* Packages needed by this file... */
#include "H5private.h" /* Generic Functions */
#include "H5Aprivate.h" /* Attributes */
@@ -41,13 +27,24 @@
#include "H5Fpkg.h" /* File access */
#include "H5FDprivate.h" /* File drivers */
#include "H5FLprivate.h" /* Free lists */
-#include "H5FPprivate.h" /* Flexible parallel */
#include "H5Iprivate.h" /* IDs */
#include "H5Gprivate.h" /* Groups */
#include "H5MMprivate.h" /* Memory management */
#include "H5Pprivate.h" /* Property lists */
#include "H5Tprivate.h" /* Datatypes */
+/* Predefined file drivers */
+#include "H5FDcore.h" /*temporary in-memory files */
+#include "H5FDfamily.h" /*family of files */
+#include "H5FDgass.h" /*GASS I/O */
+#include "H5FDlog.h" /* sec2 driver with logging, for debugging */
+#include "H5FDmpi.h" /* MPI-based file drivers */
+#include "H5FDmulti.h" /*multiple files partitioned by mem usage */
+#include "H5FDsec2.h" /*Posix unbuffered I/O */
+#include "H5FDsrb.h" /*SRB I/O */
+#include "H5FDstdio.h" /* Standard C buffered I/O */
+#include "H5FDstream.h" /*in-memory files streamed via sockets */
+
/* Interface initialization */
static int interface_initialize_g = 0;
#define INTERFACE_INIT H5F_init_interface
@@ -159,7 +156,6 @@ H5F_init_interface(void)
{
size_t nprops; /* Number of properties */
herr_t ret_value = SUCCEED;
- herr_t status;
/* File creation property class variables. In sequence, they are
* - File create property list class to modify
@@ -292,35 +288,6 @@ H5F_init_interface(void)
HGOTO_ERROR(H5E_PLIST, H5E_CANTREGISTER, FAIL, "can't insert property into class")
} /* end if */
- /* Register predefined file drivers */
- H5E_BEGIN_TRY {
- if ((status=H5FD_SEC2)<0) goto end_registration; /*lint !e801 Tell lint that our use of goto is OK here */
- if ((status=H5FD_STDIO)<0) goto end_registration; /*lint !e801 Tell lint that our use of goto is OK here */
- if ((status=H5FD_FAMILY)<0) goto end_registration; /*lint !e801 Tell lint that our use of goto is OK here */
-#ifdef H5_HAVE_GASS
- if ((status=H5FD_GASS)<0) goto end_registration; /*lint !e801 Tell lint that our use of goto is OK here */
-#endif
-#ifdef H5_HAVE_SRB
- if ((status=H5FD_SRB)<0) goto end_registration; /*lint !e801 Tell lint that our use of goto is OK here */
-#endif
- if ((status=H5FD_CORE)<0) goto end_registration; /*lint !e801 Tell lint that our use of goto is OK here */
- if ((status=H5FD_MULTI)<0) goto end_registration; /*lint !e801 Tell lint that our use of goto is OK here */
-#ifdef H5_HAVE_PARALLEL
- if ((status=H5FD_MPIO)<0) goto end_registration; /*lint !e801 Tell lint that our use of goto is OK here */
- if ((status=H5FD_MPIPOSIX)<0) goto end_registration; /*lint !e801 Tell lint that our use of goto is OK here */
-#ifdef H5_HAVE_FPHDF5
- if ((status=H5FD_FPHDF5)<0) goto end_registration; /*lint !e801 Tell lint that our use of goto is OK here */
-#endif /* H5_HAVE_FPHDF5 */
-#endif /* H5_HAVE_PARALLEL */
-#ifdef H5_HAVE_STREAM
- if ((status=H5FD_STREAM)<0) goto end_registration; /*lint !e801 Tell lint that our use of goto is OK here */
-#endif
-end_registration: ;
- } H5E_END_TRY;
-
- if (status<0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "file driver registration failed")
-
/* ========== File Access Property Class Initialization ============*/
assert(H5P_CLS_FILE_ACCESS_g!=-1);
@@ -1928,28 +1895,6 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id, hid_t d
* We've just opened a fresh new file (or truncated one). We need
* to create & write the superblock.
*/
-#ifdef H5_HAVE_FPHDF5
- /*
- * If this is an FPHDF5 driver, then we want to set a property
- * which says so and that only the captain process will be able
- * to allocate things for the duration. That is, only the captain
- * process should allocate the superblock of a file.
- */
- if (H5FD_is_fphdf5_driver(lf)) {
- unsigned value = 1;
- H5P_genplist_t *d_plist;
-
- /* Get the data xfer property list */
- if ((d_plist = H5I_object(dxpl_id)) == NULL)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, NULL, "not a dataset transfer list");
-
- /* Set that only captain should allocate */
- if (H5P_insert(d_plist, H5FD_FPHDF5_CAPTN_ALLOC_ONLY,
- H5FD_FPHDF5_CAPTN_ALLOC_SIZE, &value,
- NULL, NULL, NULL, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, NULL, "can't insert FPHDF5 property");
- }
-#endif /* H5_HAVE_FPHDF5 */
/*
* The superblock starts immediately after the user-defined header,
@@ -1969,23 +1914,6 @@ H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id, hid_t d
if (H5G_mkroot(file, dxpl_id, NULL)<0)
HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, NULL, "unable to create/open root group");
-#ifdef H5_HAVE_FPHDF5
- /*
- * If this is an FPHDF5 driver, then remove the property which
- * says so since we're allocating the superblock.
- */
- if (H5FD_is_fphdf5_driver(lf)) {
- H5P_genplist_t *d_plist;
-
- /* Get the data xfer property list */
- if ((d_plist = H5I_object(dxpl_id)) == NULL)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, NULL, "not a dataset transfer list");
-
- if (H5P_remove(dxpl_id, d_plist, H5FD_FPHDF5_CAPTN_ALLOC_ONLY) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTDELETE, NULL,
- "can't remove FPHDF5 property");
- }
-#endif /* H5_HAVE_FPHDF5 */
} else if (1==shared->nrefs) {
/* Read the superblock if it hasn't been read before. */
if (HADDR_UNDEF==(shared->super_addr=H5F_locate_signature(lf,dxpl_id)))
@@ -2630,24 +2558,6 @@ H5F_flush(H5F_t *f, hid_t dxpl_id, H5F_scope_t scope, unsigned flags)
* file.
*/
if (flags & H5F_FLUSH_INVALIDATE) {
-#ifdef H5_HAVE_FPHDF5
- /*
- * If this is not the SAP, then we want to send a "free"
- * command to the SAP to free up the EOMA and EOSDA
- * information. This might also update the EOA information on
- * the clients...
- */
- if (H5FD_is_fphdf5_driver(f->shared->lf) && !H5FD_fphdf5_is_sap(f->shared->lf)) {
- unsigned req_id;
- H5FP_status_t status;
-
- /* Send the request to the SAP */
- if (H5FP_request_free(f->shared->lf, &req_id, &status) != SUCCEED)
- /* FIXME: Should we check the "status" variable here? */
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTFREE, FAIL,
- "server couldn't free from file");
- } else {
-#endif /* H5_HAVE_FPHDF5 */
if (f->shared->lf->feature_flags & H5FD_FEAT_AGGREGATE_METADATA) {
/* Return the unused portion of the metadata block to a free list */
@@ -2677,9 +2587,6 @@ H5F_flush(H5F_t *f, hid_t dxpl_id, H5F_scope_t scope, unsigned flags)
f->shared->lf->cur_sdata_block_size=0;
} /* end if */
-#ifdef H5_HAVE_FPHDF5
- }
-#endif /* H5_HAVE_FPHDF5 */
} /* end if */
/* flush (and invalidate) the entire meta data cache */
@@ -3086,36 +2993,12 @@ H5F_close(H5F_t *f)
/* Only try to flush the file if it was opened with write access */
if(f->intent&H5F_ACC_RDWR) {
-#ifdef H5_HAVE_FPHDF5
- /*
- * We only want the captain to perform the flush of the metadata
- * to the file.
- */
- if (!H5FD_is_fphdf5_driver(f->shared->lf) ||
- H5FD_fphdf5_is_captain(f->shared->lf)) {
-#endif /* H5_HAVE_FPHDF5 */
/* Flush and destroy all caches */
if (H5F_flush(f, H5AC_dxpl_id, H5F_SCOPE_LOCAL,
H5F_FLUSH_INVALIDATE | H5F_FLUSH_CLOSING) < 0)
HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush cache");
-#ifdef H5_HAVE_FPHDF5
- } else {
- /*
- * If this isn't the captain process, flush but only clear
- * the flags.
- */
- if (H5F_flush(f, H5AC_dxpl_id, H5F_SCOPE_LOCAL,
- H5F_FLUSH_INVALIDATE | H5F_FLUSH_CLOSING | H5F_FLUSH_CLEAR_ONLY) < 0)
- HGOTO_ERROR(H5E_CACHE, H5E_CANTFLUSH, FAIL, "unable to flush cache");
-
- }
-
- /* Let's all meet up now... */
- if (H5FD_is_fphdf5_driver(f->shared->lf))
- MPI_Barrier(H5FP_SAP_BARRIER_COMM);
-#endif /* H5_HAVE_FPHDF5 */
} /* end if */
} /* end if */
@@ -4585,30 +4468,15 @@ done:
int
H5F_mpi_get_rank(const H5F_t *f)
{
- int ret_value=FAIL;
+ int ret_value;
FUNC_ENTER_NOAPI(H5F_mpi_get_rank, FAIL)
assert(f && f->shared);
/* Dispatch to driver */
- if(IS_H5FD_MPIO(f)) {
- /* Get the MPI rank & size */
- if ((ret_value=H5FD_mpio_mpi_rank(f->shared->lf))<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
- } /* end if */
- else if(IS_H5FD_MPIPOSIX(f)) {
- /* Get the MPI rank & size */
- if ((ret_value=H5FD_mpiposix_mpi_rank(f->shared->lf))<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
- } /* end else */
-#ifdef H5_HAVE_FPHDF5
- else if (IS_H5FD_FPHDF5(f)) {
- /* Get the MPI rank & size */
- if ((ret_value = H5FD_fphdf5_mpi_rank(f->shared->lf)) < 0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI rank");
- } /* end if */
-#endif /* H5_HAVE_FPHDF5 */
+ if ((ret_value=H5FD_mpi_get_rank(f->shared->lf))<0)
+ HGOTO_ERROR(H5E_VFL, H5E_CANTGET, FAIL, "driver get_rank request failed")
done:
FUNC_LEAVE_NOAPI(ret_value)
@@ -4634,30 +4502,15 @@ done:
MPI_Comm
H5F_mpi_get_comm(const H5F_t *f)
{
- MPI_Comm ret_value=MPI_COMM_NULL;
+ MPI_Comm ret_value;
FUNC_ENTER_NOAPI(H5F_mpi_get_comm, MPI_COMM_NULL)
assert(f && f->shared);
/* Dispatch to driver */
- if(IS_H5FD_MPIO(f)) {
- /* Get the MPI communicator */
- if (MPI_COMM_NULL == (ret_value=H5FD_mpio_communicator(f->shared->lf)))
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
- } /* end if */
- else if(IS_H5FD_MPIPOSIX(f)) {
- /* Get the MPI communicator */
- if (MPI_COMM_NULL == (ret_value=H5FD_mpiposix_communicator(f->shared->lf)))
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
- } /* end else */
-#ifdef H5_HAVE_FPHDF5
- else if (IS_H5FD_FPHDF5(f)) {
- /* Get the FPHDF5 barrier communicator */
- if (MPI_COMM_NULL == (ret_value = H5FD_fphdf5_barrier_communicator(f->shared->lf)))
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator");
- } /* end if */
-#endif /* H5_HAVE_FPHDF5 */
+ if ((ret_value=H5FD_mpi_get_comm(f->shared->lf))==MPI_COMM_NULL)
+ HGOTO_ERROR(H5E_VFL, H5E_CANTGET, MPI_COMM_NULL, "driver get_comm request failed")
done:
FUNC_LEAVE_NOAPI(ret_value)
diff --git a/src/H5FD.c b/src/H5FD.c
index fe7350a..ebf5af2 100644
--- a/src/H5FD.c
+++ b/src/H5FD.c
@@ -30,15 +30,25 @@
#define PABLO_MASK H5FD_mask
/* Packages needed by this file */
-#include "H5private.h" /*library functions */
-#include "H5Dprivate.h" /*datasets */
-#include "H5Eprivate.h" /*error handling */
-#include "H5Fpkg.h" /*files */
-#include "H5FDprivate.h" /*virtual file driver */
-#include "H5FLprivate.h" /*Free Lists */
-#include "H5Iprivate.h" /*interface abstraction layer */
-#include "H5MMprivate.h" /*memory management */
-#include "H5Pprivate.h" /*property lists */
+#include "H5private.h" /* Generic Functions */
+#include "H5Dprivate.h" /* Datasets */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Fpkg.h" /* File access */
+#include "H5FDprivate.h" /* File drivers */
+#include "H5FDcore.h" /* Files stored entirely in memory */
+#include "H5FDfamily.h" /* File families */
+#include "H5FDgass.h" /* Remote files using GASS I/O */
+#include "H5FDlog.h" /* sec2 driver with I/O logging (for debugging) */
+#include "H5FDmpi.h" /* MPI-based file drivers */
+#include "H5FDmulti.h" /* Usage-partitioned file family */
+#include "H5FDsec2.h" /* POSIX unbuffered file I/O */
+#include "H5FDsrb.h" /* Remote access using SRB */
+#include "H5FDstdio.h" /* Standard C buffered I/O */
+#include "H5FDstream.h" /* In-memory files streamed via sockets */
+#include "H5FLprivate.h" /* Free lists */
+#include "H5Iprivate.h" /* IDs */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5Pprivate.h" /* Property lists */
/* Interface initialization */
#define INTERFACE_INIT H5FD_init_interface
@@ -151,6 +161,29 @@ H5FD_term_interface(void)
if (interface_initialize_g) {
if ((n=H5I_nmembers(H5I_VFL))) {
H5I_clear_group(H5I_VFL, FALSE);
+
+ /* Reset the VFL drivers, if they've been closed */
+ if(H5I_nmembers(H5I_VFL)==0) {
+ H5FD_sec2_term();
+ H5FD_log_term();
+ H5FD_stdio_term();
+ H5FD_family_term();
+#ifdef H5_HAVE_GASS
+ H5FD_gass_term();
+#endif
+#ifdef H5_HAVE_SRB
+ H5FD_srb_term();
+#endif
+ H5FD_core_term();
+ H5FD_multi_term();
+#ifdef H5_HAVE_PARALLEL
+ H5FD_mpio_term();
+ H5FD_mpiposix_term();
+#endif /* H5_HAVE_PARALLEL */
+#ifdef H5_HAVE_STREAM
+ H5FD_stream_term();
+#endif
+ } /* end if */
} else {
H5I_destroy_group(H5I_VFL);
interface_initialize_g = 0;
@@ -208,6 +241,9 @@ H5FD_free_cls(H5FD_class_t *cls)
* Monday, July 26, 1999
*
* Modifications:
+ * Copied guts of function info H5FD_register
+ * Quincey Koziol
+ * Friday, January 30, 2004
*
*-------------------------------------------------------------------------
*/
@@ -215,7 +251,6 @@ hid_t
H5FDregister(const H5FD_class_t *cls)
{
hid_t ret_value;
- H5FD_class_t *saved=NULL;
H5FD_mem_t type;
FUNC_ENTER_API(H5FDregister, FAIL)
@@ -232,16 +267,69 @@ H5FDregister(const H5FD_class_t *cls)
HGOTO_ERROR(H5E_ARGS, H5E_UNINITIALIZED, FAIL, "`get_eof' method is not defined")
if (!cls->read || !cls->write)
HGOTO_ERROR(H5E_ARGS, H5E_UNINITIALIZED, FAIL, "`read' and/or `write' method is not defined")
- for (type=H5FD_MEM_DEFAULT; type<H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t,type)) {
- if (cls->fl_map[type]<H5FD_MEM_NOLIST ||
- cls->fl_map[type]>=H5FD_MEM_NTYPES)
+ for (type=H5FD_MEM_DEFAULT; type<H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t,type))
+ if (cls->fl_map[type]<H5FD_MEM_NOLIST || cls->fl_map[type]>=H5FD_MEM_NTYPES)
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid free-list mapping")
- }
+
+ /* Create the new class ID */
+ if ((ret_value=H5FD_register(cls, sizeof(H5FD_class_t)))<0)
+ HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to register file driver ID")
+
+done:
+ FUNC_LEAVE_API(ret_value)
+} /* end H5FDregister() */
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5FD_register
+ *
+ * Purpose: Registers a new file driver as a member of the virtual file
+ * driver class. Certain fields of the class struct are
+ * required and that is checked here so it doesn't have to be
+ * checked every time the field is accessed.
+ *
+ * Return: Success: A file driver ID which is good until the
+ * library is closed or the driver is
+ * unregistered.
+ *
+ * Failure: A negative value.
+ *
+ * Programmer: Robb Matzke
+ * Monday, July 26, 1999
+ *
+ * Modifications:
+ * Broke into public and internal routines & added 'size'
+ * parameter to internal routine, which allows us to create
+ * sub-classes of H5FD_class_t for internal support (see the
+ * MPI drivers, etc.)
+ * Quincey Koziol
+ * January 30, 2004
+ *
+ *-------------------------------------------------------------------------
+ */
+hid_t
+H5FD_register(const void *_cls, size_t size)
+{
+ hid_t ret_value;
+ const H5FD_class_t *cls=(const H5FD_class_t *)_cls;
+ H5FD_class_t *saved=NULL;
+ H5FD_mem_t type;
+
+ FUNC_ENTER_NOAPI(H5FD_register, FAIL)
+
+ /* Check arguments */
+ assert(cls);
+ assert(cls->open && cls->close);
+ assert(cls->get_eoa && cls->set_eoa);
+ assert(cls->get_eof);
+ assert(cls->read && cls->write);
+ for (type=H5FD_MEM_DEFAULT; type<H5FD_MEM_NTYPES; H5_INC_ENUM(H5FD_mem_t,type))
+ assert(cls->fl_map[type]>=H5FD_MEM_NOLIST && cls->fl_map[type]<H5FD_MEM_NTYPES);
/* Copy the class structure so the caller can reuse or free it */
- if (NULL==(saved=H5MM_malloc(sizeof(H5FD_class_t))))
+ if (NULL==(saved=H5MM_malloc(size)))
HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed for file driver class struct")
- *saved = *cls;
+ HDmemcpy(saved,cls,size);
/* Create the new class ID */
if ((ret_value=H5I_register(H5I_VFL, saved))<0)
@@ -252,8 +340,8 @@ done:
if(saved)
H5MM_xfree(saved);
- FUNC_LEAVE_API(ret_value)
-} /* end H5FDregister() */
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5FD_register() */
/*-------------------------------------------------------------------------
@@ -2336,6 +2424,9 @@ H5FD_free(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t si
HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "driver free request failed")
} else {
/* leak memory */
+#ifdef H5F_DEBUG
+HDfprintf(stderr, "%s: LEAKED MEMORY!!!!!!\n", FUNC);
+#endif /* H5F_DEBUG */
}
done:
@@ -3344,6 +3435,9 @@ HDmemset(file->meta_accum+file->accum_size,0,(file->accum_buf_size-file->accum_s
/* Note the new buffer size */
file->accum_buf_size=size;
+#ifdef H5_USING_PURIFY
+HDmemset(file->meta_accum+file->accum_size,0,(file->accum_buf_size-file->accum_size));
+#endif /* H5_USING_PURIFY */
} /* end if */
else {
/* Check if we should shrink the accumulator buffer */
@@ -3357,9 +3451,6 @@ HDmemset(file->meta_accum+file->accum_size,0,(file->accum_buf_size-file->accum_s
/* Note the new buffer size */
file->accum_buf_size=tmp_size;
-#ifdef H5_USING_PURIFY
-HDmemset(file->meta_accum+file->accum_size,0,(file->accum_buf_size-file->accum_size));
-#endif /* H5_USING_PURIFY */
} /* end if */
} /* end else */
diff --git a/src/H5FDcore.c b/src/H5FDcore.c
index 89cf392..370d868 100644
--- a/src/H5FDcore.c
+++ b/src/H5FDcore.c
@@ -20,14 +20,19 @@
* only the HDF5 public API. This driver is useful for fast
* access to small, temporary hdf5 files.
*/
-#include "H5private.h" /*library functions */
-#include "H5Eprivate.h" /*error handling */
-#include "H5Fprivate.h" /*files */
-#include "H5FDprivate.h" /*file driver */
-#include "H5FDcore.h" /* Core file driver */
-#include "H5Iprivate.h" /*object IDs */
-#include "H5MMprivate.h" /* Memory allocation */
-#include "H5Pprivate.h" /*property lists */
+
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5FD_core_mask
+
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Fprivate.h" /* File access */
+#include "H5FDprivate.h" /* File drivers */
+#include "H5FDcore.h" /* Core file driver */
+#include "H5Iprivate.h" /* IDs */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5Pprivate.h" /* Property lists */
#undef MAX
#define MAX(X,Y) ((X)>(Y)?(X):(Y))
@@ -134,11 +139,32 @@ static const H5FD_class_t H5FD_core_g = {
};
/* Interface initialization */
-#define PABLO_MASK H5FD_core_mask
-#define INTERFACE_INIT H5FD_core_init
+#define INTERFACE_INIT H5FD_core_init_interface
static int interface_initialize_g = 0;
+/*--------------------------------------------------------------------------
+NAME
+ H5FD_core_init_interface -- Initialize interface-specific information
+USAGE
+ herr_t H5FD_core_init_interface()
+
+RETURNS
+ Non-negative on success/Negative on failure
+DESCRIPTION
+ Initializes any interface-specific data or routines. (Just calls
+ H5FD_core_init currently).
+
+--------------------------------------------------------------------------*/
+static herr_t
+H5FD_core_init_interface(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_core_init_interface)
+
+ FUNC_LEAVE_NOAPI(H5FD_core_init())
+} /* H5FD_core_init_interface() */
+
+
/*-------------------------------------------------------------------------
* Function: H5FD_core_init
*
@@ -161,19 +187,45 @@ H5FD_core_init(void)
{
hid_t ret_value=H5FD_CORE_g; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_core_init, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_core_init, FAIL)
if (H5I_VFL!=H5Iget_type(H5FD_CORE_g))
- H5FD_CORE_g = H5FDregister(&H5FD_core_g);
+ H5FD_CORE_g = H5FD_register(&H5FD_core_g,sizeof(H5FD_class_t));
/* Set return value */
ret_value=H5FD_CORE_g;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
+/*---------------------------------------------------------------------------
+ * Function: H5FD_core_term
+ *
+ * Purpose: Shut down the VFD
+ *
+ * Return: <none>
+ *
+ * Programmer: Quincey Koziol
+ * Friday, Jan 30, 2004
+ *
+ * Modification:
+ *
+ *---------------------------------------------------------------------------
+ */
+void
+H5FD_core_term(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_core_term)
+
+ /* Reset VFL ID */
+ H5FD_CORE_g=0;
+
+ FUNC_LEAVE_NOAPI_VOID
+} /* end H5FD_core_term() */
+
+
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_core
*
@@ -204,12 +256,12 @@ H5Pset_fapl_core(hid_t fapl_id, size_t increment, hbool_t backing_store)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
- FUNC_ENTER_API(H5Pset_fapl_core, FAIL);
+ FUNC_ENTER_API(H5Pset_fapl_core, FAIL)
H5TRACE3("e","izb",fapl_id,increment,backing_store);
/* Check argument */
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
fa.increment = increment;
fa.backing_store = backing_store;
@@ -217,7 +269,7 @@ H5Pset_fapl_core(hid_t fapl_id, size_t increment, hbool_t backing_store)
ret_value= H5P_set_driver(plist, H5FD_CORE, &fa);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -251,16 +303,15 @@ H5Pget_fapl_core(hid_t fapl_id, size_t *increment/*out*/,
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Pget_fapl_core, FAIL);
+ FUNC_ENTER_API(H5Pget_fapl_core, FAIL)
H5TRACE3("e","ixx",fapl_id,increment,backing_store);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL,
- "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
if (H5FD_CORE!=H5P_get_driver(plist))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
if (NULL==(fa=H5P_get_driver_info(plist)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info")
if (increment)
*increment = fa->increment;
@@ -268,7 +319,7 @@ H5Pget_fapl_core(hid_t fapl_id, size_t *increment/*out*/,
*backing_store = fa->backing_store;
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -295,10 +346,10 @@ H5FD_core_fapl_get(H5FD_t *_file)
H5FD_core_fapl_t *fa = NULL;
void *ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_core_fapl_get, NULL);
+ FUNC_ENTER_NOAPI(H5FD_core_fapl_get, NULL)
if (NULL==(fa=H5MM_calloc(sizeof(H5FD_core_fapl_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
fa->increment = file->increment;
fa->backing_store = (file->fd>=0);
@@ -307,7 +358,7 @@ H5FD_core_fapl_get(H5FD_t *_file)
ret_value=fa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -340,29 +391,29 @@ H5FD_core_open(const char *name, unsigned UNUSED flags, hid_t fapl_id,
int fd=-1;
H5FD_t *ret_value;
- FUNC_ENTER_NOAPI(H5FD_core_open, NULL);
+ FUNC_ENTER_NOAPI(H5FD_core_open, NULL)
/* Check arguments */
if (!(H5F_ACC_CREAT & flags))
- HGOTO_ERROR(H5E_ARGS, H5E_UNSUPPORTED, NULL, "must create core files, not open them");
+ HGOTO_ERROR(H5E_ARGS, H5E_UNSUPPORTED, NULL, "must create core files, not open them")
if (0==maxaddr || HADDR_UNDEF==maxaddr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
if (ADDR_OVERFLOW(maxaddr))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "maxaddr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "maxaddr overflow")
if (H5P_DEFAULT!=fapl_id) {
if(NULL == (plist = H5I_object(fapl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
fa = H5P_get_driver_info(plist);
} /* end if */
/* Open backing store */
if (fa && fa->backing_store && name &&
- (fd=HDopen(name, O_CREAT|O_TRUNC|O_RDWR, 0666))<0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open backing store");
+ (fd=HDopen(name, (O_CREAT|O_TRUNC|O_RDWR), 0666))<0)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open backing store")
/* Create the new file struct */
if (NULL==(file=H5MM_calloc(sizeof(H5FD_core_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct")
file->fd = fd;
if (name && *name)
file->name = HDstrdup(name);
@@ -378,7 +429,7 @@ H5FD_core_open(const char *name, unsigned UNUSED flags, hid_t fapl_id,
ret_value=(H5FD_t *)file;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -406,7 +457,7 @@ H5FD_core_close(H5FD_t *_file)
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_core_close, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_core_close, FAIL)
/* Release resources */
if (file->fd>=0)
@@ -419,7 +470,7 @@ H5FD_core_close(H5FD_t *_file)
H5MM_xfree(file);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -450,25 +501,25 @@ H5FD_core_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
const H5FD_core_t *f2 = (const H5FD_core_t*)_f2;
int ret_value;
- FUNC_ENTER_NOAPI(H5FD_core_cmp, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_core_cmp, FAIL)
if (NULL==f1->name && NULL==f2->name) {
if (f1<f2)
- HGOTO_DONE(-1);
+ HGOTO_DONE(-1)
if (f1>f2)
- HGOTO_DONE(1);
- HGOTO_DONE(0);
+ HGOTO_DONE(1)
+ HGOTO_DONE(0)
}
if (NULL==f1->name)
- HGOTO_DONE(-1);
+ HGOTO_DONE(-1)
if (NULL==f2->name)
- HGOTO_DONE(1);
+ HGOTO_DONE(1)
ret_value = HDstrcmp(f1->name, f2->name);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -497,13 +548,13 @@ H5FD_core_get_eoa(H5FD_t *_file)
H5FD_core_t *file = (H5FD_core_t*)_file;
- FUNC_ENTER_NOAPI(H5FD_core_get_eoa, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_core_get_eoa, HADDR_UNDEF)
/* Set return value */
ret_value=file->eoa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -531,15 +582,15 @@ H5FD_core_set_eoa(H5FD_t *_file, haddr_t addr)
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_core_set_eoa, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_core_set_eoa, FAIL)
if (ADDR_OVERFLOW(addr))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "address overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "address overflow")
file->eoa = addr;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -570,13 +621,13 @@ H5FD_core_get_eof(H5FD_t *_file)
H5FD_core_t *file = (H5FD_core_t*)_file;
- FUNC_ENTER_NOAPI(H5FD_core_get_eof, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_core_get_eof, HADDR_UNDEF)
/* Set return value */
ret_value=MAX(file->eof, file->eoa);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -594,21 +645,22 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_core_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
{
H5FD_core_t *file = (H5FD_core_t *)_file;
herr_t ret_value = SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_core_get_handle, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_core_get_handle, FAIL)
if(!file_handle)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid")
*file_handle = &(file->mem);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -631,6 +683,7 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_core_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr_t addr,
size_t size, void *buf/*out*/)
@@ -638,18 +691,18 @@ H5FD_core_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, hadd
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_core_read, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_core_read, FAIL)
assert(file && file->pub.cls);
assert(buf);
/* Check for overflow conditions */
if (HADDR_UNDEF == addr)
- HGOTO_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed");
+ HGOTO_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed")
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed");
+ HGOTO_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed")
if (addr + size > file->eoa)
- HGOTO_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed");
+ HGOTO_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed")
/* Read the part which is before the EOF marker */
if (addr < file->eof) {
@@ -675,7 +728,7 @@ H5FD_core_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, hadd
HDmemset(buf, 0, size);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -697,6 +750,7 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_core_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr_t addr,
size_t size, const void *buf)
@@ -704,16 +758,16 @@ H5FD_core_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, had
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_core_write, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_core_write, FAIL)
assert(file && file->pub.cls);
assert(buf);
/* Check for overflow conditions */
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed");
+ HGOTO_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed")
if (addr+size>file->eoa)
- HGOTO_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed");
+ HGOTO_ERROR(H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed")
/*
* Allocate more memory if necessary, careful of overflow. Also, if the
@@ -734,7 +788,7 @@ H5FD_core_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, had
else
x = H5MM_realloc(file->mem, new_eof);
if (!x)
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to allocate memory block");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to allocate memory block")
file->mem = x;
file->eof = new_eof;
}
@@ -744,7 +798,7 @@ H5FD_core_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, had
file->dirty = TRUE;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -765,13 +819,14 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_core_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing)
{
H5FD_core_t *file = (H5FD_core_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_core_flush, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_core_flush, FAIL)
/* Write to backing store */
if (file->dirty && file->fd>=0) {
@@ -779,7 +834,7 @@ H5FD_core_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing)
unsigned char *ptr = file->mem;
if (0!=HDlseek(file->fd, (off_t)0, SEEK_SET))
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "error seeking in backing store");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "error seeking in backing store")
while (size) {
ssize_t n;
@@ -789,7 +844,7 @@ H5FD_core_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing)
if (n<0 && EINTR==errno)
continue;
if (n<0)
- HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "error writing backing store");
+ HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "error writing backing store")
ptr += (size_t)n;
size -= (size_t)n;
}
@@ -797,6 +852,5 @@ H5FD_core_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing)
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
-
diff --git a/src/H5FDcore.h b/src/H5FDcore.h
index 8df1d7e..0960425 100644
--- a/src/H5FDcore.h
+++ b/src/H5FDcore.h
@@ -29,6 +29,7 @@
extern "C" {
#endif
H5_DLL hid_t H5FD_core_init(void);
+H5_DLL void H5FD_core_term(void);
H5_DLL herr_t H5Pset_fapl_core(hid_t fapl_id, size_t increment,
hbool_t backing_store);
H5_DLL herr_t H5Pget_fapl_core(hid_t fapl_id, size_t *increment/*out*/,
diff --git a/src/H5FDfamily.c b/src/H5FDfamily.c
index 0731f5d..d6d2f3f 100644
--- a/src/H5FDfamily.c
+++ b/src/H5FDfamily.c
@@ -32,15 +32,19 @@
* implement holes, like nfs).
*
*/
-#include "H5private.h" /*library functions */
-#include "H5Eprivate.h" /*error handling */
-#include "H5Fprivate.h" /*files */
-#include "H5FDprivate.h" /*file driver */
-#include "H5FDfamily.h" /* Family file driver */
-#include "H5Iprivate.h" /*object IDs */
-#include "H5MMprivate.h" /* Memory allocation */
-#include "H5Pprivate.h" /*property lists */
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5FD_family_mask
+
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Fprivate.h" /* File access */
+#include "H5FDprivate.h" /* File drivers */
+#include "H5FDfamily.h" /* Family file driver */
+#include "H5Iprivate.h" /* IDs */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5Pprivate.h" /* Property lists */
#undef MAX
#define MAX(X,Y) ((X)>(Y)?(X):(Y))
@@ -55,8 +59,8 @@ typedef struct H5FD_family_t {
H5FD_t pub; /*public stuff, must be first */
hid_t memb_fapl_id; /*file access property list for members */
hsize_t memb_size; /*maximum size of each member file */
- int nmembs; /*number of family members */
- int amembs; /*number of member slots allocated */
+ unsigned nmembs; /*number of family members */
+ unsigned amembs; /*number of member slots allocated */
H5FD_t **memb; /*dynamic array of member pointers */
haddr_t eoa; /*end of allocated addresses */
char *name; /*name generator printf format */
@@ -129,11 +133,32 @@ static const H5FD_class_t H5FD_family_g = {
};
/* Interface initialization */
-#define PABLO_MASK H5FD_family_mask
-#define INTERFACE_INIT H5FD_family_init
+#define INTERFACE_INIT H5FD_family_init_interface
static int interface_initialize_g = 0;
+/*--------------------------------------------------------------------------
+NAME
+ H5FD_family_init_interface -- Initialize interface-specific information
+USAGE
+ herr_t H5FD_family_init_interface()
+
+RETURNS
+ Non-negative on success/Negative on failure
+DESCRIPTION
+ Initializes any interface-specific data or routines. (Just calls
+ H5FD_family_init currently).
+
+--------------------------------------------------------------------------*/
+static herr_t
+H5FD_family_init_interface(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_family_init_interface)
+
+ FUNC_LEAVE_NOAPI(H5FD_family_init())
+} /* H5FD_family_init_interface() */
+
+
/*-------------------------------------------------------------------------
* Function: H5FD_family_init
*
@@ -156,19 +181,45 @@ H5FD_family_init(void)
{
hid_t ret_value=H5FD_FAMILY_g; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_init, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_family_init, FAIL)
if (H5I_VFL!=H5Iget_type(H5FD_FAMILY_g))
- H5FD_FAMILY_g = H5FDregister(&H5FD_family_g);
+ H5FD_FAMILY_g = H5FD_register(&H5FD_family_g,sizeof(H5FD_class_t));
/* Set return value */
ret_value=H5FD_FAMILY_g;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
+/*---------------------------------------------------------------------------
+ * Function: H5FD_family_term
+ *
+ * Purpose: Shut down the VFD
+ *
+ * Return: <none>
+ *
+ * Programmer: Quincey Koziol
+ * Friday, Jan 30, 2004
+ *
+ * Modification:
+ *
+ *---------------------------------------------------------------------------
+ */
+void
+H5FD_family_term(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_family_term)
+
+ /* Reset VFL ID */
+ H5FD_FAMILY_g=0;
+
+ FUNC_LEAVE_NOAPI_VOID
+} /* end H5FD_family_term() */
+
+
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_family
*
@@ -201,17 +252,17 @@ H5Pset_fapl_family(hid_t fapl_id, hsize_t memb_size, hid_t memb_fapl_id)
H5FD_family_fapl_t fa;
H5P_genplist_t *plist; /* Property list pointer */
- FUNC_ENTER_API(H5Pset_fapl_family, FAIL);
+ FUNC_ENTER_API(H5Pset_fapl_family, FAIL)
H5TRACE3("e","ihi",fapl_id,memb_size,memb_fapl_id);
/* Check arguments */
if(TRUE != H5P_isa_class(fapl_id, H5P_FILE_ACCESS))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
if(H5P_DEFAULT == memb_fapl_id)
memb_fapl_id = H5P_FILE_ACCESS_DEFAULT;
else
if(TRUE != H5P_isa_class(memb_fapl_id, H5P_FILE_ACCESS))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access list")
/*
* Initialize driver specific information. No need to copy it into the FA
@@ -221,11 +272,11 @@ H5Pset_fapl_family(hid_t fapl_id, hsize_t memb_size, hid_t memb_fapl_id)
fa.memb_fapl_id = memb_fapl_id;
if(NULL == (plist = H5I_object(fapl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
ret_value= H5P_set_driver(plist, H5FD_FAMILY, &fa);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -259,25 +310,25 @@ H5Pget_fapl_family(hid_t fapl_id, hsize_t *memb_size/*out*/,
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Pget_fapl_family, FAIL);
+ FUNC_ENTER_API(H5Pget_fapl_family, FAIL)
H5TRACE3("e","ixx",fapl_id,memb_size,memb_fapl_id);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access list")
if (H5FD_FAMILY!=H5P_get_driver(plist))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
if (NULL==(fa=H5P_get_driver_info(plist)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info")
if (memb_size)
*memb_size = fa->memb_size;
if (memb_fapl_id) {
if(NULL == (plist = H5I_object(fa->memb_fapl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access list")
*memb_fapl_id = H5P_copy_plist(plist);
} /* end if */
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -306,14 +357,14 @@ H5FD_family_fapl_get(H5FD_t *_file)
H5P_genplist_t *plist; /* Property list pointer */
void *ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_fapl_get, NULL);
+ FUNC_ENTER_NOAPI(H5FD_family_fapl_get, NULL)
if (NULL==(fa=H5MM_calloc(sizeof(H5FD_family_fapl_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
fa->memb_size = file->memb_size;
if(NULL == (plist = H5I_object(file->memb_fapl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
fa->memb_fapl_id = H5P_copy_plist(plist);
/* Set return value */
@@ -324,7 +375,7 @@ done:
if(fa!=NULL)
H5MM_xfree(fa);
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -352,20 +403,22 @@ H5FD_family_fapl_copy(const void *_old_fa)
H5P_genplist_t *plist; /* Property list pointer */
void *ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_fapl_copy, NULL);
+ FUNC_ENTER_NOAPI(H5FD_family_fapl_copy, NULL)
if (NULL==(new_fa=H5MM_malloc(sizeof(H5FD_family_fapl_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
/* Copy the fields of the structure */
memcpy(new_fa, old_fa, sizeof(H5FD_family_fapl_t));
/* Deep copy the property list objects in the structure */
- if(old_fa->memb_fapl_id==H5P_FILE_ACCESS_DEFAULT)
- H5I_inc_ref(new_fa->memb_fapl_id);
+ if(old_fa->memb_fapl_id==H5P_FILE_ACCESS_DEFAULT) {
+ if(H5I_inc_ref(new_fa->memb_fapl_id)<0)
+ HGOTO_ERROR(H5E_VFL, H5E_CANTINC, NULL, "unable to increment ref count on VFL driver")
+ } /* end if */
else {
if(NULL == (plist = H5I_object(old_fa->memb_fapl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
new_fa->memb_fapl_id = H5P_copy_plist(plist);
} /* end else */
@@ -377,7 +430,7 @@ done:
if(new_fa!=NULL)
H5MM_xfree(new_fa);
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -403,13 +456,14 @@ H5FD_family_fapl_free(void *_fa)
H5FD_family_fapl_t *fa = (H5FD_family_fapl_t*)_fa;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_fapl_free, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_family_fapl_free, FAIL)
- H5I_dec_ref(fa->memb_fapl_id);
+ if(H5I_dec_ref(fa->memb_fapl_id)<0)
+ HGOTO_ERROR(H5E_VFL, H5E_CANTDEC, FAIL, "can't close driver ID")
H5MM_xfree(fa);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -437,18 +491,20 @@ H5FD_family_dxpl_copy(const void *_old_dx)
H5P_genplist_t *plist; /* Property list pointer */
void *ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_dxpl_copy, NULL);
+ FUNC_ENTER_NOAPI(H5FD_family_dxpl_copy, NULL)
if (NULL==(new_dx=H5MM_malloc(sizeof(H5FD_family_dxpl_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
memcpy(new_dx, old_dx, sizeof(H5FD_family_dxpl_t));
- if(old_dx->memb_dxpl_id==H5P_DATASET_XFER_DEFAULT)
- H5I_inc_ref(new_dx->memb_dxpl_id);
+ if(old_dx->memb_dxpl_id==H5P_DATASET_XFER_DEFAULT) {
+ if(H5I_inc_ref(new_dx->memb_dxpl_id)<0)
+ HGOTO_ERROR(H5E_VFL, H5E_CANTINC, NULL, "unable to increment ref count on VFL driver")
+ } /* end if */
else {
if(NULL == (plist = H5I_object(old_dx->memb_dxpl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
new_dx->memb_dxpl_id = H5P_copy_plist(plist);
} /* end else */
@@ -460,7 +516,7 @@ done:
if(new_dx!=NULL)
H5MM_xfree(new_dx);
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -486,13 +542,14 @@ H5FD_family_dxpl_free(void *_dx)
H5FD_family_dxpl_t *dx = (H5FD_family_dxpl_t*)_dx;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_dxpl_free, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_family_dxpl_free, FAIL)
- H5I_dec_ref(dx->memb_dxpl_id);
+ if(H5I_dec_ref(dx->memb_dxpl_id)<0)
+ HGOTO_ERROR(H5E_VFL, H5E_CANTDEC, FAIL, "can't close driver ID")
H5MM_xfree(dx);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -525,34 +582,36 @@ H5FD_family_open(const char *name, unsigned flags, hid_t fapl_id,
unsigned t_flags = flags & ~H5F_ACC_CREAT;
H5P_genplist_t *plist; /* Property list pointer */
- FUNC_ENTER_NOAPI(H5FD_family_open, NULL);
+ FUNC_ENTER_NOAPI(H5FD_family_open, NULL)
/* Check arguments */
if (!name || !*name)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name")
if (0==maxaddr || HADDR_UNDEF==maxaddr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
/* Initialize file from file access properties */
if (NULL==(file=H5MM_calloc(sizeof(H5FD_family_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct")
if (H5P_FILE_ACCESS_DEFAULT==fapl_id) {
file->memb_fapl_id = H5P_FILE_ACCESS_DEFAULT;
- H5I_inc_ref(file->memb_fapl_id);
+ if(H5I_inc_ref(file->memb_fapl_id)<0)
+ HGOTO_ERROR(H5E_VFL, H5E_CANTINC, NULL, "unable to increment ref count on VFL driver")
file->memb_size = 1024*1024*1024; /*1GB*/
} else {
H5FD_family_fapl_t *fa;
if(NULL == (plist = H5I_object(fapl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
fa = H5P_get_driver_info(plist);
if(fa->memb_fapl_id==H5P_FILE_ACCESS_DEFAULT) {
- H5I_inc_ref(fa->memb_fapl_id);
+ if(H5I_inc_ref(fa->memb_fapl_id)<0)
+ HGOTO_ERROR(H5E_VFL, H5E_CANTINC, NULL, "unable to increment ref count on VFL driver")
file->memb_fapl_id = fa->memb_fapl_id;
} /* end if */
else {
if(NULL == (plist = H5I_object(fa->memb_fapl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
file->memb_fapl_id = H5P_copy_plist(plist);
} /* end else */
file->memb_size = fa->memb_size;
@@ -564,7 +623,7 @@ H5FD_family_open(const char *name, unsigned flags, hid_t fapl_id,
sprintf(memb_name, name, 0);
sprintf(temp, name, 1);
if (!strcmp(memb_name, temp))
- HGOTO_ERROR(H5E_FILE, H5E_FILEEXISTS, NULL, "file names not unique");
+ HGOTO_ERROR(H5E_FILE, H5E_FILEEXISTS, NULL, "file names not unique")
/* Open all the family members */
while (1) {
@@ -576,7 +635,7 @@ H5FD_family_open(const char *name, unsigned flags, hid_t fapl_id,
H5FD_t **x = H5MM_realloc(file->memb, n*sizeof(H5FD_t*));
if (!x)
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to reallocate members");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to reallocate members")
file->amembs = n;
file->memb = x;
}
@@ -588,13 +647,11 @@ H5FD_family_open(const char *name, unsigned flags, hid_t fapl_id,
*/
H5E_BEGIN_TRY {
file->memb[file->nmembs] = H5FDopen(memb_name,
- 0==file->nmembs?flags:t_flags,
- file->memb_fapl_id,
- HADDR_UNDEF);
+ (0==file->nmembs ? flags : t_flags), file->memb_fapl_id, HADDR_UNDEF);
} H5E_END_TRY;
if (!file->memb[file->nmembs]) {
if (0==file->nmembs)
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open member file");
+ HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open member file")
H5Eclear();
break;
}
@@ -614,19 +671,25 @@ H5FD_family_open(const char *name, unsigned flags, hid_t fapl_id,
done:
/* Cleanup and fail */
if (ret_value==NULL && file!=NULL) {
- int i;
+ unsigned nerrors=0; /* Number of errors closing member files */
+ unsigned u; /* Local index variable */
+
+ for (u=0; u<file->nmembs; u++)
+ if (file->memb[u])
+ if (H5FDclose(file->memb[u])<0)
+ nerrors++;
+ if (nerrors)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, NULL, "unable to close member files")
- for (i=0; i<file->nmembs; i++)
- if (file->memb[i])
- H5FDclose(file->memb[i]);
if (file->memb)
H5MM_xfree(file->memb);
- H5I_dec_ref(file->memb_fapl_id);
+ if(H5I_dec_ref(file->memb_fapl_id)<0)
+ HDONE_ERROR(H5E_VFL, H5E_CANTDEC, NULL, "can't close driver ID")
if (file->name)
H5MM_xfree(file->name);
H5MM_xfree(file);
}
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -652,26 +715,27 @@ static herr_t
H5FD_family_close(H5FD_t *_file)
{
H5FD_family_t *file = (H5FD_family_t*)_file;
- int i, nerrors=0;
+ unsigned nerrors=0; /* Number of errors while closing member files */
+ unsigned u; /* Local index variable */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_close, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_family_close, FAIL)
/* Close as many members as possible */
- for (i=0; i<file->nmembs; i++) {
- if (file->memb[i]) {
- if (H5FDclose(file->memb[i])<0) {
+ for (u=0; u<file->nmembs; u++) {
+ if (file->memb[u]) {
+ if (H5FDclose(file->memb[u])<0)
nerrors++;
- } else {
- file->memb[i] = NULL;
- }
+ else
+ file->memb[u] = NULL;
}
}
if (nerrors)
- HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "unable to close member files");
+ HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "unable to close member files")
/* Clean up other stuff */
- H5I_dec_ref(file->memb_fapl_id);
+ if(H5I_dec_ref(file->memb_fapl_id)<0)
+ HGOTO_ERROR(H5E_VFL, H5E_CANTDEC, FAIL, "can't close driver ID")
if (file->memb)
H5MM_xfree(file->memb);
if (file->name)
@@ -679,7 +743,7 @@ H5FD_family_close(H5FD_t *_file)
H5MM_xfree(file);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -708,7 +772,7 @@ H5FD_family_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
const H5FD_family_t *f2 = (const H5FD_family_t*)_f2;
int ret_value=(H5FD_VFD_DEFAULT);
- FUNC_ENTER_NOAPI(H5FD_family_cmp, H5FD_VFD_DEFAULT);
+ FUNC_ENTER_NOAPI(H5FD_family_cmp, H5FD_VFD_DEFAULT)
assert(f1->nmembs>=1 && f1->memb[0]);
assert(f2->nmembs>=1 && f2->memb[0]);
@@ -716,7 +780,7 @@ H5FD_family_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
ret_value= H5FDcmp(f1->memb[0], f2->memb[0]);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -737,12 +801,13 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_family_query(const H5FD_t UNUSED * _f, unsigned long *flags /* out */)
{
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_family_query, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_family_query, FAIL)
/* Set the VFL feature flags that this driver supports */
if(flags) {
@@ -754,7 +819,7 @@ H5FD_family_query(const H5FD_t UNUSED * _f, unsigned long *flags /* out */)
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -782,13 +847,13 @@ H5FD_family_get_eoa(H5FD_t *_file)
H5FD_family_t *file = (H5FD_family_t*)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_get_eoa, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_family_get_eoa, HADDR_UNDEF)
/* Set return value */
ret_value=file->eoa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -813,45 +878,47 @@ H5FD_family_set_eoa(H5FD_t *_file, haddr_t eoa)
{
H5FD_family_t *file = (H5FD_family_t*)_file;
haddr_t addr=eoa;
- int i;
char memb_name[4096];
+ unsigned u; /* Local index variable */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_set_eoa, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_family_set_eoa, FAIL)
- for (i=0; addr || i<file->nmembs; i++) {
+ for (u=0; addr || u<file->nmembs; u++) {
/* Enlarge member array */
- if (i>=file->amembs) {
+ if (u>=file->amembs) {
int n = MAX(64, 2*file->amembs);
H5FD_t **x = H5MM_realloc(file->memb, n*sizeof(H5FD_t*));
if (!x)
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to allocate memory block");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to allocate memory block")
file->amembs = n;
file->memb = x;
- file->nmembs = i;
+ file->nmembs = u;
}
/* Create another file if necessary */
- if (i>=file->nmembs || !file->memb[i]) {
- file->nmembs = MAX(file->nmembs, i+1);
- sprintf(memb_name, file->name, i);
+ if (u>=file->nmembs || !file->memb[u]) {
+ file->nmembs = MAX(file->nmembs, u+1);
+ sprintf(memb_name, file->name, u);
H5E_BEGIN_TRY {
- H5_CHECK_OVERFLOW(file->memb_size,hsize_t,haddr_t);
- file->memb[i] = H5FDopen(memb_name, file->flags|H5F_ACC_CREAT,
- file->memb_fapl_id, (haddr_t)file->memb_size);
+ H5_CHECK_OVERFLOW(file->memb_size,hsize_t,haddr_t);
+ file->memb[u] = H5FDopen(memb_name, file->flags|H5F_ACC_CREAT,
+ file->memb_fapl_id, (haddr_t)file->memb_size);
} H5E_END_TRY;
- if (NULL==file->memb[i])
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to open member file");
+ if (NULL==file->memb[u])
+ HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to open member file")
}
/* Set the EOA marker for the member */
H5_CHECK_OVERFLOW(file->memb_size,hsize_t,haddr_t);
if (addr>(haddr_t)file->memb_size) {
- H5FDset_eoa(file->memb[i], (haddr_t)file->memb_size);
+ if(H5FD_set_eoa(file->memb[u], (haddr_t)file->memb_size)<0)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to set file eoa")
addr -= file->memb_size;
} else {
- H5FDset_eoa(file->memb[i], addr);
+ if(H5FD_set_eoa(file->memb[u], addr)<0)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTINIT, FAIL, "unable to set file eoa")
addr = 0;
}
}
@@ -859,7 +926,7 @@ H5FD_family_set_eoa(H5FD_t *_file, haddr_t eoa)
file->eoa = eoa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -887,18 +954,19 @@ H5FD_family_get_eof(H5FD_t *_file)
{
H5FD_family_t *file = (H5FD_family_t*)_file;
haddr_t eof=0;
- int i;
+ int i; /* Local index variable */
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_get_eof, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_family_get_eof, HADDR_UNDEF)
/*
* Find the last member that has a non-zero EOF and break out of the loop
* with `i' equal to that member. If all members have zero EOF then exit
* loop with i==0.
*/
- for (i=file->nmembs-1; i>=0; --i) {
- if ((eof=H5FDget_eof(file->memb[i])))
+ assert(file->nmembs>0);
+ for (i=(int)file->nmembs-1; i>=0; --i) {
+ if ((eof=H5FD_get_eof(file->memb[i])))
break;
if (0==i)
break;
@@ -908,13 +976,13 @@ H5FD_family_get_eof(H5FD_t *_file)
* The file size is the number of members before the i'th member plus the
* size of the i'th member.
*/
- eof += i*file->memb_size;
+ eof += ((unsigned)i)*file->memb_size;
/* Set return value */
ret_value=MAX(eof, file->eoa);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -941,22 +1009,22 @@ H5FD_family_get_handle(H5FD_t *_file, hid_t fapl, void** file_handle)
int memb;
herr_t ret_value;
- FUNC_ENTER_NOAPI(H5FD_family_get_handle, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_family_get_handle, FAIL)
/* Get the plist structure and family offset */
if(NULL == (plist = H5P_object_verify(fapl, H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID");
+ HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "can't find object for ID")
if(H5P_get(plist, H5F_ACS_FAMILY_OFFSET_NAME, &offset) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get offset for family driver");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get offset for family driver")
if(offset>(file->memb_size*file->nmembs))
- HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "offset is bigger than file size");
+ HGOTO_ERROR(H5E_ATOM, H5E_BADATOM, FAIL, "offset is bigger than file size")
memb = (int)(offset/file->memb_size);
ret_value = H5FD_get_vfd_handle(file->memb[memb], fapl, file_handle);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -986,21 +1054,21 @@ H5FD_family_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si
H5FD_family_t *file = (H5FD_family_t*)_file;
unsigned char *buf = (unsigned char*)_buf;
hid_t memb_dxpl_id = H5P_DATASET_XFER_DEFAULT;
- int i;
haddr_t sub;
size_t req;
hsize_t tempreq;
+ unsigned u; /* Local index variable */
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_read, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_family_read, FAIL)
/*
* Get the member data transfer property list. If the transfer property
* list does not belong to this driver then assume defaults
*/
if(NULL == (plist = H5I_object(dxpl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
if (H5P_DATASET_XFER_DEFAULT!=dxpl_id && H5FD_FAMILY==H5P_get_driver(plist)) {
H5FD_family_dxpl_t *dx = H5P_get_driver_info(plist);
@@ -1011,7 +1079,7 @@ H5FD_family_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si
/* Read from each member */
while (size>0) {
- H5_ASSIGN_OVERFLOW(i,addr /file->memb_size,hsize_t,int);
+ H5_ASSIGN_OVERFLOW(u,addr /file->memb_size,hsize_t,unsigned);
sub = addr % file->memb_size;
@@ -1023,10 +1091,10 @@ H5FD_family_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si
tempreq = SIZET_MAX;
req = MIN(size, (size_t)tempreq);
- assert(i<file->nmembs);
+ assert(u<file->nmembs);
- if (H5FDread(file->memb[i], type, memb_dxpl_id, sub, req, buf)<0)
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "member file read failed");
+ if (H5FDread(file->memb[u], type, memb_dxpl_id, sub, req, buf)<0)
+ HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "member file read failed")
addr += req;
buf += req;
@@ -1034,7 +1102,7 @@ H5FD_family_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, si
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1063,21 +1131,21 @@ H5FD_family_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, s
H5FD_family_t *file = (H5FD_family_t*)_file;
const unsigned char *buf = (const unsigned char*)_buf;
hid_t memb_dxpl_id = H5P_DATASET_XFER_DEFAULT;
- int i;
haddr_t sub;
size_t req;
hsize_t tempreq;
+ unsigned u; /* Local index variable */
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_write, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_family_write, FAIL)
/*
* Get the member data transfer property list. If the transfer property
* list does not belong to this driver then assume defaults.
*/
if(NULL == (plist = H5I_object(dxpl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
if (H5P_DATASET_XFER_DEFAULT!=dxpl_id && H5FD_FAMILY==H5P_get_driver(plist)) {
H5FD_family_dxpl_t *dx = H5P_get_driver_info(plist);
@@ -1088,7 +1156,7 @@ H5FD_family_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, s
/* Write to each member */
while (size>0) {
- H5_ASSIGN_OVERFLOW(i,addr /file->memb_size,hsize_t,int);
+ H5_ASSIGN_OVERFLOW(u,addr /file->memb_size,hsize_t,unsigned);
sub = addr % file->memb_size;
@@ -1100,10 +1168,10 @@ H5FD_family_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, s
tempreq = SIZET_MAX;
req = MIN(size, (size_t)tempreq);
- assert(i<file->nmembs);
+ assert(u<file->nmembs);
- if (H5FDwrite(file->memb[i], type, memb_dxpl_id, sub, req, buf)<0)
- HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "member file write failed");
+ if (H5FDwrite(file->memb[u], type, memb_dxpl_id, sub, req, buf)<0)
+ HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "member file write failed")
addr += req;
buf += req;
@@ -1111,7 +1179,7 @@ H5FD_family_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, s
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1135,18 +1203,18 @@ static herr_t
H5FD_family_flush(H5FD_t *_file, hid_t dxpl_id, unsigned closing)
{
H5FD_family_t *file = (H5FD_family_t*)_file;
- int i, nerrors=0;
+ unsigned u, nerrors=0;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_family_flush, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_family_flush, FAIL)
- for (i=0; i<file->nmembs; i++)
- if (file->memb[i] && H5FDflush(file->memb[i], dxpl_id, closing)<0)
+ for (u=0; u<file->nmembs; u++)
+ if (file->memb[u] && H5FD_flush(file->memb[u], dxpl_id, closing)<0)
nerrors++;
if (nerrors)
- HGOTO_ERROR(H5E_IO, H5E_BADVALUE, FAIL, "unable to flush member files");
+ HGOTO_ERROR(H5E_IO, H5E_BADVALUE, FAIL, "unable to flush member files")
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
diff --git a/src/H5FDfamily.h b/src/H5FDfamily.h
index 11e8c67..c774bdb 100644
--- a/src/H5FDfamily.h
+++ b/src/H5FDfamily.h
@@ -30,6 +30,7 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_family_init(void);
+H5_DLL void H5FD_family_term(void);
H5_DLL herr_t H5Pset_fapl_family(hid_t fapl_id, hsize_t memb_size,
hid_t memb_fapl_id);
H5_DLL herr_t H5Pget_fapl_family(hid_t fapl_id, hsize_t *memb_size/*out*/,
diff --git a/src/H5FDfphdf5.c b/src/H5FDfphdf5.c
deleted file mode 100644
index b93c4d4..0000000
--- a/src/H5FDfphdf5.c
+++ /dev/null
@@ -1,1788 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#include "H5private.h" /* Library functions */
-#include "H5ACprivate.h" /* Metadata cache */
-#include "H5Dprivate.h" /* Dataset functions */
-#include "H5Eprivate.h" /* Error handling */
-#include "H5Fprivate.h" /* Files */
-#include "H5FDprivate.h" /* File driver */
-#include "H5FDfphdf5.h" /* Flexible PHDF5 I/O file driver */
-#include "H5FDmpio.h" /* MPI I/O file driver */
-#include "H5FDprivate.h" /* File drivers */
-#include "H5Iprivate.h" /* Object IDs */
-#include "H5MMprivate.h" /* Memory allocation */
-#include "H5Pprivate.h" /* Property lists */
-
-#ifdef H5_HAVE_FPHDF5
-
-#include "H5FPprivate.h" /* Flexible PHDF5 */
-
-/*
- * The driver identification number, initialized at runtime if
- * H5_HAVE_FPHDF5 is defined. This allows applications to still have
- * the H5FD_FPHDF5 "constants" in their source code (it also makes this
- * file strictly ANSI compliant when H5_HAVE_FPHDF5 isn't defined)
- */
-static hid_t H5FD_FPHDF5_g = 0;
-
-/*
- * Prototypes
- */
-static haddr_t H5FD_fphdf5_MPIOff_to_haddr(MPI_Offset mpi_off);
-static herr_t H5FD_fphdf5_haddr_to_MPIOff(haddr_t addr, MPI_Offset *mpi_off);
-
-/*
- * Callbacks
- */
-static void *H5FD_fphdf5_fapl_get(H5FD_t *_file);
-static H5FD_t *H5FD_fphdf5_open(const char *name, unsigned flags,
- hid_t fapl_id, haddr_t maxaddr);
-static herr_t H5FD_fphdf5_close(H5FD_t *_file);
-static herr_t H5FD_fphdf5_query(const H5FD_t *_f1, unsigned long *flags);
-static haddr_t H5FD_fphdf5_get_eoa(H5FD_t *_file);
-static herr_t H5FD_fphdf5_set_eoa(H5FD_t *_file, haddr_t addr);
-static haddr_t H5FD_fphdf5_get_eof(H5FD_t *_file);
-static herr_t H5FD_fphdf5_get_handle(H5FD_t *_file, hid_t fapl,
- void **file_handle);
-static herr_t H5FD_fphdf5_read(H5FD_t *_file, H5FD_mem_t mem_type, hid_t dxpl_id,
- haddr_t addr, size_t size, void *buf);
-static herr_t H5FD_fphdf5_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id,
- haddr_t addr, size_t size, const void *buf);
-static herr_t H5FD_fphdf5_flush(H5FD_t *_file, hid_t dxpl_id, unsigned closing);
-
-/*
- * FPHDF5-specific file access properties
- */
-typedef struct H5FD_fphdf5_fapl_t {
- MPI_Comm comm; /*communicator */
- MPI_Comm barrier_comm; /*barrier communicator */
- MPI_Info info; /*file information */
- unsigned sap_rank; /*SAP's rank */
- unsigned capt_rank; /*captain rank */
-} H5FD_fphdf5_fapl_t;
-
-/*
- * The FPHDF5 file driver information
- */
-const H5FD_class_t H5FD_fphdf5_g = {
- "fphdf5", /*name */
- HADDR_MAX, /*maxaddr */
- H5F_CLOSE_SEMI, /*fc_degree */
- NULL, /*sb_size */
- NULL, /*sb_encode */
- NULL, /*sb_decode */
- sizeof(H5FD_fphdf5_fapl_t), /*fapl_size */
- H5FD_fphdf5_fapl_get, /*fapl_get */
- NULL, /*fapl_copy */
- NULL, /*fapl_free */
- 0, /*dxpl_size */
- NULL, /*dxpl_copy */
- NULL, /*dxpl_free */
- H5FD_fphdf5_open, /*open */
- H5FD_fphdf5_close, /*close */
- NULL, /*cmp */
- H5FD_fphdf5_query, /*query */
- NULL, /*alloc */
- NULL, /*free */
- H5FD_fphdf5_get_eoa, /*get_eoa */
- H5FD_fphdf5_set_eoa, /*set_eoa */
- H5FD_fphdf5_get_eof, /*get_eof */
- H5FD_fphdf5_get_handle, /*get_handle */
- H5FD_fphdf5_read, /*read */
- H5FD_fphdf5_write, /*write */
- H5FD_fphdf5_flush, /*flush */
- NULL, /*lock */
- NULL, /*unlock */
- H5FD_FLMAP_SINGLE /*fl_map */
-};
-
-/* Interface initialization */
-#define PABLO_MASK H5FD_fphdf5_mask
-#define INTERFACE_INIT H5FD_fphdf5_init
-
-static int interface_initialize_g = 0;
-
-/*
- * The view is set to this value
- */
-static char H5FD_mpio_native[] = "native";
-
-/* ======== Temporary, Local data transfer properties ======== */
-/*
- * Definitions for memory MPI type property
- */
-#define H5FD_FPHDF5_XFER_MEM_MPI_TYPE_NAME "H5FD_fphdf5_mem_mpi_type"
-#define H5FD_FPHDF5_XFER_MEM_MPI_TYPE_SIZE sizeof(MPI_Datatype)
-
-/*
- * Definitions for file MPI type property
- */
-#define H5FD_FPHDF5_XFER_FILE_MPI_TYPE_NAME "H5FD_fphdf5_file_mpi_type"
-#define H5FD_FPHDF5_XFER_FILE_MPI_TYPE_SIZE sizeof(MPI_Datatype)
-
-/*
- * Definitions for whether to use MPI types property
- */
-#define H5FD_FPHDF5_XFER_USE_VIEW_NAME "H5FD_fphdf5_use_view"
-#define H5FD_FPHDF5_XFER_USE_VIEW_SIZE sizeof(unsigned)
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_init
- * Purpose: Initialize this driver by registering the driver with the
- * library.
- * Return: Success: The driver ID for the FPHDF5 driver.
- * Failure: Doesn't fail.
- * Programmer: Bill Wendling
- * 30. January 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-hid_t
-H5FD_fphdf5_init(void)
-{
- hid_t ret_value;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_init, FAIL);
-
- if (H5Iget_type(H5FD_FPHDF5_g) != H5I_VFL)
- H5FD_FPHDF5_g = H5FDregister(&H5FD_fphdf5_g);
-
- /* Set return value */
- ret_value = H5FD_FPHDF5_g;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Pset_fapl_fphdf5
- * Purpose: Store the user supplied MPIO communicator COMM and INFO
- * in the file access property list FAPL_ID which can then
- * be used to create and/or open the file. This function is
- * available only in the parallel HDF5 library and is not
- * collective.
- *
- * COMM is the MPI communicator to be used for file open as
- * defined in MPI_FILE_OPEN of MPI-2. This function does not
- * make a duplicated communicator. Any modification to COMM
- * after this function call returns may have an indeterminate
- * effect on the access property list. Users should not
- * modify the communicator while it is defined in a property
- * list.
- *
- * INFO is the MPI info object to be used for file open as
- * defined in MPI_FILE_OPEN of MPI-2. This function does not
- * make a duplicated info. Any modification to info after
- * this function call returns may have an indeterminate effect
- * on the access property list. Users should not modify the
- * info while it is defined in a property list.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 30. January 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Pset_fapl_fphdf5(hid_t fapl_id, MPI_Comm comm, MPI_Comm barrier_comm,
- MPI_Info info, unsigned sap_rank)
-{
- H5FD_fphdf5_fapl_t fa;
- H5P_genplist_t *plist;
- int mrc, comm_size;
- herr_t ret_value;
-
- FUNC_ENTER_API(H5Pset_fapl_fphdf5, FAIL);
- H5TRACE5("e","iMcMcMiIu",fapl_id,comm,barrier_comm,info,sap_rank);
-
- if (fapl_id == H5P_DEFAULT)
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL,
- "can't set values in default property list");
-
- /* Check arguments */
- if ((plist = H5P_object_verify(fapl_id, H5P_FILE_ACCESS)) == NULL)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list");
-
- if ((mrc = MPI_Comm_size(comm, &comm_size)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_size failed", mrc);
-
- /* Initialize driver specific properties */
- fa.comm = comm;
- fa.barrier_comm = barrier_comm;
- fa.info = info;
- fa.sap_rank = sap_rank;
- fa.capt_rank = (sap_rank + 1) % comm_size;
-
- ret_value = H5P_set_driver(plist, H5FD_FPHDF5, &fa);
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Pget_fapl_fphdf5
- * Purpose: If the file access property list is set to the
- * H5FD_FPHDF5 driver then this function returns the MPI
- * communicator and information through the COMM and INFO
- * pointers.
- * Return: Success: SUCCEED with the communicator and information
- * returned through the COMM and INFO arguments
- * if non-null. Neither piece of information is
- * copied and they are therefore valid only
- * until the file access property list is
- * modified or closed.
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 30. January 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Pget_fapl_fphdf5(hid_t fapl_id, MPI_Comm *comm, MPI_Comm *barrier_comm,
- MPI_Info *info, unsigned *sap_rank, unsigned *capt_rank)
-{
- H5FD_fphdf5_fapl_t *fa;
- H5P_genplist_t *plist;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_API(H5Pget_fapl_fphdf5, FAIL);
- H5TRACE6("e","i*Mc*Mc*Mi*Iu*Iu",fapl_id,comm,barrier_comm,info,sap_rank,
- capt_rank);
-
- if ((plist = H5P_object_verify(fapl_id, H5P_FILE_ACCESS)) == NULL)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list");
-
- if (H5P_get_driver(plist) != H5FD_FPHDF5)
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
-
- if ((fa = H5P_get_driver_info(plist)) == NULL)
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info");
-
- if (comm)
- *comm = fa->comm;
-
- if (barrier_comm)
- *barrier_comm = fa->barrier_comm;
-
- if (info)
- *info = fa->info;
-
- if (sap_rank)
- *sap_rank = fa->sap_rank;
-
- if (capt_rank)
- *capt_rank = fa->capt_rank;
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_communicator
- * Purpose: Returns the MPI communicator for the file.
- * Return: Success: The communicator
- * Failure: NULL
- * Programmer: Bill Wendling
- * 30. January 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-MPI_Comm
-H5FD_fphdf5_communicator(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- MPI_Comm ret_value;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_communicator, MPI_COMM_NULL);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- /* Set return value */
- ret_value = file->comm;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_barrier_communicator
- * Purpose: Returns the MPI communicator for the file that can be
- * used in an MPI_Barrier() statement for the client
- * processes.
- * Return: Success: The barrier communicator
- * Failure: NULL
- * Programmer: Bill Wendling
- * 10. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-MPI_Comm
-H5FD_fphdf5_barrier_communicator(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- MPI_Comm ret_value;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_communicator, MPI_COMM_NULL);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- /* Set return value */
- ret_value = file->barrier_comm;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_mpi_rank
- * Purpose: Returns the MPI rank for a process
- * Return: Success: MPI rank
- * Failure: Doesn't fail
- * Programmer: Bill Wendling
- * 30. January 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-int
-H5FD_fphdf5_mpi_rank(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- int ret_value;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_mpi_rank, FAIL);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- /* Set return value */
- ret_value = file->mpi_rank;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_mpi_size
- * Purpose: Returns the number of MPI processes
- * Return: Success: Number of MPI processes
- * Failure: Doesn't fail
- * Programmer: Bill Wendling
- * 30. January 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-int
-H5FD_fphdf5_mpi_size(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- int ret_value;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_mpi_size, FAIL);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- /* Set return value */
- ret_value = file->mpi_size;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_file_id
- * Purpose: Returns the file ID for the file.
- * Return: Success: File ID
- * Failure: Doesn't fail
- * Programmer: Bill Wendling
- * 19. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-unsigned
-H5FD_fphdf5_file_id(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- unsigned ret_value;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_file_id, 0);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- /* Set return value */
- ret_value = file->file_id;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_is_sap
- * Purpose: Asks the question "Is this process the SAP?".
- * Return: Success: Non-zero if it is, 0 otherwise
- * Failure: Doesn't fails
- * Programmer: Bill Wendling
- * 19. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-hbool_t
-H5FD_fphdf5_is_sap(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- hbool_t ret_value = FALSE;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_is_sap, FALSE);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- /* Set return value */
- ret_value = ((unsigned)file->mpi_rank == H5FP_sap_rank);
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_is_captain
- * Purpose: Asks the question "Is this process the captain?".
- * Return: Success: Non-zero if it is, 0 otherwise
- * Failure: Doesn't fails
- * Programmer: Bill Wendling
- * 19. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-hbool_t
-H5FD_fphdf5_is_captain(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- hbool_t ret_value = FALSE;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_is_sap, FALSE);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- /* Set return value */
- ret_value = ((unsigned)file->mpi_rank == H5FP_capt_rank);
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_is_fphdf5_driver
- * Purpose: Asks the question "Is this an FPHDF5 driver?".
- * Return: Success: Non-zero if it is, 0 otherwise
- * Failure: Doesn't fails
- * Programmer: Bill Wendling
- * 26. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-hbool_t
-H5FD_is_fphdf5_driver(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- hbool_t ret_value = FALSE;
-
- FUNC_ENTER_NOAPI(H5FD_is_fphdf5_driver, FALSE);
-
- /* check args */
- assert(file);
-
- /* Set return value */
- ret_value = file->pub.driver_id == H5FD_FPHDF5;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_setup
- * Purpose: Set the buffer type BTYPE, file type FTYPE for a data
- * transfer. Also request an MPI type transfer.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 30. January 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-herr_t
-H5FD_fphdf5_setup(hid_t dxpl_id, MPI_Datatype btype,
- MPI_Datatype ftype, unsigned use_view)
-{
- H5P_genplist_t *plist;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_setup, FAIL);
-
- /* Check arguments */
- if ((plist = H5P_object_verify(dxpl_id, H5P_DATASET_XFER)) == NULL)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dataset transfer list");
-
- /* Set buffer MPI type */
- if (H5P_insert(plist, H5FD_FPHDF5_XFER_MEM_MPI_TYPE_NAME,
- H5FD_FPHDF5_XFER_MEM_MPI_TYPE_SIZE, &btype,
- NULL, NULL, NULL, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert MPI-I/O property");
-
- /* Set file MPI type */
- if (H5P_insert(plist, H5FD_FPHDF5_XFER_FILE_MPI_TYPE_NAME,
- H5FD_FPHDF5_XFER_FILE_MPI_TYPE_SIZE, &ftype,
- NULL, NULL, NULL, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert MPI-I/O property");
-
- /* Set 'use view' property */
- if (H5P_insert(plist, H5FD_FPHDF5_XFER_USE_VIEW_NAME,
- H5FD_FPHDF5_XFER_USE_VIEW_SIZE, &use_view,
- NULL, NULL, NULL, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert MPI-I/O property");
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_teardown
- * Purpose: Remove the temporary MPI-I/O properties from dxpl.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 30. January 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-herr_t
-H5FD_fphdf5_teardown(hid_t dxpl_id)
-{
- H5P_genplist_t *plist;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_teardown, FAIL);
-
- /* Check arguments */
- if ((plist = H5P_object_verify(dxpl_id, H5P_DATASET_XFER)) == NULL)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dataset transfer list");
-
- /* Remove buffer MPI type */
- if (H5P_remove(dxpl_id, plist, H5FD_FPHDF5_XFER_MEM_MPI_TYPE_NAME) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTDELETE, FAIL, "can't remove MPI-I/O property");
-
- /* Remove file MPI type */
- if (H5P_remove(dxpl_id, plist, H5FD_FPHDF5_XFER_FILE_MPI_TYPE_NAME) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTDELETE, FAIL, "can't remove MPI-I/O property");
-
- /* Remove 'use view' property */
- if (H5P_remove(dxpl_id, plist, H5FD_FPHDF5_XFER_USE_VIEW_NAME) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTDELETE, FAIL, "can't remove MPI-I/O property");
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Pset_dxpl_fphdf5
- * Purpose: Set the data transfer property list DXPL_ID to use
- * transfer mode XFER_MODE. The property list can then be
- * used to control the I/O transfer mode during data I/O
- * operations. The valid transfer modes are:
- *
- * H5FD_MPIO_INDEPENDENT:
- * Use independent I/O access (the default).
- *
- * H5FD_MPIO_COLLECTIVE:
- * Use collective I/O access.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 10. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Pset_dxpl_fphdf5(hid_t dxpl_id, H5FD_mpio_xfer_t xfer_mode)
-{
- H5P_genplist_t *plist;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_API(H5Pset_dxpl_fphdf5, FAIL);
- H5TRACE2("e","iDt",dxpl_id,xfer_mode);
-
- if (dxpl_id == H5P_DEFAULT)
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL,
- "can't set values in default property list");
-
- /* Check arguments */
- if ((plist = H5P_object_verify(dxpl_id,H5P_DATASET_XFER)) == NULL)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dxpl");
-
- if (xfer_mode != H5FD_MPIO_INDEPENDENT && xfer_mode != H5FD_MPIO_COLLECTIVE)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "incorrect xfer_mode");
-
- /* Set the transfer mode */
- if (H5P_set(plist, H5D_XFER_IO_XFER_MODE_NAME, &xfer_mode) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value");
-
- /* Initialize driver-specific properties */
- ret_value = H5P_set_driver(plist, H5FD_MPIO, NULL);
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5Pget_dxpl_fphdf5
- * Purpose: Queries the transfer mode current set in the data
- * transfer property list DXPL_ID. This is not collective.
- * Return: Success: SUCCEED - with the transfer mode returned
- * through the XFER_MODE argument if
- * it is non-null.
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 10. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-herr_t
-H5Pget_dxpl_fphdf5(hid_t dxpl_id, H5FD_mpio_xfer_t *xfer_mode)
-{
- H5P_genplist_t *plist;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_API(H5Pget_dxpl_fphdf5, FAIL);
- H5TRACE2("e","i*Dt",dxpl_id,xfer_mode);
-
- if ((plist = H5P_object_verify(dxpl_id,H5P_DATASET_XFER)) == NULL)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dxpl");
-
- if (H5P_get_driver(plist) != H5FD_FPHDF5)
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
-
- /* Get the transfer mode */
- if (xfer_mode)
- if (H5P_get(plist, H5D_XFER_IO_XFER_MODE_NAME, xfer_mode) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to get value");
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_fapl_get
- * Purpose: Returns a file access property list which could be used
- * to create another file the same as this one.
- * Return: Success: Ptr to new file access property list with all
- * fields copied from the file pointer.
- * Failure: NULL
- * Programmer: Bill Wendling
- * 07. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static void *
-H5FD_fphdf5_fapl_get(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- H5FD_fphdf5_fapl_t *fa = NULL;
- void *ret_value;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_fapl_get, NULL);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- if ((fa = H5MM_calloc(sizeof(H5FD_fphdf5_fapl_t))) == NULL)
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
-
- /* These should both be copied. --rpm, 1999-08-13 */
- fa->comm = file->comm;
- fa->barrier_comm = file->barrier_comm;
- fa->info = file->info;
-
- /* Set return value */
- ret_value = fa;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_open
- * Purpose: Opens a file with name NAME. The FLAGS are a bit field with
- * purpose similar to the second argument of open(2) and
- * which are defined in H5Fpublic.h. The file access
- * property list FAPL_ID contains the properties driver
- * properties and MAXADDR is the largest address which this
- * file will be expected to access. This is collective.
- * Return: Success: A new file pointer.
- * Failure: NULL
- * Programmer: Bill Wendling
- * 05. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static H5FD_t *
-H5FD_fphdf5_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
-{
- H5FD_fphdf5_t *file = NULL;
- MPI_File fh;
- int mpi_amode;
- int mpi_rank;
- int mpi_size;
- int mrc;
- MPI_Offset size;
- H5FD_fphdf5_fapl_t _fa;
- const H5FD_fphdf5_fapl_t *fa = NULL;
- H5P_genplist_t *plist;
- unsigned long feature_flags;
- hsize_t meta_block_size = 0;
- hsize_t sdata_block_size = 0;
- hsize_t threshold;
- hsize_t alignment;
- unsigned file_id;
- unsigned req_id;
- MPI_Status status;
- H5FD_t *ret_value = NULL;
-
- /* Flag to indicate that the file was successfully opened */
- unsigned file_opened = FALSE;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_open, NULL);
-
- /* check args */
- assert(name);
-
- /* Obtain a pointer to fphdf5-specific file access properties */
- if ((plist = H5P_object_verify(fapl_id, H5P_FILE_ACCESS)) == NULL)
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
-
- if (fapl_id == H5P_FILE_ACCESS_DEFAULT || H5P_get_driver(plist) != H5FD_FPHDF5) {
- _fa.comm = MPI_COMM_SELF; /*default*/
- _fa.barrier_comm = MPI_COMM_SELF; /*default*/
- _fa.info = MPI_INFO_NULL; /*default*/
- fa = &_fa;
- } else {
- fa = H5P_get_driver_info(plist);
- assert(fa);
- }
-
- /*
- * Convert HDF5 flags to MPI-IO flags. Some combinations are illegal;
- * let MPI-IO figure it out
- */
- mpi_amode = (flags & H5F_ACC_RDWR) ? MPI_MODE_RDWR : MPI_MODE_RDONLY;
-
- if (flags & H5F_ACC_CREAT) mpi_amode |= MPI_MODE_CREATE;
- if (flags & H5F_ACC_EXCL) mpi_amode |= MPI_MODE_EXCL;
-
- /* OKAY: CAST DISCARDS CONST */
- if ((mrc = MPI_File_open(H5FP_SAP_BARRIER_COMM, (char *)name, mpi_amode,
- fa->info, &fh)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(NULL, "MPI_File_open failed", mrc);
-
- file_opened = TRUE;
-
- if (H5P_get(plist, H5F_ACS_META_BLOCK_SIZE_NAME, &meta_block_size) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get meta data block size");
-
- if (H5P_get(plist, H5F_ACS_SDATA_BLOCK_SIZE_NAME, &sdata_block_size) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get 'small data' block size");
-
- if (H5P_get(plist, H5F_ACS_ALIGN_THRHD_NAME, &threshold) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get alignment threshold");
-
- if (H5P_get(plist, H5F_ACS_ALIGN_NAME, &alignment) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, NULL, "can't get alignment");
-
- /* Retrieve the VFL driver feature flags */
- H5FD_fphdf5_query(NULL, &feature_flags); /* doesn't fail */
-
- /* Inform the SAP that the file was opened */
- if (H5FP_request_open(H5FP_OBJ_FILE, maxaddr, feature_flags,
- meta_block_size, sdata_block_size, threshold,
- alignment, &file_id, &req_id) == FAIL)
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTOPENFILE, NULL,
- "can't inform SAP of file open");
-
- /* Grab the rank of this process */
- if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, &mpi_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_rank failed", mrc);
-
- HDmemset(&status, 0, sizeof(status));
-
- /* Broadcast the file ID */
- if ((mrc = MPI_Bcast(&file_id, 1, MPI_UNSIGNED,
- (int)H5FP_capt_barrier_rank,
- H5FP_SAP_BARRIER_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mrc);
-
- /* The captain rank will get the filesize and broadcast it. */
- if ((unsigned)mpi_rank == H5FP_capt_rank)
- /* Get current file size */
- if ((mrc = MPI_File_get_size(fh, &size)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(NULL, "MPI_File_get_size failed", mrc);
-
- /* Broadcast file size */
- if ((mrc = MPI_Bcast(&size, sizeof(MPI_Offset), MPI_BYTE,
- (int)H5FP_capt_barrier_rank,
- H5FP_SAP_BARRIER_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mrc);
-
- /* Only if size > 0, truncate the file - if requested */
- if (size && (flags & H5F_ACC_TRUNC)) {
- if ((mrc = MPI_File_set_size(fh, (MPI_Offset)0)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(NULL, "MPI_File_set_size (file truncation) failed", mrc);
-
- /* Don't let any proc return until all have truncated the file. */
- if ((mrc = MPI_Barrier(H5FP_SAP_BARRIER_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(NULL, "MPI_Barrier failed", mrc);
-
- size = 0;
- }
-
- /* Grab the size of the communicator */
- if ((mrc = MPI_Comm_size(H5FP_SAP_COMM, &mpi_size)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_size failed", mrc);
-
- /* Build the return value and initialize it */
- if ((file = H5MM_calloc(sizeof(H5FD_fphdf5_t))) == NULL)
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
-
- file->file_id = file_id;
- file->f = fh;
- file->comm = fa->comm;
- file->info = fa->info;
- file->mpi_rank = mpi_rank;
- file->mpi_size = mpi_size;
- file->eof = H5FD_fphdf5_MPIOff_to_haddr(size);
-
- /* Set return value */
- ret_value = (H5FD_t *)file;
-
-done:
- if (!ret_value && file_opened)
- MPI_File_close(&fh);
-
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_close
- * Purpose: Closes a file. This is collective.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 07. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_fphdf5_close(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t *)_file;
- H5FP_status_t status;
- unsigned req_id;
- int mrc;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_close, FAIL);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- /* MPI_File_close sets argument to MPI_FILE_NULL */
- if ((mrc = MPI_File_close(&file->f)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_File_close failed", mrc);
-
- if (H5FP_request_close(_file, file->file_id, &req_id, &status) == FAIL)
- HGOTO_ERROR(H5E_IO, H5E_CANTCLOSEFILE, FAIL,
- "can't inform SAP of file close");
-
- /* Clean up other stuff */
- H5MM_xfree(file);
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_query
- * Purpose: Set the flags that this VFL driver is capable of
- * supporting. (listed in H5FDpublic.h)
- * Return: Success: SUCCEED
- * Failure: Doesn't fail.
- * Programmer: Bill Wendling
- * 07. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_fphdf5_query(const H5FD_t UNUSED *_file, unsigned long *flags /* out */)
-{
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_query, FAIL);
-
- /* check args */
- assert(flags);
-
- /* Set the VFL feature flags that this driver supports */
- if (flags) {
- *flags = 0;
-
- /* OK to aggregate metadata allocations */
- *flags |= H5FD_FEAT_AGGREGATE_METADATA;
-
- /*
- * Distinguish between updating the metadata accumulator on
- * writes and reads. This is particularly (perhaps only, even)
- * important for MPI-I/O where we guarantee that writes are
- * collective, but reads may not be. If we were to allow the
- * metadata accumulator to be written during a read operation,
- * the application would hang.
- */
-
-#if 0
- /*
- * FIXME: For now, having metadata accumulate causes problems for
- * the SAP when it goes to allocate data (oddly enough, an
- * allocation can result in a call to H5FD_free...which can
- * result in a call to H5FD_write...which needs a data xfer
- * property list...but only when metadata accumulation is turned
- * on...go figure). Turn it off for now. -- BW 02/19/2003
- */
-
- /* OK to accumulate metadata for faster writes */
- *flags |= H5FD_FEAT_ACCUMULATE_METADATA_WRITE;
-#endif /* 0 */
-
- /* OK to aggregate "small" raw data allocations */
- *flags |= H5FD_FEAT_AGGREGATE_SMALLDATA;
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_get_eoa
- * Purpose: Gets the end-of-address marker for the file. The EOA
- * marker is the first address past the last byte allocated
- * in the format address space.
- * Return: Success: The end-of-address marker.
- * Failure: HADDR_UNDEF
- * Programmer: Bill Wendling
- * 07. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static haddr_t
-H5FD_fphdf5_get_eoa(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t *)_file;
- haddr_t ret_value;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_get_eoa, HADDR_UNDEF);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- /* Set return value */
- ret_value = file->eoa;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_set_eoa
- * Purpose: Set the end-of-address marker for the file. This function
- * is called shortly after an existing HDF5 file is opened
- * in order to tell the driver where the end of the HDF5
- * data is located.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 06. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_fphdf5_set_eoa(H5FD_t *_file, haddr_t addr)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t *)_file;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_set_eoa, FAIL);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- file->eoa = addr;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_get_eof
- * Purpose: Gets the end-of-file marker for the file. The EOF marker
- * is the real size of the file.
- *
- * The FPHDF5 driver doesn't bother keeping this field updated
- * since that's a relatively expensive operation.
- * Fortunately the library only needs the EOF just after the
- * file is opened in order to determine whether the file is
- * empty, truncated, or okay. Therefore, any MPIO I/O
- * function will set its value to HADDR_UNDEF which is the
- * error return value of this function.
- * Return: Success: The end-of-address marker
- * Failure: HADDR_UNDEF
- * Programmer: Bill Wendling
- * 06. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static haddr_t
-H5FD_fphdf5_get_eof(H5FD_t *_file)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- haddr_t ret_value;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_get_eof, HADDR_UNDEF);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- /* Set return value */
- ret_value = file->eof;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_get_handle
- * Purpose: Returns the file handle of MPIO file driver.
- * Returns: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 06. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
-*/
-static herr_t
-H5FD_fphdf5_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t *)_file;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_get_handle, FAIL);
-
- /* check args */
- assert(file);
-
- if (!file_handle)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid");
-
- *file_handle = &file->f;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_read
- * Purpose: Reads SIZE bytes of data from FILE beginning at address
- * ADDR into buffer BUF according to data transfer
- * properties in DXPL_ID using potentially complex file and
- * buffer types to effect the transfer.
- *
- * Reading past the end of the MPI file returns zeros
- * instead of failing. MPI is able to coalesce requests
- * from different processes (collective or independent).
- * Return: Success: SUCCEED - Result is stored in caller-supplied
- * buffer BUF
- * Failure: FAIL - Contents of buffer BUF are undefined
- * Programmer: Bill Wendling
- * 10. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_fphdf5_read(H5FD_t *_file, H5FD_mem_t mem_type, hid_t dxpl_id,
- haddr_t addr, size_t size, void *buf)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- MPI_Offset mpi_off;
- MPI_Offset mpi_disp;
- MPI_Status status;
- int mrc;
- MPI_Datatype buf_type;
- MPI_Datatype file_type;
- int size_i;
- int bytes_read;
- int n;
- unsigned use_view_this_time = 0;
- H5P_genplist_t *plist;
- H5FD_mpio_xfer_t xfer_mode = H5FD_MPIO_INDEPENDENT;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_read, FAIL);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
- assert(buf);
-
- /* make certain we have the correct type of property list */
- assert(H5I_get_type(dxpl_id) == H5I_GENPROP_LST);
- assert(H5P_isa_class(dxpl_id, H5P_DATASET_XFER) == TRUE);
-
- /* Portably initialize MPI status variable */
- HDmemset(&status, 0, sizeof(MPI_Status));
-
- /* Some numeric conversions */
- if (H5FD_fphdf5_haddr_to_MPIOff(addr, &mpi_off) < 0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL,
- "can't convert from haddr_t to MPI offset");
-
- size_i = (int)size;
-
- if ((hsize_t)size_i != size)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from size_t to int");
-
- /* Obtain the data transfer properties */
- if ((plist = H5I_object(dxpl_id)) == NULL)
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
-
- if (H5P_get_driver(plist) == H5FD_FPHDF5)
- /* Get the transfer mode */
- xfer_mode = H5P_peek_unsigned(plist, H5D_XFER_IO_XFER_MODE_NAME);
-
- /*
- * Set up for a fancy xfer using complex types, or single byte block.
- * We wouldn't need to rely on the use_view field if MPI semantics
- * allowed us to test that btype == ftype == MPI_BYTE (or even
- * MPI_TYPE_NULL, which could mean "use MPI_BYTE" by convention).
- */
- if (H5P_exist_plist(plist, H5FD_FPHDF5_XFER_USE_VIEW_NAME) > 0)
- if (H5P_get(plist, H5FD_FPHDF5_XFER_USE_VIEW_NAME, &use_view_this_time) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property");
-
- if (use_view_this_time) {
- /* Prepare for a full-blown xfer using btype, ftype, and disp */
- if (H5P_get(plist, H5FD_FPHDF5_XFER_MEM_MPI_TYPE_NAME, &buf_type) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property");
-
- if (H5P_get(plist, H5FD_FPHDF5_XFER_FILE_MPI_TYPE_NAME, &file_type) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property");
-
- /*
- * When using types, use the address as the displacement for
- * MPI_File_set_view and reset the address for the read to zero
- */
- mpi_disp = mpi_off;
- mpi_off = 0;
-
- /* Set the file view when we are using MPI derived types */
- if ((mrc = MPI_File_set_view(file->f, (MPI_Offset)mpi_disp, MPI_BYTE,
- file_type, H5FD_mpio_native,
- file->info)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_File_set_view failed", mrc);
- } else {
- /*
- * Prepare for a simple xfer of a contiguous block of bytes. The
- * btype, ftype, and disp fields are not used.
- */
- buf_type = MPI_BYTE;
- file_type = MPI_BYTE;
- mpi_disp = 0; /* mpi_off is already set */
- }
-
- /* If metadata, check the metadata cache first */
- if (mem_type != H5FD_MEM_DRAW) {
- /*
- * This is metadata - we want to try to read it from the SAP
- * first.
- */
- H5FP_status_t sap_status;
- unsigned req_id;
-
- if (H5FP_request_read_metadata(_file, file->file_id, dxpl_id, mem_type,
- mpi_off, size, (uint8_t**)&buf,
- &bytes_read, &req_id, &sap_status) != SUCCEED) {
- /* FIXME: The read failed, for some reason */
-HDfprintf(stderr, "%s:%d: Metadata cache read failed!\n", FUNC, __LINE__);
- }
-
- if (sap_status == H5FP_STATUS_OK) {
- /* WAH-HOO! We've found it! We can leave now */
- goto finished_read;
- } else if (sap_status != H5FP_STATUS_MDATA_NOT_CACHED) {
- /* FIXME: something bad happened */
-HDfprintf(stderr, "%s:%d: Metadata cache read failed!\n", FUNC, __LINE__);
- }
- }
-
- /* Read the data. */
- assert(xfer_mode == H5FD_MPIO_INDEPENDENT || xfer_mode == H5FD_MPIO_COLLECTIVE);
-
- if (xfer_mode == H5FD_MPIO_INDEPENDENT) {
- if ((mrc = MPI_File_read_at(file->f, mpi_off, buf, size_i,
- buf_type, &status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_File_read_at failed", mrc);
- } else {
- if ((mrc = MPI_File_read_at_all(file->f, mpi_off, buf, size_i,
- buf_type, &status )) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_File_read_at_all failed", mrc);
- }
-
- /*
- * KLUDGE, Robb Matzke, 2000-12-29
- * The LAM implementation of MPI_Get_count() says
- *
- * MPI_Get_count: invalid argument (rank 0, MPI_COMM_WORLD)
- *
- * So I'm commenting this out until it can be investigated. The
- * returned `bytes_written' isn't used anyway because of Kim's kludge
- * to avoid bytes_written < 0. Likewise in H5FD_fphdf5_write().
- */
-
-#ifdef H5_HAVE_MPI_GET_COUNT /* Bill and Albert's kludge*/
- /*
- * Yet Another KLUDGE, Albert Cheng & Bill Wendling, 2001-05-11.
- * Many systems don't support MPI_Get_count so we need to do a
- * configure thingy to fix this.
- */
-
- /*
- * Calling MPI_Get_count with "MPI_BYTE" is only valid when we
- * actually had the 'buf_type' set to MPI_BYTE -QAK
- */
- if (use_view_this_time) {
- /*
- * Figure out the mapping from the MPI 'buf_type' to bytes,
- * someday... If this gets fixed (and MPI_Get_count() is
- * reliable), the kludge below where the 'bytes_read' value from
- * MPI_Get_count() is overwritten with the 'size_i' parameter can
- * be removed. -QAK
- */
- } else {
- /* How many bytes were actually read? */
- if ((mrc = MPI_Get_count(&status, MPI_BYTE, &bytes_read)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Get_count failed", mrc);
- }
-#endif /* H5_HAVE_MPI_GET_COUNT */
-
- /*
- * KLUGE rky 1998-02-02
- * MPI_Get_count incorrectly returns negative count; fake a complete
- * read.
- */
- bytes_read = size_i;
-
- /*
- * Reset the file view when we used MPI derived types
- */
- if (use_view_this_time)
- if ((mrc = MPI_File_set_view(file->f, (MPI_Offset)0, MPI_BYTE, MPI_BYTE,
- H5FD_mpio_native, file->info)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_File_set_view failed", mrc);
-
-finished_read:
- /* Check for read failure */
- if (bytes_read < 0 || bytes_read > size_i)
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed");
-
- /*
- * This gives us zeroes beyond end of physical MPI file. What about
- * reading past logical end of HDF5 file???
- */
- n = size_i - bytes_read;
-
- if (n > 0) {
- if (use_view_this_time)
- /*
- * INCOMPLETE rky 1998-09-18
- * Haven't implemented reading zeros beyond EOF. What to do???
- */
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "eof file read failed");
-
- memset((char*)buf + bytes_read, 0, (size_t)n);
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_write
- * Purpose: Writes SIZE bytes of data to FILE beginning at address
- * ADDR from buffer BUF according to data transfer
- * properties in DXPL_ID using potentially complex file and
- * buffer types to effect the transfer.
- *
- * MPI is able to coalesce requests from different processes
- * (collective and independent).
- * Return: Success: SUCCEED - USE_TYPES and OLD_USE_TYPES in the
- * access params are altered.
- * Failure: FAIL - USE_TYPES and OLD_USE_TYPES in the
- * access params may be altered.
- * Programmer: Bill Wendling
- * 10. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_fphdf5_write(H5FD_t *_file, H5FD_mem_t mem_type, hid_t dxpl_id,
- haddr_t addr, size_t size, const void *buf)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- MPI_Offset mpi_off;
- int size_i;
- unsigned dumping = 0;
- H5P_genplist_t *plist;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_write, FAIL);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
- assert(buf);
-
- /* Make certain we have the correct type of property list */
- assert(H5I_get_type(dxpl_id) == H5I_GENPROP_LST);
- assert(H5P_isa_class(dxpl_id, H5P_DATASET_XFER) == TRUE);
-
- /* some numeric conversions */
- if (H5FD_fphdf5_haddr_to_MPIOff(addr, &mpi_off) < 0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL,
- "can't convert from haddr to MPI off");
-
- size_i = (int)size;
-
- if ((hsize_t)size_i != size)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from size to size_i");
-
- /* Obtain the data transfer properties */
- if ((plist = H5I_object(dxpl_id)) == NULL)
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
-
-#if 0
- /* Metadata specific actions */
- if (mem_type != H5FD_MEM_DRAW) {
- unsigned block_before_meta_write = 0;
- int mrc;
-
- /*
- * Check if we need to syncronize all processes before attempting
- * metadata write (Prevents race condition where the process
- * writing the metadata goes ahead and writes the metadata to the
- * file before all the processes have read the data,
- * "transmitting" data from the "future" to the reading process.
- * -QAK )
- */
- if (H5P_exist_plist(plist, H5AC_BLOCK_BEFORE_META_WRITE_NAME) > 0)
- if (H5P_get(plist, H5AC_BLOCK_BEFORE_META_WRITE_NAME,
- &block_before_meta_write) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get H5AC property");
-
- if (block_before_meta_write)
- if ((mrc = MPI_Barrier(file->barrier_comm)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mrc);
- }
-#endif /* 0 */
-
- if (H5P_exist_plist(plist, H5FD_FPHDF5_XFER_DUMPING_METADATA) > 0)
- if (H5P_get(plist, H5FD_FPHDF5_XFER_DUMPING_METADATA, &dumping) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property");
-
- /*
- * If metadata, write to the metadata cache but only if we're not
- * dumping the data from the SAP...
- */
- if (mem_type != H5FD_MEM_DRAW && !dumping) {
- unsigned req_id;
- H5FP_status_t sap_status;
-
- if (H5FP_request_write_metadata(_file, file->file_id, dxpl_id, mem_type,
- mpi_off, size_i, buf, &req_id,
- &sap_status) != SUCCEED) {
- /* FIXME: Couldn't write metadata. This is bad... */
-HDfprintf(stderr, "%s:%d: Couldn't write metadata to SAP (%d)\n",
- FUNC, __LINE__, sap_status);
- }
-
- switch (sap_status) {
- case H5FP_STATUS_OK:
- /* WAH-HOO! We've written it! We can leave now */
- /* Forget the EOF value (see H5FD_fphdf5_get_eof()) */
- file->eof = HADDR_UNDEF;
- HGOTO_DONE(ret_value);
- case H5FP_STATUS_FILE_CLOSING:
- HGOTO_DONE(ret_value);
- case H5FP_STATUS_DUMPING_FAILED:
- case H5FP_STATUS_OOM:
- case H5FP_STATUS_BAD_FILE_ID:
- default:
- /* FIXME: Something bad happened */
-HDfprintf(stderr, "%s: Couldn't write metadata to SAP (%d)\n",
- FUNC, sap_status);
- break;
- }
- }
-
- /* FIXME: Should I check this return value or just pass it on out? */
- ret_value = H5FD_fphdf5_write_real(_file, dxpl_id, mpi_off, size_i, buf);
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_write_real
- * Purpose: Do the actual writing to a file. Split apart from the
- * H5FD_fphdf5_write call since I need to write things
- * directly if the SAP is dumping data to me.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 12. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-herr_t
-H5FD_fphdf5_write_real(H5FD_t *_file, hid_t dxpl_id, MPI_Offset mpi_off, int size,
- const void *buf)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- MPI_Status status;
- MPI_Datatype buf_type;
- MPI_Datatype file_type;
- MPI_Offset mpi_disp;
- int mrc;
- int bytes_written;
- unsigned use_view_this_time = 0;
- H5P_genplist_t *plist;
- H5FD_mpio_xfer_t xfer_mode = H5FD_MPIO_INDEPENDENT;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_write_real, FAIL);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
- assert(buf);
-
- /* Make certain we have the correct type of property list */
- assert(H5I_get_type(dxpl_id) == H5I_GENPROP_LST);
- assert(H5P_isa_class(dxpl_id, H5P_DATASET_XFER) == TRUE);
-
- /* Portably initialize MPI status variable */
- HDmemset(&status, 0, sizeof(MPI_Status));
-
- /* Obtain the data transfer properties */
- if ((plist = H5I_object(dxpl_id)) == NULL)
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
-
- /*
- * Set up for a fancy xfer using complex types, or single byte block.
- * We wouldn't need to rely on the use_view field if MPI semantics
- * allowed us to test that btype == ftype == MPI_BYTE (or even
- * MPI_TYPE_NULL, which could mean "use MPI_BYTE" by convention).
- */
- if (H5P_exist_plist(plist, H5FD_FPHDF5_XFER_USE_VIEW_NAME) > 0)
- if (H5P_get(plist, H5FD_FPHDF5_XFER_USE_VIEW_NAME, &use_view_this_time) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property");
-
- if (use_view_this_time) {
- /* Prepare for a full-blown xfer using btype, ftype, and disp */
- if (H5P_get(plist, H5FD_FPHDF5_XFER_MEM_MPI_TYPE_NAME, &buf_type) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property");
-
- if (H5P_get(plist, H5FD_FPHDF5_XFER_FILE_MPI_TYPE_NAME, &file_type) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property");
-
- /*
- * When using types, use the address as the displacement for
- * MPI_File_set_view and reset the address for the read to zero
- */
- mpi_disp = mpi_off;
- mpi_off = 0;
-
- /* Set the file view when we are using MPI derived types */
- if ((mrc = MPI_File_set_view(file->f, mpi_disp, MPI_BYTE,
- file_type, H5FD_mpio_native,
- file->info)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_File_set_view failed", mrc);
- } else {
- /*
- * Prepare for a simple xfer of a contiguous block of bytes. The
- * btype, ftype, and disp fields are not used.
- */
- buf_type = MPI_BYTE;
- file_type = MPI_BYTE;
- mpi_disp = 0; /* mpi_off is already set */
- }
-
-
- if (H5P_get_driver(plist) == H5FD_FPHDF5)
- /* Get the transfer mode */
- xfer_mode = H5P_peek_unsigned(plist, H5D_XFER_IO_XFER_MODE_NAME);
-
- /* Write the data. */
- assert(xfer_mode == H5FD_MPIO_INDEPENDENT || xfer_mode == H5FD_MPIO_COLLECTIVE);
-
- if (xfer_mode == H5FD_MPIO_INDEPENDENT) {
- /*OKAY: CAST DISCARDS CONST QUALIFIER*/
- if ((mrc = MPI_File_write_at(file->f, mpi_off, (void*)buf,
- size, buf_type, &status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_File_write_at failed", mrc);
- } else {
- /*OKAY: CAST DISCARDS CONST QUALIFIER*/
- if ((mrc = MPI_File_write_at_all(file->f, mpi_off, (void*)buf,
- size, buf_type, &status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_File_write_at_all failed", mrc);
- }
-
- /*
- * KLUDGE, Robb Matzke, 2000-12-29
- * The LAM implementation of MPI_Get_count() says
- *
- * MPI_Get_count: invalid argument (rank 0, MPI_COMM_WORLD)
- *
- * So I'm commenting this out until it can be investigated. The
- * returned `bytes_written' isn't used anyway because of Kim's kludge
- * to avoid bytes_written<0. Likewise in H5FD_fphdf5_read().
- */
-
-#ifdef H5_HAVE_MPI_GET_COUNT /* Bill and Albert's kludge*/
- /*
- * Yet Another KLUDGE, Albert Cheng & Bill Wendling, 2001-05-11.
- * Many systems don't support MPI_Get_count so we need to do a
- * configure thingy to fix this.
- */
-
- /*
- * Calling MPI_Get_count with "MPI_BYTE" is only valid when we
- * actually had the 'buf_type' set to MPI_BYTE -QAK
- */
- if (use_view_this_time) {
- /*
- * Figure out the mapping from the MPI 'buf_type' to bytes,
- * someday... If this gets fixed (and MPI_Get_count() is
- * reliable), the kludge below where the 'bytes_written' value
- * from MPI_Get_count() is overwritten with the 'size'
- * parameter can be removed. -QAK
- */
- } else {
- /* How many bytes were actually written? */
- if ((mrc = MPI_Get_count(&status, MPI_BYTE, &bytes_written)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Get_count failed", mrc);
- }
-#endif /* H5_HAVE_MPI_GET_COUNT */
-
- /* Reset the file view when we used MPI derived types */
- if (use_view_this_time)
- if ((mrc = MPI_File_set_view(file->f, (MPI_Offset)0, MPI_BYTE, MPI_BYTE,
- H5FD_mpio_native, file->info)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_File_set_view failed", mrc);
-
- /*
- * MPI_Get_count incorrectly returns negative count; fake a complete
- * write (use size for both parameters).
- */
- bytes_written = size;
-
- /* Check for write failure */
- if (bytes_written < 0 || bytes_written > size)
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file write failed");
-
- /* Forget the EOF value (see H5FD_fphdf5_get_eof()) */
- file->eof = HADDR_UNDEF;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_flush
- * Purpose: Makes sure that all data is on disk. This is collective.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 12. February 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_fphdf5_flush(H5FD_t *_file, hid_t dxpl_id, unsigned closing)
-{
- H5FD_fphdf5_t *file = (H5FD_fphdf5_t*)_file;
- MPI_Offset mpi_off;
- int mrc;
- unsigned req_id;
- H5FP_status_t status;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FD_fphdf5_flush, FAIL);
-
- /* check args */
- assert(file);
- assert(file->pub.driver_id == H5FD_FPHDF5);
-
- /*
- * Extend the file to make sure it's large enough, then sync.
- * Unfortunately, keeping track of EOF is an expensive operation, so
- * we can't just check whether EOF<EOA like with other drivers.
- * Therefore we'll just read the byte at EOA-1 and then write it
- * back.
- */
- if (file->eoa > file->last_eoa) {
- if (H5FD_fphdf5_haddr_to_MPIOff(file->eoa, &mpi_off) < 0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL,
- "cannot convert from haddr_t to MPI_Offset");
-
- /* Extend the file's size */
- if ((mrc = MPI_File_set_size(file->f, mpi_off)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_File_set_size failed", mrc);
-
- /*
- * Don't let any proc return until all have extended the file.
- * (Prevents race condition where some processes go ahead and
- * write more data to the file before all the processes have
- * finished making it the shorter length, potentially truncating
- * the file and dropping the new data written)
- */
- if ((mrc = MPI_Barrier(H5FP_SAP_BARRIER_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mrc);
-
- /* Update the 'last' eoa value */
- file->last_eoa = file->eoa;
- }
-
- /* Only the captain process needs to flush the metadata. */
- if (H5FD_fphdf5_is_captain(_file)) {
- if (H5FP_request_flush_metadata(_file, file->file_id, dxpl_id,
- &req_id, &status) != SUCCEED) {
- /* FIXME: This failed */
-HDfprintf(stderr, "%s:%d: Flush failed (%d)\n", FUNC, __LINE__, status);
- }
-
- /* Only sync the file if we are not going to immediately close it */
- if (!closing)
- if ((mrc = MPI_File_sync(file->f)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_File_sync failed", mrc);
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_MPIOff_to_haddr
- * Purpose: Convert an MPI_Offset value to haddr_t.
- * Return: Success: The haddr_t equivalent of the MPI_OFF argument.
- * Failure: HADDR_UNDEF
- * Programmer: Bill Wendling
- * 30. January 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static haddr_t
-H5FD_fphdf5_MPIOff_to_haddr(MPI_Offset mpi_off)
-{
- haddr_t ret_value;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FD_fphdf5_MPIOff_to_haddr);
- ret_value = (mpi_off != (MPI_Offset)(haddr_t)mpi_off ? HADDR_UNDEF : (haddr_t)mpi_off);
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_fphdf5_haddr_to_MPIOff
- * Purpose: Convert an haddr_t value to MPI_Offset.
- * Return: Success: Non-negative, the MPI_OFF argument contains
- * the converted value.
- * Failure: FAIL, MPI_OFF is undefined.
- * Programmer: Bill Wendling
- * 30. January 2003
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_fphdf5_haddr_to_MPIOff(haddr_t addr, MPI_Offset *mpi_off)
-{
- herr_t ret_value = FAIL;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FD_fphdf5_haddr_to_MPIOff);
-
- if (mpi_off)
- *mpi_off = (MPI_Offset)addr;
-
- ret_value = (addr != (haddr_t)(MPI_Offset)addr ? FAIL : SUCCEED);
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-#endif /* H5_HAVE_FPHDF5 */
diff --git a/src/H5FDfphdf5.h b/src/H5FDfphdf5.h
deleted file mode 100644
index 1e632e0..0000000
--- a/src/H5FDfphdf5.h
+++ /dev/null
@@ -1,127 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#ifndef H5FDFPHDF5_H__
-#define H5FDFPHDF5_H__
-
-#include "H5FDmpio.h"
-#include "H5FDpublic.h" /* for the H5FD_t structure */
-
-#ifdef H5_HAVE_FPHDF5
-# define H5FD_FPHDF5 (H5FD_fphdf5_init())
-#else
-# define H5FD_FPHDF5 (-1)
-#endif /* H5_HAVE_FPHDF5 */
-
-/* Macros */
-
-#ifndef H5_HAVE_FPHDF5
-
-/* If FPHDF5 isn't specified, make this a "FALSE" value */
-#define IS_H5FD_FPHDF5(f) (0)
-
-#else
-
-#define IS_H5FD_FPHDF5(f) (H5F_get_driver_id(f) == H5FD_FPHDF5)
-
-/* Turn on H5FDfphdf5_debug if H5F_DEBUG is on */
-#if defined(H5F_DEBUG) && !defined(H5FDfphdf5_DEBUG)
-# define H5FDfphdf5_DEBUG
-#endif /* H5F_DEBUG && ! H5FDfphdf5_DEBUG */
-
-#define H5FD_FPHDF5_XFER_DUMPING_METADATA "H5FD_fphdf5_dumping_metadata"
-#define H5FD_FPHDF5_XFER_DUMPING_SIZE sizeof(unsigned)
-
-/*
- * For specifying that only the captain is allowed to allocate things at
- * this time.
- */
-#define H5FD_FPHDF5_CAPTN_ALLOC_ONLY "Only_Captain_Alloc"
-#define H5FD_FPHDF5_CAPTN_ALLOC_SIZE sizeof(unsigned)
-
-/*
- * The description of a file belonging to this driver.
- *
- * The FILE_ID field is an SAP defined value. When reading/writing to the
- * SAP, this value should be sent.
- *
- * The EOF field is only used just after the file is opened in order for
- * the library to determine whether the file is empty, truncated, or
- * okay. The FPHDF5 driver doesn't bother to keep it updated since it's
- * an expensive operation.
- */
-typedef struct H5FD_fphdf5_t {
- H5FD_t pub; /*Public stuff, must be first (ick!) */
- unsigned file_id; /*ID used by the SAP */
- MPI_File f; /*MPIO file handle */
- MPI_Comm comm; /*Communicator */
- MPI_Comm barrier_comm; /*Barrier communicator */
- MPI_Info info; /*File information */
- int mpi_rank; /*This process's rank */
- int mpi_size; /*Total number of processes */
- haddr_t eof; /*End-of-file marker */
- haddr_t eoa; /*End-of-address marker */
- haddr_t last_eoa; /*Last known end-of-address marker */
-} H5FD_fphdf5_t;
-
-extern const H5FD_class_t H5FD_fphdf5_g;
-
-/* Function prototypes */
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/*
- *==--------------------------------------------------------------------------==
- * API Functions
- *==--------------------------------------------------------------------------==
- */
-H5_DLL herr_t H5Pset_dxpl_fphdf5(hid_t dxpl_id, H5FD_mpio_xfer_t xfer_mode);
-H5_DLL herr_t H5Pget_dxpl_fphdf5(hid_t dxpl_id, H5FD_mpio_xfer_t *xfer_mode);
-H5_DLL herr_t H5Pset_fapl_fphdf5(hid_t fapl_id, MPI_Comm comm,
- MPI_Comm barrier_comm, MPI_Info info,
- unsigned sap_rank);
-H5_DLL herr_t H5Pget_fapl_fphdf5(hid_t fapl_id, MPI_Comm *comm,
- MPI_Comm *barrier_comm, MPI_Info *info,
- unsigned *sap_rank, unsigned *capt_rank);
-
-/*
- *==--------------------------------------------------------------------------==
- * Private Library Functions
- *==--------------------------------------------------------------------------==
- */
-H5_DLL hid_t H5FD_fphdf5_init(void);
-H5_DLL MPI_Comm H5FD_fphdf5_communicator(H5FD_t *_file);
-H5_DLL MPI_Comm H5FD_fphdf5_barrier_communicator(H5FD_t *_file);
-H5_DLL herr_t H5FD_fphdf5_setup(hid_t dxpl_id, MPI_Datatype btype,
- MPI_Datatype ftype, unsigned use_view);
-H5_DLL herr_t H5FD_fphdf5_teardown(hid_t dxpl_id);
-H5_DLL int H5FD_fphdf5_mpi_rank(H5FD_t *_file);
-H5_DLL int H5FD_fphdf5_mpi_size(H5FD_t *_file);
-H5_DLL unsigned H5FD_fphdf5_file_id(H5FD_t *_file);
-H5_DLL hbool_t H5FD_fphdf5_is_sap(H5FD_t *_file);
-H5_DLL hbool_t H5FD_fphdf5_is_captain(H5FD_t *_file);
-H5_DLL hbool_t H5FD_is_fphdf5_driver(H5FD_t *_file);
-
-H5_DLL herr_t H5FD_fphdf5_write_real(H5FD_t *_file, hid_t dxpl_id,
- MPI_Offset mpi_off, int size,
- const void *buf);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* H5_HAVE_PARALLEL */
-
-#endif /* H5FDFPHDF5_H__ */
diff --git a/src/H5FDgass.c b/src/H5FDgass.c
index dbbc249..fb2c776 100644
--- a/src/H5FDgass.c
+++ b/src/H5FDgass.c
@@ -19,14 +19,19 @@
* Purpose: This is the GASS I/O driver.
*
*/
-#include "H5private.h" /*library functions */
-#include "H5Eprivate.h" /*error handling */
-#include "H5Fprivate.h" /*files */
-#include "H5FDprivate.h" /*file driver */
-#include "H5FDgass.h" /* Core file driver */
-#include "H5Iprivate.h" /*object IDs */
-#include "H5MMprivate.h" /* Memory allocation */
-#include "H5Pprivate.h" /*property lists */
+
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5FD_gass_mask
+
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Fprivate.h" /* Files access */
+#include "H5FDprivate.h" /* File drivers */
+#include "H5FDgass.h" /* GASS file driver */
+#include "H5Iprivate.h" /* IDs */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5Pprivate.h" /* Property lists */
#ifdef H5_HAVE_GASS
@@ -170,11 +175,32 @@ static const H5FD_class_t H5FD_gass_g = {
};
/* Interface initialization */
-#define PABLO_MASK H5FD_gass_mask
-#define INTERFACE_INIT H5FD_gass_init
+#define INTERFACE_INIT H5FD_gass_init_interface
static int interface_initialize_g = 0;
+/*--------------------------------------------------------------------------
+NAME
+ H5FD_gass_init_interface -- Initialize interface-specific information
+USAGE
+ herr_t H5FD_gass_init_interface()
+
+RETURNS
+ Non-negative on success/Negative on failure
+DESCRIPTION
+ Initializes any interface-specific data or routines. (Just calls
+ H5FD_gass_init currently).
+
+--------------------------------------------------------------------------*/
+static herr_t
+H5FD_gass_init_interface(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_gass_init_interface)
+
+ FUNC_LEAVE_NOAPI(H5FD_gass_init())
+} /* H5FD_gass_init_interface() */
+
+
/*-------------------------------------------------------------------------
* Function: H5FD_gass_init
*
@@ -197,10 +223,10 @@ H5FD_gass_init(void)
{
hid_t ret_value=H5FD_GASS_g; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_gass_init, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_gass_init, FAIL)
if (!H5FD_GASS_g)
- H5FD_GASS_g = H5FDregister(&H5FD_gass_g);
+ H5FD_GASS_g = H5FD_register(&H5FD_gass_g,sizeof(H5FD_class_t));
globus_module_activate (GLOBUS_COMMON_MODULE);
globus_module_activate (GLOBUS_GASS_FILE_MODULE);
@@ -209,10 +235,36 @@ H5FD_gass_init(void)
ret_value=H5FD_GASS_g;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
+/*---------------------------------------------------------------------------
+ * Function: H5FD_gass_term
+ *
+ * Purpose: Shut down the VFD
+ *
+ * Return: <none>
+ *
+ * Programmer: Quincey Koziol
+ * Friday, Jan 30, 2004
+ *
+ * Modification:
+ *
+ *---------------------------------------------------------------------------
+ */
+void
+H5FD_gass_term(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_gass_term)
+
+ /* Reset VFL ID */
+ H5FD_GASS_g=0;
+
+ FUNC_LEAVE_NOAPI_VOID
+} /* end H5FD_gass_term() */
+
+
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_gass
*
@@ -248,12 +300,12 @@ H5Pset_fapl_gass(hid_t fapl_id, GASS_Info info)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
- FUNC_ENTER_API(H5Pset_fapl_gass, FAIL);
+ FUNC_ENTER_API(H5Pset_fapl_gass, FAIL)
/*NO TRACE*/
/* Check arguments */
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a property list")
#ifdef LATER
#warning "We need to verify that INFO contain sensible information."
@@ -265,7 +317,7 @@ H5Pset_fapl_gass(hid_t fapl_id, GASS_Info info)
ret_value= H5P_set_driver(plist, H5FD_GASS, &fa);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -301,21 +353,21 @@ H5Pget_fapl_gass(hid_t fapl_id, GASS_Info *info/*out*/)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Pget_fapl_gass, FAIL);
+ FUNC_ENTER_API(H5Pget_fapl_gass, FAIL)
H5TRACE2("e","ix",fapl_id,info);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
if (H5FD_GASS!=H5P_get_driver(plist))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
if (NULL==(fa=H5P_get_driver_info(plist)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info")
if (info)
*info = fa->info;
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -355,23 +407,23 @@ H5FD_gass_open(const char *name, unsigned flags, hid_t fapl_id,
h5_stat_t sb;
H5FD_t *ret_value;
- FUNC_ENTER_NOAPI(H5FD_gass_open, NULL);
+ FUNC_ENTER_NOAPI(H5FD_gass_open, NULL)
/* fprintf(stdout, "Entering H5FD_gass_open name=%s flags=0x%x\n", name, flags); */
/* Check arguments */
if (!name || !*name)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name")
if (0==maxaddr || HADDR_UNDEF==maxaddr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
if (ADDR_OVERFLOW(maxaddr))
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
strcpy (filename, name);
/* Obtain a pointer to gass-specific file access properties */
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
if (H5P_FILE_ACCESS_DEFAULT==fapl_id || H5FD_GASS!=H5P_get_driver(plist)) {
GASS_INFO_NULL (_fa.info);
/* _fa.info = GASS_INFO_NULL; */
@@ -404,37 +456,37 @@ H5FD_gass_open(const char *name, unsigned flags, hid_t fapl_id,
if ((flags & H5F_ACC_CREAT) && (flags & H5F_ACC_RDWR) && (flags & H5F_ACC_EXCL)) {
if ((fd = globus_gass_open (filename, O_RDWR|O_TRUNC)) < 0)
- HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed");
+ HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed")
}
else if ((flags & H5F_ACC_CREAT) && (flags & H5F_ACC_RDWR) && (flags & H5F_ACC_TRUNC)) {
if ((fd = globus_gass_open (filename, O_RDWR|O_TRUNC)) < 0)
- HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed");
+ HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed")
}
else if ((flags & H5F_ACC_RDWR) && (flags & H5F_ACC_TRUNC)) {
if ((fd = globus_gass_open (filename, O_RDWR|O_TRUNC)) < 0)
- HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed");
+ HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed")
}
else if (flags & H5F_ACC_RDWR) {
if ((fd = globus_gass_open (filename, O_RDWR)) < 0)
- HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed");
+ HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed")
}
else { /* This is case where H5F_ACC_RDWR is not set */
if ((fd = globus_gass_open (filename, O_RDONLY)) < 0)
- HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed");
+ HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "open failed")
}
if (HDfstat(fd, &sb)<0) {
close(fd);
- HGOTO_ERROR(H5E_IO, H5E_BADFILE, NULL, "fstat failed");
+ HGOTO_ERROR(H5E_IO, H5E_BADFILE, NULL, "fstat failed")
}
/* Create the new file struct */
if (NULL==(file=H5MM_calloc(sizeof(H5FD_gass_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "can't allocate file struct");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "can't allocate file struct")
file->fd = fd;
file->eof = sb.st_size;
file->pos = HADDR_UNDEF;
@@ -445,7 +497,7 @@ H5FD_gass_open(const char *name, unsigned flags, hid_t fapl_id,
ret_value=(H5FD_t*)file;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -471,18 +523,18 @@ H5FD_gass_close (H5FD_t *_file)
H5FD_gass_t *file = (H5FD_gass_t *)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_gass_close, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_gass_close, FAIL)
if (file == NULL)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid file handle");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid file handle")
if (globus_gass_close (file->fd) < 0)
- HGOTO_ERROR(H5E_IO, H5E_CANTCLOSEFILE, FAIL, "can't close GASS file");
+ HGOTO_ERROR(H5E_IO, H5E_CANTCLOSEFILE, FAIL, "can't close GASS file")
H5MM_xfree(file);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -508,7 +560,7 @@ H5FD_gass_query(const UNUSED H5FD_t *_f, unsigned long *flags /* out */)
{
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_gass_query, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_gass_query, FAIL)
/* Set the VFL feature flags that this driver supports */
if(flags) {
@@ -518,7 +570,7 @@ H5FD_gass_query(const UNUSED H5FD_t *_f, unsigned long *flags /* out */)
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -546,13 +598,13 @@ H5FD_gass_get_eoa(H5FD_t *_file)
H5FD_gass_t *file = (H5FD_gass_t *)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_gass_get_eoa, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_gass_get_eoa, HADDR_UNDEF)
/* Set return value */
ret_value=file->eoa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -578,12 +630,12 @@ H5FD_gass_set_eoa(H5FD_t *_file, haddr_t addr)
H5FD_gass_t *file = (H5FD_gass_t *)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_gass_set_eoa, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_gass_set_eoa, FAIL)
file->eoa = addr;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -613,13 +665,13 @@ H5FD_gass_get_eof(H5FD_t *_file)
H5FD_gass_t *file = (H5FD_gass_t*)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_gass_get_eof, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_gass_get_eof, HADDR_UNDEF)
/* Set return value */
ret_value=MAX(file->eof, file->eoa);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -643,15 +695,15 @@ H5FD_gass_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
H5FD_gass_t *file = (H5FD_gass_t *)_file;
herr_t ret_value = SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_gass_get_handle, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_gass_get_handle, FAIL)
if(!file_handle)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid")
*file_handle = &(file->fd);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -681,25 +733,25 @@ H5FD_gass_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id/*unused*/, h
ssize_t nbytes;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_gass_read, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_gass_read, FAIL)
assert(file && file->pub.cls);
assert(buf);
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "addr undefined");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "addr undefined")
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large")
if (addr+size>file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large")
/* Seek to the correct location */
if ((addr!=file->pos || OP_READ!=file->op) &&
file_seek(file->fd, (file_offset_t)addr, SEEK_SET)<0) {
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "gass file seek failed");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "gass file seek failed")
}
/*
@@ -715,7 +767,7 @@ H5FD_gass_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id/*unused*/, h
/* error */
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "gass file read failed");
+ HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "gass file read failed")
}
if (0==nbytes) {
/* end of file but not end of format address space */
@@ -734,7 +786,7 @@ H5FD_gass_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id/*unused*/, h
file->op = OP_READ;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -763,25 +815,25 @@ H5FD_gass_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id/*unused*/, haddr_t
ssize_t nbytes;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_gass_write, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_gass_write, FAIL)
assert(file && file->pub.cls);
assert(buf);
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "addr undefined");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "addr undefined")
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large")
if (addr+size>file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large")
/* Seek to the correct location */
if ((addr!=file->pos || OP_WRITE!=file->op) &&
file_seek(file->fd, (file_offset_t)addr, SEEK_SET)<0) {
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "gass file seek failed");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "gass file seek failed")
}
/*
@@ -797,7 +849,7 @@ H5FD_gass_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id/*unused*/, haddr_t
/* error */
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
- HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "gass file write failed");
+ HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "gass file write failed")
}
assert(nbytes>0);
assert(nbytes<=size);
@@ -813,7 +865,7 @@ H5FD_gass_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id/*unused*/, haddr_t
file->eof = file->pos;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
#endif /* H5_HAVE_GASS */
diff --git a/src/H5FDgass.h b/src/H5FDgass.h
index 29b78b3..1d599a0 100644
--- a/src/H5FDgass.h
+++ b/src/H5FDgass.h
@@ -55,6 +55,7 @@ extern "C" {
#endif
hid_t H5FD_gass_init(void);
+void H5FD_gass_term(void);
herr_t H5Pset_fapl_gass(hid_t fapl_id, GASS_Info info);
herr_t H5Pget_fapl_gass(hid_t fapl_id, GASS_Info *info/*out*/);
diff --git a/src/H5FDlog.c b/src/H5FDlog.c
index 85bf006..3c46da5 100644
--- a/src/H5FDlog.c
+++ b/src/H5FDlog.c
@@ -25,15 +25,19 @@
* With custom modifications...
*/
-#include "H5private.h" /*library functions */
-#include "H5Eprivate.h" /*error handling */
-#include "H5Fprivate.h" /*files */
-#include "H5FDprivate.h" /*file driver */
-#include "H5FDlog.h" /* logging file driver */
-#include "H5FLprivate.h" /*Free Lists */
-#include "H5Iprivate.h" /*object IDs */
-#include "H5MMprivate.h" /* Memory allocation */
-#include "H5Pprivate.h" /*property lists */
+
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5FD_log_mask
+
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Fprivate.h" /* File access */
+#include "H5FDprivate.h" /* File drivers */
+#include "H5FDlog.h" /* Logging file driver */
+#include "H5Iprivate.h" /* IDs */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5Pprivate.h" /* Property lists */
#ifdef MAX
#undef MAX
@@ -108,8 +112,8 @@ typedef struct H5FD_log_t {
* identifier and the volume serial number to determine whether two
* handles refer to the same file.
*/
- int fileindexlo;
- int fileindexhi;
+ DWORD fileindexlo;
+ DWORD fileindexhi;
#endif
} H5FD_log_t;
@@ -234,11 +238,32 @@ static const H5FD_class_t H5FD_log_g = {
};
/* Interface initialization */
-#define PABLO_MASK H5FD_log_mask
-#define INTERFACE_INIT H5FD_log_init
+#define INTERFACE_INIT H5FD_log_init_interface
static int interface_initialize_g = 0;
+/*--------------------------------------------------------------------------
+NAME
+ H5FD_log_init_interface -- Initialize interface-specific information
+USAGE
+ herr_t H5FD_log_init_interface()
+
+RETURNS
+ Non-negative on success/Negative on failure
+DESCRIPTION
+ Initializes any interface-specific data or routines. (Just calls
+ H5FD_log_init currently).
+
+--------------------------------------------------------------------------*/
+static herr_t
+H5FD_log_init_interface(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_log_init_interface)
+
+ FUNC_LEAVE_NOAPI(H5FD_log_init())
+} /* H5FD_log_init_interface() */
+
+
/*-------------------------------------------------------------------------
* Function: H5FD_log_init
*
@@ -259,20 +284,46 @@ static int interface_initialize_g = 0;
hid_t
H5FD_log_init(void)
{
- hid_t ret_value=H5FD_LOG_g; /* Return value */
+ hid_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_init, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_log_init, FAIL)
if (H5I_VFL!=H5Iget_type(H5FD_LOG_g))
- H5FD_LOG_g = H5FDregister(&H5FD_log_g);
+ H5FD_LOG_g = H5FD_register(&H5FD_log_g,sizeof(H5FD_class_t));
/* Set return value */
ret_value=H5FD_LOG_g;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
+
+/*---------------------------------------------------------------------------
+ * Function: H5FD_log_term
+ *
+ * Purpose: Shut down the VFD
+ *
+ * Return: <none>
+ *
+ * Programmer: Quincey Koziol
+ * Friday, Jan 30, 2004
+ *
+ * Modification:
+ *
+ *---------------------------------------------------------------------------
+ */
+void
+H5FD_log_term(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_log_term)
+
+ /* Reset VFL ID */
+ H5FD_LOG_g=0;
+
+ FUNC_LEAVE_NOAPI_VOID
+} /* end H5FD_log_term() */
+
#ifdef H5_WANT_H5_V1_4_COMPAT
/*-------------------------------------------------------------------------
@@ -302,11 +353,11 @@ H5Pset_fapl_log(hid_t fapl_id, const char *logfile, int verbosity)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
- FUNC_ENTER_API(H5Pset_fapl_log, FAIL);
+ FUNC_ENTER_API(H5Pset_fapl_log, FAIL)
H5TRACE3("e","isIs",fapl_id,logfile,verbosity);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
fa.logfile=logfile;
if(verbosity>0) {
@@ -318,7 +369,7 @@ H5Pset_fapl_log(hid_t fapl_id, const char *logfile, int verbosity)
ret_value= H5P_set_driver(plist, H5FD_LOG, &fa);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
#else /* H5_WANT_H5_V1_4_COMPAT */
@@ -349,11 +400,11 @@ H5Pset_fapl_log(hid_t fapl_id, const char *logfile, unsigned flags, size_t buf_s
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
- FUNC_ENTER_API(H5Pset_fapl_log, FAIL);
+ FUNC_ENTER_API(H5Pset_fapl_log, FAIL)
H5TRACE4("e","isIuz",fapl_id,logfile,flags,buf_size);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
fa.logfile=(char*)logfile;
fa.flags=flags;
@@ -361,7 +412,7 @@ H5Pset_fapl_log(hid_t fapl_id, const char *logfile, unsigned flags, size_t buf_s
ret_value= H5P_set_driver(plist, H5FD_LOG, &fa);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
#endif /* H5_WANT_H5_V1_4_COMPAT */
@@ -391,13 +442,13 @@ H5FD_log_fapl_get(H5FD_t *_file)
H5FD_log_t *file = (H5FD_log_t*)_file;
void *ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_fapl_get, NULL);
+ FUNC_ENTER_NOAPI(H5FD_log_fapl_get, NULL)
/* Set return value */
ret_value= H5FD_log_fapl_copy(&(file->fa));
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_log_fapl_get() */
@@ -424,7 +475,7 @@ H5FD_log_fapl_copy(const void *_old_fa)
H5FD_log_fapl_t *new_fa = H5MM_malloc(sizeof(H5FD_log_fapl_t));
void *ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_fapl_copy, NULL);
+ FUNC_ENTER_NOAPI(H5FD_log_fapl_copy, NULL)
assert(new_fa);
@@ -434,13 +485,13 @@ H5FD_log_fapl_copy(const void *_old_fa)
/* Deep copy the log file name */
if(old_fa->logfile!=NULL)
if (NULL==(new_fa->logfile=HDstrdup(old_fa->logfile)))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate log file name");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate log file name")
/* Set return value */
ret_value=new_fa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_log_fapl_copy() */
@@ -466,7 +517,7 @@ H5FD_log_fapl_free(void *_fa)
H5FD_log_fapl_t *fa = (H5FD_log_fapl_t*)_fa;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_fapl_free, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_log_fapl_free, FAIL)
/* Free the fapl information */
if(fa->logfile)
@@ -474,7 +525,7 @@ H5FD_log_fapl_free(void *_fa)
H5MM_xfree(fa);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_log_fapl_free() */
@@ -507,21 +558,20 @@ H5FD_log_open(const char *name, unsigned flags, hid_t fapl_id,
#ifdef WIN32
HFILE filehandle;
struct _BY_HANDLE_FILE_INFORMATION fileinfo;
- int results;
#endif
h5_stat_t sb;
H5P_genplist_t *plist; /* Property list */
H5FD_t *ret_value;
- FUNC_ENTER_NOAPI(H5FD_log_open, NULL);
+ FUNC_ENTER_NOAPI(H5FD_log_open, NULL)
/* Check arguments */
if (!name || !*name)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name")
if (0==maxaddr || HADDR_UNDEF==maxaddr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
if (ADDR_OVERFLOW(maxaddr))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "bogus maxaddr")
/* Build the open flags */
o_flags = (H5F_ACC_RDWR & flags) ? O_RDWR : O_RDONLY;
@@ -531,26 +581,26 @@ H5FD_log_open(const char *name, unsigned flags, hid_t fapl_id,
/* Open the file */
if ((fd=HDopen(name, o_flags, 0666))<0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file");
+ HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file")
if (HDfstat(fd, &sb)<0)
- HGOTO_ERROR(H5E_FILE, H5E_BADFILE, NULL, "unable to fstat file");
+ HGOTO_ERROR(H5E_FILE, H5E_BADFILE, NULL, "unable to fstat file")
/* Create the new file struct */
if (NULL==(file=H5MM_calloc(sizeof(H5FD_log_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct")
/* Get the driver specific information */
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
fa = H5P_get_driver_info(plist);
file->fd = fd;
- file->eof = sb.st_size;
+ H5_ASSIGN_OVERFLOW(file->eof,sb.st_size,off_t,haddr_t);
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
#ifdef WIN32
filehandle = _get_osfhandle(fd);
- results = GetFileInformationByHandle((HANDLE)filehandle, &fileinfo);
+ (void)GetFileInformationByHandle((HANDLE)filehandle, &fileinfo);
file->fileindexhi = fileinfo.nFileIndexHigh;
file->fileindexlo = fileinfo.nFileIndexLow;
#else
@@ -591,7 +641,7 @@ done:
HDclose(fd);
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_log_open() */
@@ -621,14 +671,14 @@ H5FD_log_close(H5FD_t *_file)
#endif /* H5_HAVE_GETTIMEOFDAY */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_close, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_log_close, FAIL)
#ifdef H5_HAVE_GETTIMEOFDAY
if(file->fa.flags&H5FD_LOG_TIME_CLOSE)
HDgettimeofday(&timeval_start,NULL);
#endif /* H5_HAVE_GETTIMEOFDAY */
if (close(file->fd)<0)
- HGOTO_ERROR(H5E_IO, H5E_CANTCLOSEFILE, FAIL, "unable to close file");
+ HGOTO_ERROR(H5E_IO, H5E_CANTCLOSEFILE, FAIL, "unable to close file")
#ifdef H5_HAVE_GETTIMEOFDAY
if(file->fa.flags&H5FD_LOG_TIME_CLOSE)
HDgettimeofday(&timeval_stop,NULL);
@@ -718,7 +768,7 @@ H5FD_log_close(H5FD_t *_file)
H5MM_xfree(file);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -747,34 +797,34 @@ H5FD_log_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
const H5FD_log_t *f2 = (const H5FD_log_t*)_f2;
int ret_value=0;
- FUNC_ENTER_NOAPI(H5FD_log_cmp, H5FD_VFD_DEFAULT);
+ FUNC_ENTER_NOAPI(H5FD_log_cmp, H5FD_VFD_DEFAULT)
#ifdef WIN32
- if (f1->fileindexhi < f2->fileindexhi) HGOTO_DONE(-1);
- if (f1->fileindexhi > f2->fileindexhi) HGOTO_DONE(1);
+ if (f1->fileindexhi < f2->fileindexhi) HGOTO_DONE(-1)
+ if (f1->fileindexhi > f2->fileindexhi) HGOTO_DONE(1)
- if (f1->fileindexlo < f2->fileindexlo) HGOTO_DONE(-1);
- if (f1->fileindexlo > f2->fileindexlo) HGOTO_DONE(1);
+ if (f1->fileindexlo < f2->fileindexlo) HGOTO_DONE(-1)
+ if (f1->fileindexlo > f2->fileindexlo) HGOTO_DONE(1)
#else
#ifdef H5_DEV_T_IS_SCALAR
- if (f1->device < f2->device) HGOTO_DONE(-1);
- if (f1->device > f2->device) HGOTO_DONE(1);
+ if (f1->device < f2->device) HGOTO_DONE(-1)
+ if (f1->device > f2->device) HGOTO_DONE(1)
#else /* H5_DEV_T_IS_SCALAR */
/* If dev_t isn't a scalar value on this system, just use memcmp to
* determine if the values are the same or not. The actual return value
* shouldn't really matter...
*/
- if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))<0) HGOTO_DONE(-1);
- if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))>0) HGOTO_DONE(1);
+ if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))<0) HGOTO_DONE(-1)
+ if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))>0) HGOTO_DONE(1)
#endif /* H5_DEV_T_IS_SCALAR */
- if (f1->inode < f2->inode) HGOTO_DONE(-1);
- if (f1->inode > f2->inode) HGOTO_DONE(1);
+ if (f1->inode < f2->inode) HGOTO_DONE(-1)
+ if (f1->inode > f2->inode) HGOTO_DONE(1)
#endif
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -795,12 +845,13 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_log_query(const H5FD_t UNUSED * _f, unsigned long *flags /* out */)
{
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_log_query, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_log_query, FAIL)
/* Set the VFL feature flags that this driver supports */
if(flags) {
@@ -812,7 +863,7 @@ H5FD_log_query(const H5FD_t UNUSED * _f, unsigned long *flags /* out */)
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -832,6 +883,7 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static haddr_t
H5FD_log_alloc(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, hsize_t size)
{
@@ -839,7 +891,7 @@ H5FD_log_alloc(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, hsize_t siz
haddr_t addr;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_alloc, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_log_alloc, HADDR_UNDEF)
/* Compute the address for the block to allocate */
addr = file->eoa;
@@ -869,7 +921,7 @@ H5FD_log_alloc(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, hsize_t siz
ret_value=addr;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* H5FD_log_alloc() */
@@ -897,13 +949,13 @@ H5FD_log_get_eoa(H5FD_t *_file)
H5FD_log_t *file = (H5FD_log_t*)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_get_eoa, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_log_get_eoa, HADDR_UNDEF)
/* Set return value */
ret_value=file->eoa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -931,12 +983,12 @@ H5FD_log_set_eoa(H5FD_t *_file, haddr_t addr)
H5FD_log_t *file = (H5FD_log_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_set_eoa, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_log_set_eoa, FAIL)
file->eoa = addr;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -966,13 +1018,13 @@ H5FD_log_get_eof(H5FD_t *_file)
H5FD_log_t *file = (H5FD_log_t*)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_get_eof, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_log_get_eof, HADDR_UNDEF)
/* Set return value */
ret_value=MAX(file->eof, file->eoa);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -990,21 +1042,22 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_log_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
{
H5FD_log_t *file = (H5FD_log_t *)_file;
herr_t ret_value = SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_log_get_handle, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_log_get_handle, FAIL)
if(!file_handle)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid")
*file_handle = &(file->fd);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1027,6 +1080,7 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_log_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr_t addr,
size_t size, void *buf/*out*/)
@@ -1035,18 +1089,18 @@ H5FD_log_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr
ssize_t nbytes;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_read, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_log_read, FAIL)
assert(file && file->pub.cls);
assert(buf);
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined")
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
if (addr+size>file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
/* Log the I/O information about the read */
if(file->fa.flags!=0) {
@@ -1081,7 +1135,7 @@ H5FD_log_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr
file_seek(file->fd, (file_offset_t)addr, SEEK_SET)<0) {
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
}
/*
@@ -1096,7 +1150,7 @@ H5FD_log_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr
/* error */
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed");
+ HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed")
}
if (0==nbytes) {
/* end of file but not end of format address space */
@@ -1105,7 +1159,9 @@ H5FD_log_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr
}
assert(nbytes>=0);
assert((size_t)nbytes<=size);
- size -= nbytes;
+ H5_CHECK_OVERFLOW(nbytes,ssize_t,size_t);
+ size -= (size_t)nbytes;
+ H5_CHECK_OVERFLOW(nbytes,ssize_t,haddr_t);
addr += (haddr_t)nbytes;
buf = (char*)buf + nbytes;
}
@@ -1115,7 +1171,7 @@ H5FD_log_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr
file->op = OP_READ;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1137,6 +1193,7 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t addr,
size_t size, const void *buf)
@@ -1151,7 +1208,7 @@ H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t add
#endif /* H5_HAVE_GETTIMEOFDAY */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_write, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_log_write, FAIL)
assert(file && file->pub.cls);
assert(size>0);
@@ -1163,11 +1220,11 @@ H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t add
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined")
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
if (addr+size>file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
/* Log the I/O information about the write */
if(file->fa.flags&H5FD_LOG_FILE_WRITE) {
@@ -1188,7 +1245,7 @@ H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t add
if(file_seek(file->fd, (file_offset_t)addr, SEEK_SET)<0) {
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
} /* end if */
#ifdef H5_HAVE_GETTIMEOFDAY
if(file->fa.flags&H5FD_LOG_TIME_SEEK)
@@ -1235,11 +1292,13 @@ H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t add
file->op = OP_UNKNOWN;
if(file->fa.flags&H5FD_LOG_LOC_WRITE)
HDfprintf(file->logfp,"Error! Writing: %10a-%10a (%10Zu bytes)\n",orig_addr,orig_addr+orig_size-1,orig_size);
- HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed");
+ HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed")
}
assert(nbytes>0);
assert((size_t)nbytes<=size);
- size -= nbytes;
+ H5_CHECK_OVERFLOW(nbytes,ssize_t,size_t);
+ size -= (size_t)nbytes;
+ H5_CHECK_OVERFLOW(nbytes,ssize_t,haddr_t);
addr += (haddr_t)nbytes;
buf = (const char*)buf + nbytes;
}
@@ -1287,7 +1346,7 @@ H5FD_log_write(H5FD_t *_file, H5FD_mem_t type, hid_t UNUSED dxpl_id, haddr_t add
file->eof = file->pos;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1308,24 +1367,25 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_log_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing)
{
H5FD_log_t *file = (H5FD_log_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_log_flush, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_log_flush, FAIL)
if (file->eoa>file->eof) {
if (-1==file_seek(file->fd, (file_offset_t)(file->eoa-1), SEEK_SET))
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
if (write(file->fd, "", 1)!=1)
- HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed");
+ HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed")
file->eof = file->eoa;
file->pos = file->eoa;
file->op = OP_WRITE;
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
diff --git a/src/H5FDlog.h b/src/H5FDlog.h
index 569220a..2380e2e 100644
--- a/src/H5FDlog.h
+++ b/src/H5FDlog.h
@@ -58,6 +58,7 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_log_init(void);
+H5_DLL void H5FD_log_term(void);
#ifdef H5_WANT_H5_V1_4_COMPAT
H5_DLL herr_t H5Pset_fapl_log(hid_t fapl_id, const char *logfile, int verbosity);
#else /* H5_WANT_H5_V1_4_COMPAT */
diff --git a/src/H5FDmpi.c b/src/H5FDmpi.c
index e738a82..6afc65c 100644
--- a/src/H5FDmpi.c
+++ b/src/H5FDmpi.c
@@ -38,6 +38,10 @@ char H5FD_mpi_native_g[] = "native";
#ifdef H5_HAVE_PARALLEL
+/* Interface initialization */
+#define INTERFACE_INIT NULL
+static int interface_initialize_g = 0;
+
/*-------------------------------------------------------------------------
* Function: H5FD_mpi_get_rank
diff --git a/src/H5FDmpi.h b/src/H5FDmpi.h
index aac7bf6..0dd9362 100644
--- a/src/H5FDmpi.h
+++ b/src/H5FDmpi.h
@@ -39,7 +39,6 @@ typedef struct H5FD_class_mpi_t {
#endif /* H5_HAVE_PARALLEL */
/* Include all the MPI VFL headers */
-#include "H5FDfphdf5.h" /* Flexible PHDF5 file driver */
#include "H5FDmpio.h" /* MPI I/O file driver */
#include "H5FDmpiposix.h" /* MPI/posix I/O file driver */
@@ -47,7 +46,7 @@ typedef struct H5FD_class_mpi_t {
/* Single macro to check for all file drivers that use MPI */
#define IS_H5FD_MPI(file) \
- (IS_H5FD_MPIO(file) || IS_H5FD_MPIPOSIX(file) || IS_H5FD_FPHDF5(file))
+ (IS_H5FD_MPIO(file) || IS_H5FD_MPIPOSIX(file))
#ifdef H5_HAVE_PARALLEL
/* ======== Temporary data transfer properties ======== */
diff --git a/src/H5FDmpio.c b/src/H5FDmpio.c
index 7cf6677..2fb7285 100644
--- a/src/H5FDmpio.c
+++ b/src/H5FDmpio.c
@@ -19,16 +19,21 @@
* Purpose: This is the MPI-2 I/O driver.
*
*/
-#include "H5private.h" /*library functions */
-#include "H5ACprivate.h" /* Metadata cache */
+
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5FD_mpio_mask
+
+#include "H5private.h" /* Generic Functions */
+#include "H5ACprivate.h" /* Metadata cache */
#include "H5Dprivate.h" /* Dataset functions */
-#include "H5Eprivate.h" /*error handling */
-#include "H5Fprivate.h" /*files */
-#include "H5FDprivate.h" /*file driver */
-#include "H5FDmpio.h" /* MPI I/O file driver */
-#include "H5Iprivate.h" /*object IDs */
-#include "H5MMprivate.h" /* Memory allocation */
-#include "H5Pprivate.h" /*property lists */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Fprivate.h" /* File access */
+#include "H5FDprivate.h" /* File drivers */
+#include "H5FDmpi.h" /* MPI-based file drivers */
+#include "H5Iprivate.h" /* IDs */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5Pprivate.h" /* Property lists */
#ifdef H5_HAVE_PARALLEL
@@ -57,9 +62,7 @@ typedef struct H5FD_mpio_t {
haddr_t last_eoa; /* Last known end-of-address marker */
} H5FD_mpio_t;
-/* Prototypes */
-static haddr_t H5FD_mpio_MPIOff_to_haddr(MPI_Offset mpi_off);
-static herr_t H5FD_mpio_haddr_to_MPIOff(haddr_t addr, MPI_Offset *mpi_off/*out*/);
+/* Private Prototypes */
/* Callbacks */
static void *H5FD_mpio_fapl_get(H5FD_t *_file);
@@ -78,9 +81,9 @@ static herr_t H5FD_mpio_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, hadd
static herr_t H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
size_t size, const void *buf);
static herr_t H5FD_mpio_flush(H5FD_t *_file, hid_t dxpl_id, unsigned closing);
-static herr_t H5FD_mpio_comm_info_dup(MPI_Comm comm, MPI_Info info,
- MPI_Comm *comm_new, MPI_Info *info_new);
-static herr_t H5FD_mpio_comm_info_free(MPI_Comm *comm, MPI_Info *info);
+static int H5FD_mpio_mpi_rank(const H5FD_t *_file);
+static int H5FD_mpio_mpi_size(const H5FD_t *_file);
+static MPI_Comm H5FD_mpio_communicator(const H5FD_t *_file);
/* MPIO-specific file access properties */
typedef struct H5FD_mpio_fapl_t {
@@ -89,7 +92,8 @@ typedef struct H5FD_mpio_fapl_t {
} H5FD_mpio_fapl_t;
/* The MPIO file driver information */
-static const H5FD_class_t H5FD_mpio_g = {
+static const H5FD_class_mpi_t H5FD_mpio_g = {
+ { /* Start of superclass information */
"mpio", /*name */
HADDR_MAX, /*maxaddr */
H5F_CLOSE_SEMI, /* fc_degree */
@@ -119,6 +123,10 @@ static const H5FD_class_t H5FD_mpio_g = {
NULL, /*lock */
NULL, /*unlock */
H5FD_FLMAP_SINGLE /*fl_map */
+ }, /* End of superclass information */
+ H5FD_mpio_mpi_rank, /*get_rank */
+ H5FD_mpio_mpi_size, /*get_size */
+ H5FD_mpio_communicator /*get_comm */
};
#ifdef H5FDmpio_DEBUG
@@ -142,17 +150,30 @@ static int H5FD_mpio_Debug[256] =
#endif
/* Interface initialization */
-#define PABLO_MASK H5FD_mpio_mask
-#define INTERFACE_INIT H5FD_mpio_init
+#define INTERFACE_INIT H5FD_mpio_init_interface
static int interface_initialize_g = 0;
-/* ======== Temporary, Local data transfer properties ======== */
-/* Definitions for memory MPI type property */
-#define H5FD_MPIO_XFER_MEM_MPI_TYPE_NAME "H5FD_mpio_mem_mpi_type"
-#define H5FD_MPIO_XFER_MEM_MPI_TYPE_SIZE sizeof(MPI_Datatype)
-/* Definitions for file MPI type property */
-#define H5FD_MPIO_XFER_FILE_MPI_TYPE_NAME "H5FD_mpio_file_mpi_type"
-#define H5FD_MPIO_XFER_FILE_MPI_TYPE_SIZE sizeof(MPI_Datatype)
+
+/*--------------------------------------------------------------------------
+NAME
+ H5FD_mpio_init_interface -- Initialize interface-specific information
+USAGE
+ herr_t H5FD_mpio_init_interface()
+
+RETURNS
+ Non-negative on success/Negative on failure
+DESCRIPTION
+ Initializes any interface-specific data or routines. (Just calls
+ H5FD_mpio_init currently).
+
+--------------------------------------------------------------------------*/
+static herr_t
+H5FD_mpio_init_interface(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_mpio_init_interface)
+
+ FUNC_LEAVE_NOAPI(H5FD_mpio_init())
+} /* H5FD_mpio_init_interface() */
/*-------------------------------------------------------------------------
@@ -180,10 +201,10 @@ H5FD_mpio_init(void)
#endif /* H5FDmpio_DEBUG */
hid_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpio_init, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_init, FAIL)
if (H5I_VFL!=H5I_get_type(H5FD_MPIO_g))
- H5FD_MPIO_g = H5FDregister(&H5FD_mpio_g);
+ H5FD_MPIO_g = H5FD_register((const H5FD_class_t *)&H5FD_mpio_g,sizeof(H5FD_class_mpi_t));
#ifdef H5FDmpio_DEBUG
if (!H5FD_mpio_Debug_inited)
@@ -205,10 +226,36 @@ H5FD_mpio_init(void)
ret_value=H5FD_MPIO_g;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
+/*---------------------------------------------------------------------------
+ * Function: H5FD_mpio_term
+ *
+ * Purpose: Shut down the VFD
+ *
+ * Return: <none>
+ *
+ * Programmer: Quincey Koziol
+ * Friday, Jan 30, 2004
+ *
+ * Modification:
+ *
+ *---------------------------------------------------------------------------
+ */
+void
+H5FD_mpio_term(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_mpio_term)
+
+ /* Reset VFL ID */
+ H5FD_MPIO_g=0;
+
+ FUNC_LEAVE_NOAPI_VOID
+} /* end H5FD_mpio_term() */
+
+
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_mpio
*
@@ -275,17 +322,17 @@ H5Pset_fapl_mpio(hid_t fapl_id, MPI_Comm comm, MPI_Info info)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
- FUNC_ENTER_API(H5Pset_fapl_mpio, FAIL);
+ FUNC_ENTER_API(H5Pset_fapl_mpio, FAIL)
H5TRACE3("e","iMcMi",fapl_id,comm,info);
if(fapl_id==H5P_DEFAULT)
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "can't set values in default property list");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "can't set values in default property list")
/* Check arguments */
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list")
if (MPI_COMM_NULL == comm)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a valid communicator");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a valid communicator")
/* Initialize driver specific properties */
fa.comm = comm;
@@ -295,7 +342,7 @@ H5Pset_fapl_mpio(hid_t fapl_id, MPI_Comm comm, MPI_Info info)
ret_value= H5P_set_driver(plist, H5FD_MPIO, &fa);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -346,15 +393,15 @@ H5Pget_fapl_mpio(hid_t fapl_id, MPI_Comm *comm/*out*/, MPI_Info *info/*out*/)
int mpi_code; /* mpi return code */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Pget_fapl_mpio, FAIL);
+ FUNC_ENTER_API(H5Pget_fapl_mpio, FAIL)
H5TRACE3("e","ixx",fapl_id,comm,info);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list")
if (H5FD_MPIO!=H5P_get_driver(plist))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
if (NULL==(fa=H5P_get_driver_info(plist)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info")
/* Store the duplicated communicator in a temporary variable for error */
/* recovery in case the INFO duplication fails. We cannot attempt to */
@@ -362,13 +409,13 @@ H5Pget_fapl_mpio(hid_t fapl_id, MPI_Comm *comm/*out*/, MPI_Info *info/*out*/)
/* up freeing whatever *comm holds and that could be invalid. */
if (comm){
if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(fa->comm, &comm_tmp)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_dup failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_Comm_dup failed", mpi_code)
}
if (info){
if (MPI_INFO_NULL != fa->info){
if (MPI_SUCCESS != (mpi_code=MPI_Info_dup(fa->info, info)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Info_dup failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_Info_dup failed", mpi_code)
}else{
/* do not dup it */
*info = MPI_INFO_NULL;
@@ -384,7 +431,7 @@ done:
if (comm_tmp != MPI_COMM_NULL)
MPI_Comm_free(&comm_tmp);
}
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -420,27 +467,27 @@ H5Pset_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t xfer_mode)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
- FUNC_ENTER_API(H5Pset_dxpl_mpio, FAIL);
+ FUNC_ENTER_API(H5Pset_dxpl_mpio, FAIL)
H5TRACE2("e","iDt",dxpl_id,xfer_mode);
if(dxpl_id==H5P_DEFAULT)
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "can't set values in default property list");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "can't set values in default property list")
/* Check arguments */
if(NULL == (plist = H5P_object_verify(dxpl_id,H5P_DATASET_XFER)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dxpl");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dxpl")
if (H5FD_MPIO_INDEPENDENT!=xfer_mode && H5FD_MPIO_COLLECTIVE!=xfer_mode)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "incorrect xfer_mode");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "incorrect xfer_mode")
/* Set the transfer mode */
if (H5P_set(plist,H5D_XFER_IO_XFER_MODE_NAME,&xfer_mode)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to set value")
/* Initialize driver-specific properties */
ret_value= H5P_set_driver(plist, H5FD_MPIO, NULL);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -470,319 +517,21 @@ H5Pget_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t *xfer_mode/*out*/)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Pget_dxpl_mpio, FAIL);
+ FUNC_ENTER_API(H5Pget_dxpl_mpio, FAIL)
H5TRACE2("e","ix",dxpl_id,xfer_mode);
if(NULL == (plist = H5P_object_verify(dxpl_id,H5P_DATASET_XFER)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dxpl");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dxpl")
if (H5FD_MPIO!=H5P_get_driver(plist))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
/* Get the transfer mode */
if (xfer_mode)
if (H5P_get(plist,H5D_XFER_IO_XFER_MODE_NAME,xfer_mode)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to get value");
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_communicator
- *
- * Purpose: Returns the MPI communicator for the file.
- *
- * Return: Success: The communicator
- *
- * Failure: NULL
- *
- * Programmer: Robb Matzke
- * Monday, August 9, 1999
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-MPI_Comm
-H5FD_mpio_communicator(H5FD_t *_file)
-{
- H5FD_mpio_t *file = (H5FD_mpio_t*)_file;
- MPI_Comm ret_value; /* Return value */
-
- FUNC_ENTER_NOAPI(H5FD_mpio_communicator, MPI_COMM_NULL);
-
- assert(file);
- assert(H5FD_MPIO==file->pub.driver_id);
-
- /* Set return value */
- ret_value=file->comm;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_mpi_rank
- *
- * Purpose: Returns the MPI rank for a process
- *
- * Return: Success: non-negative
- * Failure: negative
- *
- * Programmer: Quincey Koziol
- * Thursday, May 16, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-int
-H5FD_mpio_mpi_rank(H5FD_t *_file)
-{
- H5FD_mpio_t *file = (H5FD_mpio_t*)_file;
- int ret_value; /* Return value */
-
- FUNC_ENTER_NOAPI(H5FD_mpio_mpi_rank, FAIL);
-
- assert(file);
- assert(H5FD_MPIO==file->pub.driver_id);
-
- /* Set return value */
- ret_value=file->mpi_rank;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-} /* end H5FD_mpio_mpi_rank() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_mpi_size
- *
- * Purpose: Returns the number of MPI processes
- *
- * Return: Success: non-negative
- * Failure: negative
- *
- * Programmer: Quincey Koziol
- * Thursday, May 16, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-int
-H5FD_mpio_mpi_size(H5FD_t *_file)
-{
- H5FD_mpio_t *file = (H5FD_mpio_t*)_file;
- int ret_value; /* Return value */
-
- FUNC_ENTER_NOAPI(H5FD_mpio_mpi_size, FAIL);
-
- assert(file);
- assert(H5FD_MPIO==file->pub.driver_id);
-
- /* Set return value */
- ret_value=file->mpi_size;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-} /* end H5FD_mpio_mpi_size() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_setup
- *
- * Purpose: Set the buffer type BTYPE, file type FTYPE for a data
- * transfer. Also request a MPI type transfer.
- *
- * Return: Success: 0
- * Failure: -1
- *
- * Programmer: Robb Matzke
- * Monday, August 9, 1999
- *
- * Modifications:
- *
- * Quincey Koziol - 2002/06/17
- * Removed 'disp' parameter, read & write routines will use
- * the address of the dataset in MPI_File_set_view() calls, as
- * necessary.
- *
- * Quincey Koziol - 2002/06/17
- * Changed to set temporary properties in a dxpl, instead of
- * flags in the file struct, which will make this more threadsafe.
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5FD_mpio_setup(hid_t dxpl_id, MPI_Datatype btype, MPI_Datatype ftype)
-{
- H5P_genplist_t *plist; /* Property list pointer */
- herr_t ret_value=SUCCEED; /* Return value */
-
- FUNC_ENTER_NOAPI(H5FD_mpio_setup, FAIL);
-
- /* Check arguments */
- if(NULL == (plist = H5P_object_verify(dxpl_id,H5P_DATASET_XFER)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dataset transfer list");
-
- /* Set buffer MPI type */
- if(H5P_insert(plist,H5FD_MPIO_XFER_MEM_MPI_TYPE_NAME,H5FD_MPIO_XFER_MEM_MPI_TYPE_SIZE,&btype,NULL,NULL,NULL,NULL,NULL,NULL)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert MPI-I/O property");
-
- /* Set file MPI type */
- if(H5P_insert(plist,H5FD_MPIO_XFER_FILE_MPI_TYPE_NAME,H5FD_MPIO_XFER_FILE_MPI_TYPE_SIZE,&ftype,NULL,NULL,NULL,NULL,NULL,NULL)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert MPI-I/O property");
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_teardown
- *
- * Purpose: Remove the temporary MPI-I/O properties from dxpl.
- *
- * Return: Success: Non-negative
- * Failure: Negative
- *
- * Programmer: Quincey Koziol
- * Monday, June 17, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-herr_t
-H5FD_mpio_teardown(hid_t dxpl_id)
-{
- H5P_genplist_t *plist; /* Property list pointer */
- herr_t ret_value=SUCCEED; /* Return value */
-
- FUNC_ENTER_NOAPI(H5FD_mpio_teardown, FAIL);
-
- /* Check arguments */
- if(NULL == (plist = H5P_object_verify(dxpl_id,H5P_DATASET_XFER)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dataset transfer list");
-
- /* Remove buffer MPI type */
- if(H5P_remove(dxpl_id,plist,H5FD_MPIO_XFER_MEM_MPI_TYPE_NAME)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTDELETE, FAIL, "can't remove MPI-I/O property");
-
- /* Remove file MPI type */
- if(H5P_remove(dxpl_id,plist,H5FD_MPIO_XFER_FILE_MPI_TYPE_NAME)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTDELETE, FAIL, "can't remove MPI-I/O property");
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_wait_for_left_neighbor
- *
- * Purpose: Blocks until (empty) msg is received from immediately
- * lower-rank neighbor. In conjunction with
- * H5FD_mpio_signal_right_neighbor, useful for enforcing
- * 1-process-at-at-time access to critical regions to avoid race
- * conditions (though it is overkill to require that the
- * processes be allowed to proceed strictly in order of their
- * rank).
- *
- * Note: This routine doesn't read or write any file, just performs
- * interprocess coordination. It really should reside in a
- * separate package of such routines.
- *
- * Return: Success: 0
- * Failure: -1
- *
- * Programmer: rky
- * 19981207
- *
- * Modifications:
- * Robb Matzke, 1999-08-09
- * Modified to work with the virtual file layer.
- *-------------------------------------------------------------------------
- */
-herr_t
-H5FD_mpio_wait_for_left_neighbor(H5FD_t *_file)
-{
- H5FD_mpio_t *file = (H5FD_mpio_t*)_file;
- char msgbuf[1];
- MPI_Status rcvstat;
- int mpi_code; /* mpi return code */
- herr_t ret_value=SUCCEED; /* Return value */
-
- FUNC_ENTER_NOAPI(H5FD_mpio_wait_for_left_neighbor, FAIL);
-
- assert(file);
- assert(H5FD_MPIO==file->pub.driver_id);
-
- /* Portably initialize MPI status variable */
- HDmemset(&rcvstat,0,sizeof(MPI_Status));
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "unable to get value")
- /* p0 has no left neighbor; all other procs wait for msg */
- if (file->mpi_rank != 0) {
- if (MPI_SUCCESS != (mpi_code=MPI_Recv( &msgbuf, 1, MPI_CHAR,
- file->mpi_rank-1, MPI_ANY_TAG, file->comm, &rcvstat )))
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mpi_code);
- }
-
done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_signal_right_neighbor
- *
- * Purpose: Blocks until (empty) msg is received from immediately
- * lower-rank neighbor. In conjunction with
- * H5FD_mpio_wait_for_left_neighbor, useful for enforcing
- * 1-process-at-at-time access to critical regions to avoid race
- * conditions (though it is overkill to require that the
- * processes be allowed to proceed strictly in order of their
- * rank).
- *
- * Note: This routine doesn't read or write any file, just performs
- * interprocess coordination. It really should reside in a
- * separate package of such routines.
- *
- * Return: Success: 0
- * Failure: -1
- *
- * Programmer: rky
- * 19981207
- *
- * Modifications:
- * Robb Matzke, 1999-08-09
- * Modified to work with the virtual file layer.
- *-------------------------------------------------------------------------
- */
-herr_t
-H5FD_mpio_signal_right_neighbor(H5FD_t *_file)
-{
- H5FD_mpio_t *file = (H5FD_mpio_t*)_file;
- char msgbuf[1];
- int mpi_code; /* mpi return code */
- herr_t ret_value=SUCCEED; /* Return value */
-
- FUNC_ENTER_NOAPI(H5FD_mpio_signal_right_neighbor, FAIL);
-
- assert(file);
- assert(H5FD_MPIO==file->pub.driver_id);
-
- if (file->mpi_rank != (file->mpi_size-1)) {
- if (MPI_SUCCESS != (mpi_code=MPI_Send(&msgbuf, 0/*empty msg*/, MPI_CHAR,
- file->mpi_rank+1, 0, file->comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mpi_code);
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -813,25 +562,24 @@ H5FD_mpio_fapl_get(H5FD_t *_file)
H5FD_mpio_fapl_t *fa = NULL;
void *ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpio_fapl_get, NULL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_fapl_get, NULL)
assert(file);
assert(H5FD_MPIO==file->pub.driver_id);
if (NULL==(fa=H5MM_calloc(sizeof(H5FD_mpio_fapl_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
/* Duplicate communicator and Info object. */
- if (FAIL==H5FD_mpio_comm_info_dup(file->comm, file->info,
+ if (FAIL==H5FD_mpi_comm_info_dup(file->comm, file->info,
&fa->comm, &fa->info))
- HGOTO_ERROR(H5E_INTERNAL, H5E_CANTCOPY, NULL,
- "Communicator/Info duplicate failed");
+ HGOTO_ERROR(H5E_INTERNAL, H5E_CANTCOPY, NULL, "Communicator/Info duplicate failed")
/* Set return value */
ret_value=fa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -858,23 +606,22 @@ H5FD_mpio_fapl_copy(const void *_old_fa)
const H5FD_mpio_fapl_t *old_fa = (const H5FD_mpio_fapl_t*)_old_fa;
H5FD_mpio_fapl_t *new_fa = NULL;
- FUNC_ENTER_NOAPI(H5FD_mpio_fapl_copy, NULL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_fapl_copy, NULL)
#ifdef H5FDmpio_DEBUG
if (H5FD_mpio_Debug[(int)'t'])
fprintf(stderr, "enter H5FD_mpio_fapl_copy\n");
#endif
if (NULL==(new_fa=H5MM_malloc(sizeof(H5FD_mpio_fapl_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
/* Copy the general information */
HDmemcpy(new_fa, old_fa, sizeof(H5FD_mpio_fapl_t));
/* Duplicate communicator and Info object. */
- if (FAIL==H5FD_mpio_comm_info_dup(old_fa->comm, old_fa->info,
+ if (FAIL==H5FD_mpi_comm_info_dup(old_fa->comm, old_fa->info,
&new_fa->comm, &new_fa->info))
- HGOTO_ERROR(H5E_INTERNAL, H5E_CANTCOPY, NULL,
- "Communicator/Info duplicate failed");
+ HGOTO_ERROR(H5E_INTERNAL, H5E_CANTCOPY, NULL, "Communicator/Info duplicate failed")
ret_value = new_fa;
done:
@@ -888,7 +635,7 @@ done:
if (H5FD_mpio_Debug[(int)'t'])
fprintf(stderr, "leaving H5FD_mpio_fapl_copy\n");
#endif
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpio_fapl_copy() */
@@ -914,7 +661,7 @@ H5FD_mpio_fapl_free(void *_fa)
herr_t ret_value = SUCCEED;
H5FD_mpio_fapl_t *fa = (H5FD_mpio_fapl_t*)_fa;
- FUNC_ENTER_NOAPI(H5FD_mpio_fapl_free, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_fapl_free, FAIL)
#ifdef H5FDmpio_DEBUG
if (H5FD_mpio_Debug[(int)'t'])
fprintf(stderr, "in H5FD_mpio_fapl_free\n");
@@ -923,7 +670,7 @@ fprintf(stderr, "in H5FD_mpio_fapl_free\n");
/* Free the internal communicator and INFO object */
assert(MPI_COMM_NULL!=fa->comm);
- H5FD_mpio_comm_info_free(&fa->comm, &fa->info);
+ H5FD_mpi_comm_info_free(&fa->comm, &fa->info);
H5MM_xfree(fa);
done:
@@ -931,7 +678,7 @@ done:
if (H5FD_mpio_Debug[(int)'t'])
fprintf(stderr, "leaving H5FD_mpio_fapl_free\n");
#endif
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpio_fapl_free() */
@@ -999,7 +746,7 @@ H5FD_mpio_open(const char *name, unsigned flags, hid_t fapl_id,
MPI_Info info_dup=MPI_INFO_NULL;
H5FD_t *ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpio_open, NULL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_open, NULL)
#ifdef H5FDmpio_DEBUG
if (H5FD_mpio_Debug[(int)'t']) {
@@ -1010,7 +757,7 @@ H5FD_mpio_open(const char *name, unsigned flags, hid_t fapl_id,
/* Obtain a pointer to mpio-specific file access properties */
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
if (H5P_FILE_ACCESS_DEFAULT==fapl_id || H5FD_MPIO!=H5P_get_driver(plist)) {
_fa.comm = MPI_COMM_SELF; /*default*/
_fa.info = MPI_INFO_NULL; /*default*/
@@ -1021,9 +768,8 @@ H5FD_mpio_open(const char *name, unsigned flags, hid_t fapl_id,
}
/* Duplicate communicator and Info object for use by this file. */
- if (FAIL==H5FD_mpio_comm_info_dup(fa->comm, fa->info, &comm_dup, &info_dup))
- HGOTO_ERROR(H5E_INTERNAL, H5E_CANTCOPY, NULL,
- "Communicator/Info duplicate failed");
+ if (FAIL==H5FD_mpi_comm_info_dup(fa->comm, fa->info, &comm_dup, &info_dup))
+ HGOTO_ERROR(H5E_INTERNAL, H5E_CANTCOPY, NULL, "Communicator/Info duplicate failed")
/* convert HDF5 flags to MPI-IO flags */
/* some combinations are illegal; let MPI-IO figure it out */
@@ -1037,7 +783,8 @@ H5FD_mpio_open(const char *name, unsigned flags, hid_t fapl_id,
char debug_str[128];
int flag, i;
if (MPI_INFO_NULL != info_dup) {
- MPI_Info_get(fa->info, H5F_MPIO_DEBUG_KEY, 127, debug_str, &flag);
+ /*OKAY: CAST DISCARDS CONST*/
+ MPI_Info_get(fa->info, (char *)H5F_MPIO_DEBUG_KEY, 127, debug_str, &flag);
if (flag) {
fprintf(stdout, "H5FD_mpio debug flags=%s\n", debug_str );
for (i=0;
@@ -1052,18 +799,18 @@ H5FD_mpio_open(const char *name, unsigned flags, hid_t fapl_id,
/*OKAY: CAST DISCARDS CONST*/
if (MPI_SUCCESS != (mpi_code=MPI_File_open(comm_dup, (char*)name, mpi_amode, info_dup, &fh)))
- HMPI_GOTO_ERROR(NULL, "MPI_File_open failed", mpi_code);
+ HMPI_GOTO_ERROR(NULL, "MPI_File_open failed", mpi_code)
file_opened=1;
/* Get the MPI rank of this process and the total number of processes */
if (MPI_SUCCESS != (mpi_code=MPI_Comm_rank (comm_dup, &mpi_rank)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_rank failed", mpi_code);
+ HMPI_GOTO_ERROR(NULL, "MPI_Comm_rank failed", mpi_code)
if (MPI_SUCCESS != (mpi_code=MPI_Comm_size (comm_dup, &mpi_size)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_size failed", mpi_code);
+ HMPI_GOTO_ERROR(NULL, "MPI_Comm_size failed", mpi_code)
/* Build the return value and initialize it */
if (NULL==(file=H5MM_calloc(sizeof(H5FD_mpio_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
file->f = fh;
file->comm = comm_dup;
file->info = info_dup;
@@ -1077,7 +824,7 @@ H5FD_mpio_open(const char *name, unsigned flags, hid_t fapl_id,
HMPI_GOTO_ERROR(NULL, "MPI_File_get_size failed", mpi_code)
} /* end if */
- /* Broadcast file-size */
+ /* Broadcast file size */
if (MPI_SUCCESS != (mpi_code=MPI_Bcast(&size, sizeof(MPI_Offset), MPI_BYTE, 0, comm_dup)))
HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mpi_code)
@@ -1095,7 +842,7 @@ H5FD_mpio_open(const char *name, unsigned flags, hid_t fapl_id,
} /* end if */
/* Set the size of the file (from library's perspective) */
- file->eof = H5FD_mpio_MPIOff_to_haddr(size);
+ file->eof = H5FD_mpi_MPIOff_to_haddr(size);
/* Set return value */
ret_value=(H5FD_t*)file;
@@ -1116,7 +863,7 @@ done:
if (H5FD_mpio_Debug[(int)'t'])
fprintf(stdout, "Leaving H5FD_mpio_open\n" );
#endif
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1150,7 +897,7 @@ H5FD_mpio_close(H5FD_t *_file)
int mpi_code; /* MPI return code */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpio_close, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_close, FAIL)
#ifdef H5FDmpio_DEBUG
if (H5FD_mpio_Debug[(int)'t'])
@@ -1161,10 +908,10 @@ H5FD_mpio_close(H5FD_t *_file)
/* MPI_File_close sets argument to MPI_FILE_NULL */
if (MPI_SUCCESS != (mpi_code=MPI_File_close(&(file->f)/*in,out*/)))
- HMPI_GOTO_ERROR(FAIL, "MPI_File_close failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_File_close failed", mpi_code)
/* Clean up other stuff */
- H5FD_mpio_comm_info_free(&file->comm, &file->info);
+ H5FD_mpi_comm_info_free(&file->comm, &file->info);
H5MM_xfree(file);
done:
@@ -1172,7 +919,7 @@ done:
if (H5FD_mpio_Debug[(int)'t'])
fprintf(stdout, "Leaving H5FD_mpio_close\n");
#endif
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1198,7 +945,7 @@ H5FD_mpio_query(const H5FD_t UNUSED *_file, unsigned long *flags /* out */)
{
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_mpio_query, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_query, FAIL)
/* Set the VFL feature flags that this driver supports */
if(flags) {
@@ -1217,7 +964,7 @@ H5FD_mpio_query(const H5FD_t UNUSED *_file, unsigned long *flags /* out */)
} /* end if */
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1245,7 +992,7 @@ H5FD_mpio_get_eoa(H5FD_t *_file)
H5FD_mpio_t *file = (H5FD_mpio_t*)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpio_get_eoa, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_mpio_get_eoa, HADDR_UNDEF)
assert(file);
assert(H5FD_MPIO==file->pub.driver_id);
@@ -1254,7 +1001,7 @@ H5FD_mpio_get_eoa(H5FD_t *_file)
ret_value=file->eoa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1282,7 +1029,7 @@ H5FD_mpio_set_eoa(H5FD_t *_file, haddr_t addr)
H5FD_mpio_t *file = (H5FD_mpio_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpio_set_eoa, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_set_eoa, FAIL)
assert(file);
assert(H5FD_MPIO==file->pub.driver_id);
@@ -1290,7 +1037,7 @@ H5FD_mpio_set_eoa(H5FD_t *_file, haddr_t addr)
file->eoa = addr;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1308,6 +1055,10 @@ done:
* to HADDR_UNDEF which is the error return value of this
* function.
*
+ * Keeping the EOF updated (during write calls) is expensive
+ * because any process may extend the physical end of the
+ * file. -QAK
+ *
* Return: Success: The end-of-address marker.
*
* Failure: HADDR_UNDEF
@@ -1325,7 +1076,7 @@ H5FD_mpio_get_eof(H5FD_t *_file)
H5FD_mpio_t *file = (H5FD_mpio_t*)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpio_get_eof, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_mpio_get_eof, HADDR_UNDEF)
assert(file);
assert(H5FD_MPIO==file->pub.driver_id);
@@ -1334,7 +1085,7 @@ H5FD_mpio_get_eof(H5FD_t *_file)
ret_value=file->eof;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1358,15 +1109,15 @@ H5FD_mpio_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
H5FD_mpio_t *file = (H5FD_mpio_t *)_file;
herr_t ret_value = SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_mpio_get_handle, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_get_handle, FAIL)
if(!file_handle)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid")
*file_handle = &(file->f);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1455,7 +1206,7 @@ H5FD_mpio_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t add
unsigned use_view_this_time=0;
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_mpio_read, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_read, FAIL)
#ifdef H5FDmpio_DEBUG
if (H5FD_mpio_Debug[(int)'t'])
@@ -1472,11 +1223,11 @@ H5FD_mpio_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t add
HDmemset(&mpi_stat,0,sizeof(MPI_Status));
/* some numeric conversions */
- if (H5FD_mpio_haddr_to_MPIOff(addr, &mpi_off/*out*/)<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from haddr to MPI off");
+ if (H5FD_mpi_haddr_to_MPIOff(addr, &mpi_off/*out*/)<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from haddr to MPI off")
size_i = (int)size;
if ((hsize_t)size_i != size)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from size to size_i");
+ HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from size to size_i")
#ifdef H5FDmpio_DEBUG
if (H5FD_mpio_Debug[(int)'r'])
@@ -1491,7 +1242,7 @@ H5FD_mpio_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t add
/* Obtain the data transfer properties */
if(NULL == (plist = H5I_object(dxpl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
xfer_mode=(H5FD_mpio_xfer_t)H5P_peek_unsigned(plist, H5D_XFER_IO_XFER_MODE_NAME);
/*
@@ -1507,16 +1258,16 @@ H5FD_mpio_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t add
use_view_this_time=TRUE;
/* prepare for a full-blown xfer using btype, ftype, and disp */
- if(H5P_get(plist,H5FD_MPIO_XFER_MEM_MPI_TYPE_NAME,&buf_type)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property");
- if(H5P_get(plist,H5FD_MPIO_XFER_FILE_MPI_TYPE_NAME,&file_type)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property");
+ if(H5P_get(plist,H5FD_MPI_XFER_MEM_MPI_TYPE_NAME,&buf_type)<0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property")
+ if(H5P_get(plist,H5FD_MPI_XFER_FILE_MPI_TYPE_NAME,&file_type)<0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property")
/*
* Set the file view when we are using MPI derived types
*/
/*OKAY: CAST DISCARDS CONST QUALIFIER*/
- if (MPI_SUCCESS != (mpi_code=MPI_File_set_view(file->f, mpi_off, MPI_BYTE, file_type, (char*)"native", file->info)))
+ if (MPI_SUCCESS != (mpi_code=MPI_File_set_view(file->f, mpi_off, MPI_BYTE, file_type, H5FD_mpi_native_g, file->info)))
HMPI_GOTO_ERROR(FAIL, "MPI_File_set_view failed", mpi_code)
/* When using types, use the address as the displacement for
@@ -1533,22 +1284,24 @@ H5FD_mpio_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t dxpl_id, haddr_t add
fprintf(stdout, "H5FD_mpio_read: using MPIO collective mode\n");
#endif
if (MPI_SUCCESS!= (mpi_code=MPI_File_read_at_all(file->f, mpi_off, buf, size_i, buf_type, &mpi_stat )))
- HMPI_GOTO_ERROR(FAIL, "MPI_File_read_at_all failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_File_read_at_all failed", mpi_code)
/*
* Reset the file view when we used MPI derived types
*/
/*OKAY: CAST DISCARDS CONST QUALIFIER*/
- if (MPI_SUCCESS != (mpi_code=MPI_File_set_view(file->f, 0, MPI_BYTE, MPI_BYTE, (char*)"native", file->info)))
+ if (MPI_SUCCESS != (mpi_code=MPI_File_set_view(file->f, 0, MPI_BYTE, MPI_BYTE, H5FD_mpi_native_g, file->info)))
HMPI_GOTO_ERROR(FAIL, "MPI_File_set_view failed", mpi_code)
} else {
if (MPI_SUCCESS!= (mpi_code=MPI_File_read_at(file->f, mpi_off, buf, size_i, buf_type, &mpi_stat)))
- HMPI_GOTO_ERROR(FAIL, "MPI_File_read_at failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_File_read_at failed", mpi_code)
}
/* How many bytes were actually read? */
/* [This works because the "basic elements" we use for all our MPI derived
- * types are MPI_BYTE - QAK]
+ * types are MPI_BYTE. We should be using the 'buf_type' for the MPI
+ * datatype in this call though... (We aren't because using it causes
+ * the LANL "qsc" machine to dump core - 12/19/03) - QAK]
*/
if (MPI_SUCCESS != (mpi_code=MPI_Get_elements(&mpi_stat, MPI_BYTE, &bytes_read)))
HMPI_GOTO_ERROR(FAIL, "MPI_Get_elements failed", mpi_code)
@@ -1576,7 +1329,7 @@ done:
fprintf(stdout, "Leaving H5FD_mpio_read\n" );
#endif
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1717,7 +1470,7 @@ H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_mpio_write, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_write, FAIL)
#ifdef H5FDmpio_DEBUG
if (H5FD_mpio_Debug[(int)'t'])
@@ -1734,11 +1487,11 @@ H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
HDmemset(&mpi_stat,0,sizeof(MPI_Status));
/* some numeric conversions */
- if (H5FD_mpio_haddr_to_MPIOff(addr, &mpi_off)<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from haddr to MPI off");
+ if (H5FD_mpi_haddr_to_MPIOff(addr, &mpi_off)<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from haddr to MPI off")
size_i = (int)size;
if ((hsize_t)size_i != size)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from size to size_i");
+ HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "can't convert from size to size_i")
#ifdef H5FDmpio_DEBUG
if (H5FD_mpio_Debug[(int)'w'])
@@ -1748,7 +1501,7 @@ H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
/* Obtain the data transfer properties */
if(NULL == (plist = H5I_object(dxpl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
if(type==H5FD_MEM_DRAW) {
H5FD_mpio_xfer_t xfer_mode; /* I/O tranfer mode */
@@ -1769,16 +1522,16 @@ H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
use_view_this_time=TRUE;
/* prepare for a full-blown xfer using btype, ftype, and disp */
- if(H5P_get(plist,H5FD_MPIO_XFER_MEM_MPI_TYPE_NAME,&buf_type)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property");
- if(H5P_get(plist,H5FD_MPIO_XFER_FILE_MPI_TYPE_NAME,&file_type)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property");
+ if(H5P_get(plist,H5FD_MPI_XFER_MEM_MPI_TYPE_NAME,&buf_type)<0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property")
+ if(H5P_get(plist,H5FD_MPI_XFER_FILE_MPI_TYPE_NAME,&file_type)<0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get MPI-I/O type property")
/*
* Set the file view when we are using MPI derived types
*/
/*OKAY: CAST DISCARDS CONST QUALIFIER*/
- if (MPI_SUCCESS != (mpi_code=MPI_File_set_view(file->f, mpi_off, MPI_BYTE, file_type, (char*)"native", file->info)))
+ if (MPI_SUCCESS != (mpi_code=MPI_File_set_view(file->f, mpi_off, MPI_BYTE, file_type, H5FD_mpi_native_g, file->info)))
HMPI_GOTO_ERROR(FAIL, "MPI_File_set_view failed", mpi_code)
/* When using types, use the address as the displacement for
@@ -1802,11 +1555,11 @@ H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
*/
if(H5P_exist_plist(plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME)>0)
if(H5P_get(plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME,&block_before_meta_write)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get H5AC property");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get H5AC property")
if(block_before_meta_write)
if (MPI_SUCCESS!= (mpi_code=MPI_Barrier(file->comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code)
/* Only one process will do the actual write if all procs in comm write same metadata */
if (file->mpi_rank != H5_PAR_META_WRITE) {
@@ -1818,7 +1571,7 @@ H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
}
#endif
HGOTO_DONE(SUCCEED) /* skip the actual write */
- }
+ } /* end if */
} /* end if */
/* Write the data. */
@@ -1829,23 +1582,25 @@ H5FD_mpio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
#endif
/*OKAY: CAST DISCARDS CONST QUALIFIER*/
if (MPI_SUCCESS != (mpi_code=MPI_File_write_at_all(file->f, mpi_off, (void*)buf, size_i, buf_type, &mpi_stat)))
- HMPI_GOTO_ERROR(FAIL, "MPI_File_write_at_all failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_File_write_at_all failed", mpi_code)
/*
* Reset the file view when we used MPI derived types
*/
/*OKAY: CAST DISCARDS CONST QUALIFIER*/
- if (MPI_SUCCESS != (mpi_code=MPI_File_set_view(file->f, 0, MPI_BYTE, MPI_BYTE, (char*)"native", file->info)))
+ if (MPI_SUCCESS != (mpi_code=MPI_File_set_view(file->f, 0, MPI_BYTE, MPI_BYTE, H5FD_mpi_native_g, file->info)))
HMPI_GOTO_ERROR(FAIL, "MPI_File_set_view failed", mpi_code)
} else {
/*OKAY: CAST DISCARDS CONST QUALIFIER*/
if (MPI_SUCCESS != (mpi_code=MPI_File_write_at(file->f, mpi_off, (void*)buf, size_i, buf_type, &mpi_stat)))
- HMPI_GOTO_ERROR(FAIL, "MPI_File_write_at failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_File_write_at failed", mpi_code)
}
/* How many bytes were actually written? */
/* [This works because the "basic elements" we use for all our MPI derived
- * types are MPI_BYTE - QAK]
+ * types are MPI_BYTE. We should be using the 'buf_type' for the MPI
+ * datatype in this call though... (We aren't because using it causes
+ * the LANL "qsc" machine to dump core - 12/19/03) - QAK]
*/
if (MPI_SUCCESS != (mpi_code=MPI_Get_elements(&mpi_stat, MPI_BYTE, &bytes_written)))
HMPI_GOTO_ERROR(FAIL, "MPI_Get_elements failed", mpi_code)
@@ -1876,7 +1631,7 @@ done:
fprintf(stdout, "proc %d: Leaving H5FD_mpio_write with ret_value=%d\n",
file->mpi_rank, ret_value );
#endif
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1917,7 +1672,7 @@ H5FD_mpio_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned closing)
MPI_Offset mpi_off;
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_mpio_flush, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_flush, FAIL)
#ifdef H5FDmpio_DEBUG
if (H5FD_mpio_Debug[(int)'t'])
@@ -1932,12 +1687,12 @@ H5FD_mpio_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned closing)
* Therefore we'll just read the byte at EOA-1 and then write it back. */
if(file->eoa>file->last_eoa) {
#ifdef H5_MPI_FILE_SET_SIZE_BIG
- if (H5FD_mpio_haddr_to_MPIOff(file->eoa, &mpi_off)<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "cannot convert from haddr_t to MPI_Offset");
+ if (H5FD_mpi_haddr_to_MPIOff(file->eoa, &mpi_off)<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "cannot convert from haddr_t to MPI_Offset")
/* Extend the file's size */
if (MPI_SUCCESS != (mpi_code=MPI_File_set_size(file->f, mpi_off)))
- HMPI_GOTO_ERROR(FAIL, "MPI_File_set_size failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_File_set_size failed", mpi_code)
#else /* H5_MPI_FILE_SET_SIZE_BIG */
if (0==file->mpi_rank) {
uint8_t byte=0;
@@ -1946,12 +1701,12 @@ H5FD_mpio_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned closing)
/* Portably initialize MPI status variable */
HDmemset(&mpi_stat,0,sizeof(MPI_Status));
- if (H5FD_mpio_haddr_to_MPIOff(file->eoa-1, &mpi_off)<0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "cannot convert from haddr_t to MPI_Offset");
+ if (H5FD_mpi_haddr_to_MPIOff(file->eoa-1, &mpi_off)<0)
+ HGOTO_ERROR(H5E_INTERNAL, H5E_BADRANGE, FAIL, "cannot convert from haddr_t to MPI_Offset")
if (MPI_SUCCESS != (mpi_code=MPI_File_read_at(file->f, mpi_off, &byte, 1, MPI_BYTE, &mpi_stat)))
- HMPI_GOTO_ERROR(FAIL, "MPI_File_read_at failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_File_read_at failed", mpi_code)
if (MPI_SUCCESS != (mpi_code=MPI_File_write_at(file->f, mpi_off, &byte, 1, MPI_BYTE, &mpi_stat)))
- HMPI_GOTO_ERROR(FAIL, "MPI_File_write_at failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_File_write_at failed", mpi_code)
} /* end if */
#endif /* H5_MPI_FILE_SET_SIZE_BIG */
@@ -1962,7 +1717,7 @@ H5FD_mpio_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned closing)
* the new data written)
*/
if (MPI_SUCCESS!= (mpi_code=MPI_Barrier(file->comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code)
/* Update the 'last' eoa value */
file->last_eoa=file->eoa;
@@ -1971,7 +1726,7 @@ H5FD_mpio_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned closing)
/* Only sync the file if we are not going to immediately close it */
if(!closing) {
if (MPI_SUCCESS != (mpi_code=MPI_File_sync(file->f)))
- HMPI_GOTO_ERROR(FAIL, "MPI_File_sync failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_File_sync failed", mpi_code)
} /* end if */
done:
@@ -1980,206 +1735,110 @@ done:
fprintf(stdout, "Leaving H5FD_mpio_flush\n" );
#endif
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_MPIOff_to_haddr
+ * Function: H5FD_mpio_mpi_rank
*
- * Purpose: Convert an MPI_Offset value to haddr_t.
+ * Purpose: Returns the MPI rank for a process
*
- * Return: Success: The haddr_t equivalent of the MPI_OFF
- * argument.
- *
- * Failure: HADDR_UNDEF
+ * Return: Success: non-negative
+ * Failure: negative
*
- * Programmer: Unknown
- * January 30, 1998
+ * Programmer: Quincey Koziol
+ * Thursday, May 16, 2002
*
* Modifications:
- * Robb Matzke, 1999-04-23
- * An error is reported for address overflows. The ADDR output
- * argument is optional.
*
- * Robb Matzke, 1999-08-06
- * Modified to work with the virtual file layer.
- *-------------------------------------------------------------------------
+ *-------------------------------------------------------------------------
*/
-static haddr_t
-H5FD_mpio_MPIOff_to_haddr(MPI_Offset mpi_off)
+static int
+H5FD_mpio_mpi_rank(const H5FD_t *_file)
{
- haddr_t ret_value=HADDR_UNDEF;
+ const H5FD_mpio_t *file = (const H5FD_mpio_t*)_file;
+ int ret_value; /* Return value */
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_mpio_MPIOff_to_haddr);
+ FUNC_ENTER_NOAPI(H5FD_mpio_mpi_rank, FAIL)
- if (mpi_off != (MPI_Offset)(haddr_t)mpi_off)
- ret_value=HADDR_UNDEF;
- else
- ret_value=(haddr_t)mpi_off;
+ assert(file);
+ assert(H5FD_MPIO==file->pub.driver_id);
- FUNC_LEAVE_NOAPI(ret_value);
-}
+ /* Set return value */
+ ret_value=file->mpi_rank;
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5FD_mpio_mpi_rank() */
/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_haddr_to_MPIOff
- *
- * Purpose: Convert an haddr_t value to MPI_Offset.
+ * Function: H5FD_mpio_mpi_size
*
- * Return: Success: Non-negative, the MPI_OFF argument contains
- * the converted value.
+ * Purpose: Returns the number of MPI processes
*
- * Failure: Negative, MPI_OFF is undefined.
+ * Return: Success: non-negative
+ * Failure: negative
*
- * Programmer: Unknown
- * January 30, 1998
+ * Programmer: Quincey Koziol
+ * Thursday, May 16, 2002
*
* Modifications:
- * Robb Matzke, 1999-04-23
- * An error is reported for address overflows. The ADDR output
- * argument is optional.
*
- * Robb Matzke, 1999-07-28
- * The ADDR argument is passed by value.
- *
- * Robb Matzke, 1999-08-06
- * Modified to work with the virtual file layer.
*-------------------------------------------------------------------------
*/
-static herr_t
-H5FD_mpio_haddr_to_MPIOff(haddr_t addr, MPI_Offset *mpi_off/*out*/)
+static int
+H5FD_mpio_mpi_size(const H5FD_t *_file)
{
- herr_t ret_value=FAIL;
-
- FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_mpio_haddr_to_MPIOff);
-
- if (mpi_off)
- *mpi_off = (MPI_Offset)addr;
- if (addr != (haddr_t)(MPI_Offset)addr)
- ret_value=FAIL;
- else
- ret_value=SUCCEED;
-
- FUNC_LEAVE_NOAPI(ret_value);
-}
+ const H5FD_mpio_t *file = (const H5FD_mpio_t*)_file;
+ int ret_value; /* Return value */
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_comm_info_dup
- *
- * Purpose: Make duplicates of communicator and Info object.
- * If the Info object is in fact MPI_INFO_NULL, no duplicate
- * is made but the same value assigned to the new Info object
- * handle.
- *
- * Return: Success: Non-negative. The new communicator and Info
- * object handles are returned via comm_new and
- * info_new pointers.
- *
- * Failure: Negative.
- *
- * Programmer: Albert Cheng
- * Jan 8, 2003
- *
- * Modifications:
- *-------------------------------------------------------------------------
- */
-static herr_t
-H5FD_mpio_comm_info_dup(MPI_Comm comm, MPI_Info info, MPI_Comm *comm_new, MPI_Info *info_new)
-{
- herr_t ret_value=SUCCEED;
- MPI_Comm comm_dup=MPI_COMM_NULL;
- MPI_Info info_dup=MPI_INFO_NULL;
- int mpi_code;
-
- FUNC_ENTER_NOAPI(H5FD_mpio_comm_info_dup, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpio_mpi_size, FAIL)
-#ifdef H5FDmpio_DEBUG
-if (H5FD_mpio_Debug[(int)'t'])
-fprintf(stderr, "In H5FD_mpio_comm_info_dup: argument comm/info = %d/%ld\n", comm, (long)info);
-#endif
- /* Check arguments */
- if (MPI_COMM_NULL == comm)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADVALUE, FAIL, "not a valid argument");
- if (!comm_new || !info_new)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADVALUE, FAIL, "bad pointers");
-
- /* Dup them. Using temporary variables for error recovery cleanup. */
- if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(comm, &comm_dup)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_dup failed", mpi_code);
- if (MPI_INFO_NULL != info){
- if (MPI_SUCCESS != (mpi_code=MPI_Info_dup(info, &info_dup)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Info_dup failed", mpi_code);
- }else{
- /* No dup, just copy it. */
- info_dup = info;
- }
+ assert(file);
+ assert(H5FD_MPIO==file->pub.driver_id);
- /* copy them to the return arguments */
- *comm_new = comm_dup;
- *info_new = info_dup;
+ /* Set return value */
+ ret_value=file->mpi_size;
done:
- if (FAIL == ret_value){
- /* need to free anything created here */
- if (MPI_COMM_NULL != comm_dup)
- MPI_Comm_free(&comm_dup);
- if (MPI_INFO_NULL != info_dup)
- MPI_Info_free(&info_dup);
- }
-
-#ifdef H5FDmpio_DEBUG
-if (H5FD_mpio_Debug[(int)'t'])
-fprintf(stderr, "Leaving H5FD_mpio_comm_info_dup\n");
-#endif
- FUNC_LEAVE_NOAPI(ret_value);
-}
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5FD_mpio_mpi_size() */
/*-------------------------------------------------------------------------
- * Function: H5FD_mpio_comm_info_free
+ * Function: H5FD_mpio_communicator
*
- * Purpose: Free the communicator and Info object.
- * If comm or info is in fact MPI_COMM_NULL or MPI_INFO_NULL
- * respectively, no action occurs to it.
+ * Purpose: Returns the MPI communicator for the file.
*
- * Return: Success: Non-negative. The values the pointers refer
- * to will be set to the corresponding NULL
- * handles.
+ * Return: Success: The communicator
*
- * Failure: Negative.
+ * Failure: NULL
*
- * Programmer: Albert Cheng
- * Jan 8, 2003
+ * Programmer: Robb Matzke
+ * Monday, August 9, 1999
*
* Modifications:
+ *
*-------------------------------------------------------------------------
*/
-static herr_t
-H5FD_mpio_comm_info_free(MPI_Comm *comm, MPI_Info *info)
+static MPI_Comm
+H5FD_mpio_communicator(const H5FD_t *_file)
{
- herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_mpio_comm_info_free, FAIL);
+ const H5FD_mpio_t *file = (const H5FD_mpio_t*)_file;
+ MPI_Comm ret_value; /* Return value */
-#ifdef H5FDmpio_DEBUG
-if (H5FD_mpio_Debug[(int)'t'])
-fprintf(stderr, "in H5FD_mpio_comm_info_free\n");
-#endif
- /* Check arguments */
- if (!comm || !info)
- HGOTO_ERROR(H5E_INTERNAL, H5E_BADVALUE, FAIL, "not a valid argument");
+ FUNC_ENTER_NOAPI(H5FD_mpio_communicator, MPI_COMM_NULL)
- if (MPI_COMM_NULL != *comm)
- MPI_Comm_free(comm);
- if (MPI_INFO_NULL != *info)
- MPI_Info_free(info);
+ assert(file);
+ assert(H5FD_MPIO==file->pub.driver_id);
+
+ /* Set return value */
+ ret_value=file->comm;
done:
-#ifdef H5FDmpio_DEBUG
-if (H5FD_mpio_Debug[(int)'t'])
-fprintf(stderr, "Leaving H5FD_mpio_comm_info_free\n");
-#endif
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
+
#endif /* H5_HAVE_PARALLEL */
diff --git a/src/H5FDmpio.h b/src/H5FDmpio.h
index 7bd2545..912cbd8 100644
--- a/src/H5FDmpio.h
+++ b/src/H5FDmpio.h
@@ -21,21 +21,12 @@
#ifndef H5FDmpio_H
#define H5FDmpio_H
-#include "H5FDpublic.h"
-#include "H5Ipublic.h"
-
#ifdef H5_HAVE_PARALLEL
# define H5FD_MPIO (H5FD_mpio_init())
#else
# define H5FD_MPIO (-1)
#endif /* H5_HAVE_PARALLEL */
-/* Type of I/O for data transfer properties */
-typedef enum H5FD_mpio_xfer_t {
- H5FD_MPIO_INDEPENDENT = 0, /*zero is the default*/
- H5FD_MPIO_COLLECTIVE
-} H5FD_mpio_xfer_t;
-
/* Macros */
#define IS_H5FD_MPIO(f) /* (H5F_t *f) */ \
@@ -54,19 +45,12 @@ typedef enum H5FD_mpio_xfer_t {
extern "C" {
#endif
H5_DLL hid_t H5FD_mpio_init(void);
+H5_DLL void H5FD_mpio_term(void);
H5_DLL herr_t H5Pset_fapl_mpio(hid_t fapl_id, MPI_Comm comm, MPI_Info info);
H5_DLL herr_t H5Pget_fapl_mpio(hid_t fapl_id, MPI_Comm *comm/*out*/,
MPI_Info *info/*out*/);
H5_DLL herr_t H5Pset_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t xfer_mode);
H5_DLL herr_t H5Pget_dxpl_mpio(hid_t dxpl_id, H5FD_mpio_xfer_t *xfer_mode/*out*/);
-H5_DLL MPI_Comm H5FD_mpio_communicator(H5FD_t *_file);
-H5_DLL herr_t H5FD_mpio_setup(hid_t dxpl_id, MPI_Datatype btype,
- MPI_Datatype ftype);
-H5_DLL herr_t H5FD_mpio_teardown(hid_t dxpl_id);
-H5_DLL herr_t H5FD_mpio_wait_for_left_neighbor(H5FD_t *file);
-H5_DLL herr_t H5FD_mpio_signal_right_neighbor(H5FD_t *file);
-H5_DLL int H5FD_mpio_mpi_rank(H5FD_t *_file);
-H5_DLL int H5FD_mpio_mpi_size(H5FD_t *_file);
#ifdef __cplusplus
}
#endif
diff --git a/src/H5FDmpiposix.c b/src/H5FDmpiposix.c
index 3accc36..baef534 100644
--- a/src/H5FDmpiposix.c
+++ b/src/H5FDmpiposix.c
@@ -31,15 +31,20 @@
* on a non-parallel filesystem.
*
*/
-#include "H5private.h" /*library functions */
-#include "H5ACprivate.h" /* Metadata cache */
-#include "H5Eprivate.h" /*error handling */
-#include "H5Fprivate.h" /*files */
-#include "H5FDprivate.h" /*file driver */
-#include "H5FDmpiposix.h" /* MPI/posix I/O file driver */
+
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5FD_mpiposix_mask
+
+#include "H5private.h" /* Generic Functions */
+#include "H5ACprivate.h" /* Metadata cache */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Fprivate.h" /* File access */
+#include "H5FDprivate.h" /* File drivers */
+#include "H5FDmpi.h" /* MPI-based file drivers */
#include "H5Iprivate.h" /* IDs */
-#include "H5MMprivate.h" /*memory allocation */
-#include "H5Pprivate.h" /*property lists */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5Pprivate.h" /* Property lists */
/* Features:
* H5_HAVE_GPFS -- issue gpfs_fcntl() calls to hopefully improve
@@ -184,6 +189,9 @@ static herr_t H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id,
static herr_t H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t fapl_id, haddr_t addr,
size_t size, const void *buf);
static herr_t H5FD_mpiposix_flush(H5FD_t *_file, hid_t dxpl_id, unsigned closing);
+static int H5FD_mpiposix_mpi_rank(const H5FD_t *_file);
+static int H5FD_mpiposix_mpi_size(const H5FD_t *_file);
+static MPI_Comm H5FD_mpiposix_communicator(const H5FD_t *_file);
/* MPIPOSIX-specific file access properties */
typedef struct H5FD_mpiposix_fapl_t {
@@ -192,7 +200,8 @@ typedef struct H5FD_mpiposix_fapl_t {
} H5FD_mpiposix_fapl_t;
/* The MPIPOSIX file driver information */
-static const H5FD_class_t H5FD_mpiposix_g = {
+static const H5FD_class_mpi_t H5FD_mpiposix_g = {
+ { /* Start of superclass information */
"mpiposix", /*name */
MAXADDR, /*maxaddr */
H5F_CLOSE_SEMI, /* fc_degree */
@@ -222,14 +231,39 @@ static const H5FD_class_t H5FD_mpiposix_g = {
NULL, /*lock */
NULL, /*unlock */
H5FD_FLMAP_SINGLE /*fl_map */
+ }, /* End of superclass information */
+ H5FD_mpiposix_mpi_rank, /*get_rank */
+ H5FD_mpiposix_mpi_size, /*get_size */
+ H5FD_mpiposix_communicator /*get_comm */
};
/* Interface initialization */
-#define PABLO_MASK H5FD_mpiposix_mask
-#define INTERFACE_INIT H5FD_mpiposix_init
+#define INTERFACE_INIT H5FD_mpiposix_init_interface
static int interface_initialize_g = 0;
+/*--------------------------------------------------------------------------
+NAME
+ H5FD_mpiposix_init_interface -- Initialize interface-specific information
+USAGE
+ herr_t H5FD_mpiposix_init_interface()
+
+RETURNS
+ Non-negative on success/Negative on failure
+DESCRIPTION
+ Initializes any interface-specific data or routines. (Just calls
+ H5FD_mpiposix_init currently).
+
+--------------------------------------------------------------------------*/
+static herr_t
+H5FD_mpiposix_init_interface(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_mpiposix_init_interface)
+
+ FUNC_LEAVE_NOAPI(H5FD_mpiposix_init())
+} /* H5FD_mpiposix_init_interface() */
+
+
/*-------------------------------------------------------------------------
* Function: H5FD_mpiposix_init
*
@@ -252,18 +286,44 @@ H5FD_mpiposix_init(void)
{
hid_t ret_value=H5FD_MPIPOSIX_g; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpiposix_init, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_init, FAIL)
if (H5I_VFL!=H5Iget_type(H5FD_MPIPOSIX_g))
- H5FD_MPIPOSIX_g = H5FDregister(&H5FD_mpiposix_g);
+ H5FD_MPIPOSIX_g = H5FD_register((const H5FD_class_t *)&H5FD_mpiposix_g,sizeof(H5FD_class_mpi_t));
/* Set return value */
ret_value=H5FD_MPIPOSIX_g;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_init() */
+
+/*---------------------------------------------------------------------------
+ * Function: H5FD_mpiposix_term
+ *
+ * Purpose: Shut down the VFD
+ *
+ * Return: <none>
+ *
+ * Programmer: Quincey Koziol
+ * Friday, Jan 30, 2004
+ *
+ * Modification:
+ *
+ *---------------------------------------------------------------------------
+ */
+void
+H5FD_mpiposix_term(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_mpiposix_term)
+
+ /* Reset VFL ID */
+ H5FD_MPIPOSIX_g=0;
+
+ FUNC_LEAVE_NOAPI_VOID
+} /* end H5FD_mpiposix_term() */
+
#ifdef H5_WANT_H5_V1_4_COMPAT
/*-------------------------------------------------------------------------
@@ -303,14 +363,14 @@ H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
- FUNC_ENTER_API(H5Pset_fapl_mpiposix, FAIL);
+ FUNC_ENTER_API(H5Pset_fapl_mpiposix, FAIL)
H5TRACE2("e","iMc",fapl_id,comm);
/* Check arguments */
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list")
if (MPI_COMM_NULL == comm)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a valid communicator");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a valid communicator")
/* Initialize driver specific properties */
fa.comm = comm;
@@ -320,7 +380,7 @@ H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm)
ret_value= H5P_set_driver(plist, H5FD_MPIPOSIX, &fa);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
} /* end H5Pset_fapl_mpiposix() */
@@ -362,24 +422,24 @@ H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/)
int mpi_code; /* mpi return code */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Pget_fapl_mpiposix, FAIL);
+ FUNC_ENTER_API(H5Pget_fapl_mpiposix, FAIL)
H5TRACE2("e","ix",fapl_id,comm);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list")
if (H5FD_MPIPOSIX!=H5P_get_driver(plist))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
if (NULL==(fa=H5P_get_driver_info(plist)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info")
/* Get MPI Communicator */
if (comm){
if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(fa->comm, comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_dup failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_Comm_dup failed", mpi_code)
}
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
} /* end H5Pget_fapl_mpiposix() */
#else /* H5_WANT_H5_V1_4_COMPAT */
@@ -424,14 +484,14 @@ H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t use_gpfs)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
- FUNC_ENTER_API(H5Pset_fapl_mpiposix, FAIL);
+ FUNC_ENTER_API(H5Pset_fapl_mpiposix, FAIL)
H5TRACE3("e","iMcb",fapl_id,comm,use_gpfs);
/* Check arguments */
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list")
if (MPI_COMM_NULL == comm)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a valid communicator");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a valid communicator")
/* Initialize driver specific properties */
fa.comm = comm;
@@ -441,7 +501,7 @@ H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t use_gpfs)
ret_value= H5P_set_driver(plist, H5FD_MPIPOSIX, &fa);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
} /* end H5Pset_fapl_mpiposix() */
@@ -483,135 +543,32 @@ H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/, hbool_t *use_gpfs/*ou
int mpi_code; /* mpi return code */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Pget_fapl_mpiposix, FAIL);
+ FUNC_ENTER_API(H5Pget_fapl_mpiposix, FAIL)
H5TRACE3("e","ixx",fapl_id,comm,use_gpfs);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a file access list")
if (H5FD_MPIPOSIX!=H5P_get_driver(plist))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
if (NULL==(fa=H5P_get_driver_info(plist)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info")
/* Get MPI Communicator */
if (comm){
if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(fa->comm, comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_dup failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_Comm_dup failed", mpi_code)
}
if (use_gpfs)
*use_gpfs = fa->use_gpfs;
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
} /* end H5Pget_fapl_mpiposix() */
#endif /* H5_WANT_H5_V1_4_COMPAT */
/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_communicator
- *
- * Purpose: Returns the MPI communicator for the file.
- *
- * Return: Success: The communicator
- *
- * Failure: NULL
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-MPI_Comm
-H5FD_mpiposix_communicator(H5FD_t *_file)
-{
- H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
- MPI_Comm ret_value; /* Return value */
-
- FUNC_ENTER_NOAPI(H5FD_mpiposix_communicator, MPI_COMM_NULL);
-
- assert(file);
- assert(H5FD_MPIPOSIX==file->pub.driver_id);
-
- /* Set return value */
- ret_value=file->comm;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-} /* end H5FD_mpi_posix_communicator() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_mpi_rank
- *
- * Purpose: Returns the MPI rank for a process
- *
- * Return: Success: non-negative
- * Failure: negative
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-int
-H5FD_mpiposix_mpi_rank(H5FD_t *_file)
-{
- H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
- int ret_value; /* Return value */
-
- FUNC_ENTER_NOAPI(H5FD_mpiposix_mpi_rank, FAIL);
-
- assert(file);
- assert(H5FD_MPIPOSIX==file->pub.driver_id);
-
- /* Set return value */
- ret_value=file->mpi_rank;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-} /* end H5FD_mpiposix_mpi_rank() */
-
-
-/*-------------------------------------------------------------------------
- * Function: H5FD_mpiposix_mpi_size
- *
- * Purpose: Returns the number of MPI processes
- *
- * Return: Success: non-negative
- * Failure: negative
- *
- * Programmer: Quincey Koziol
- * Thursday, July 11, 2002
- *
- * Modifications:
- *
- *-------------------------------------------------------------------------
- */
-int
-H5FD_mpiposix_mpi_size(H5FD_t *_file)
-{
- H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
- int ret_value; /* Return value */
-
- FUNC_ENTER_NOAPI(H5FD_mpiposix_mpi_size, FAIL);
-
- assert(file);
- assert(H5FD_MPIPOSIX==file->pub.driver_id);
-
- /* Set return value */
- ret_value=file->mpi_size;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-} /* end H5FD_mpiposix_mpi_size() */
-
-
-/*-------------------------------------------------------------------------
* Function: H5FD_mpiposix_fapl_get
*
* Purpose: Returns a file access property list which could be used to
@@ -640,17 +597,17 @@ H5FD_mpiposix_fapl_get(H5FD_t *_file)
int mpi_code; /* MPI return code */
void *ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpiposix_fapl_get, NULL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_fapl_get, NULL)
assert(file);
assert(H5FD_MPIPOSIX==file->pub.driver_id);
if (NULL==(fa=H5MM_calloc(sizeof(H5FD_mpiposix_fapl_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
/* Duplicate the communicator. */
if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(file->comm, &fa->comm)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code);
+ HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
fa->use_gpfs = file->use_gpfs;
@@ -658,7 +615,7 @@ H5FD_mpiposix_fapl_get(H5FD_t *_file)
ret_value=fa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_fapl_get() */
@@ -686,17 +643,17 @@ H5FD_mpiposix_fapl_copy(const void *_old_fa)
H5FD_mpiposix_fapl_t *new_fa = NULL;
int mpi_code; /* MPI return code */
- FUNC_ENTER_NOAPI(H5FD_mpiposix_fapl_copy, NULL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_fapl_copy, NULL)
if (NULL==(new_fa=H5MM_malloc(sizeof(H5FD_mpiposix_fapl_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
/* Copy the general information */
HDmemcpy(new_fa, old_fa, sizeof(H5FD_mpiposix_fapl_t));
/* Duplicate communicator. */
if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(old_fa->comm, &new_fa->comm)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code);
+ HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
new_fa->use_gpfs = old_fa->use_gpfs;
ret_value = new_fa;
@@ -708,7 +665,7 @@ done:
H5MM_xfree(new_fa);
}
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_fapl_copy() */
@@ -734,7 +691,7 @@ H5FD_mpiposix_fapl_free(void *_fa)
herr_t ret_value = SUCCEED;
H5FD_mpiposix_fapl_t *fa = (H5FD_mpiposix_fapl_t*)_fa;
- FUNC_ENTER_NOAPI(H5FD_mpiposix_fapl_free, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_fapl_free, FAIL)
assert(fa);
/* Free the internal communicator */
@@ -743,7 +700,7 @@ H5FD_mpiposix_fapl_free(void *_fa)
H5MM_xfree(fa);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_fapl_free() */
@@ -792,19 +749,19 @@ H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
H5FD_t *ret_value=NULL; /* Return value */
MPI_Comm comm_dup=MPI_COMM_NULL;
- FUNC_ENTER_NOAPI(H5FD_mpiposix_open, NULL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_open, NULL)
/* Check arguments */
if (!name || !*name)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name")
if (0==maxaddr || HADDR_UNDEF==maxaddr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
if (ADDR_OVERFLOW(maxaddr))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "bogus maxaddr")
/* Obtain a pointer to mpiposix-specific file access properties */
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
if (H5P_FILE_ACCESS_DEFAULT==fapl_id || H5FD_MPIPOSIX!=H5P_get_driver(plist)) {
_fa.comm = MPI_COMM_SELF; /*default*/
_fa.use_gpfs = FALSE;
@@ -817,13 +774,13 @@ H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
/* Duplicate the communicator for use by this file. */
if (MPI_SUCCESS != (mpi_code=MPI_Comm_dup(fa->comm, &comm_dup)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code);
+ HMPI_GOTO_ERROR(NULL, "MPI_Comm_dup failed", mpi_code)
/* Get the MPI rank of this process and the total number of processes */
if (MPI_SUCCESS != (mpi_code=MPI_Comm_rank (comm_dup, &mpi_rank)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_rank failed", mpi_code);
+ HMPI_GOTO_ERROR(NULL, "MPI_Comm_rank failed", mpi_code)
if (MPI_SUCCESS != (mpi_code=MPI_Comm_size (comm_dup, &mpi_size)))
- HMPI_GOTO_ERROR(NULL, "MPI_Comm_size failed", mpi_code);
+ HMPI_GOTO_ERROR(NULL, "MPI_Comm_size failed", mpi_code)
/* Build the open flags */
o_flags = (H5F_ACC_RDWR & flags) ? O_RDWR : O_RDONLY;
@@ -858,29 +815,29 @@ H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
* to check for that situation and bail out now also. - QAK
*/
if (MPI_SUCCESS != (mpi_code= MPI_Bcast(&fd, sizeof(int), MPI_BYTE, 0, comm_dup)))
- HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mpi_code);
+ HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mpi_code)
/* If the file open on process 0 failed, bail out on all processes now */
if(fd<0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file");
+ HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file")
/* Other processes (non 0) wait for broadcast result from process 0 and then open file */
if(mpi_rank!=0) {
/* Open the file */
if ((fd=HDopen(name, o_flags, 0666))<0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file");
+ HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file")
} /* end if */
/* Process 0 fstat()s the file and broadcasts the results to the other processes */
if(mpi_rank==0) {
/* Get the stat information */
if (HDfstat(fd, &sb)<0)
- HGOTO_ERROR(H5E_FILE, H5E_BADFILE, NULL, "unable to fstat file");
+ HGOTO_ERROR(H5E_FILE, H5E_BADFILE, NULL, "unable to fstat file")
} /* end if */
/* Broadcast the results of the fstat() from process 0 */
if (MPI_SUCCESS != (mpi_code= MPI_Bcast(&sb, sizeof(h5_stat_t), MPI_BYTE, 0, comm_dup)))
- HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mpi_code);
+ HMPI_GOTO_ERROR(NULL, "MPI_Bcast failed", mpi_code)
#ifdef H5_HAVE_GPFS
if (fa->use_gpfs) {
@@ -902,13 +859,13 @@ H5FD_mpiposix_open(const char *name, unsigned flags, hid_t fapl_id,
hint.fr.length = 0;
if (gpfs_fcntl(fd, &hint)<0)
- HGOTO_ERROR(H5E_FILE, H5E_FCNTL, NULL, "failed to send hints to GPFS");
+ HGOTO_ERROR(H5E_FILE, H5E_FCNTL, NULL, "failed to send hints to GPFS")
}
#endif /* H5_HAVE_GPFS */
/* Build the file struct and initialize it */
if (NULL==(file=H5MM_calloc(sizeof(H5FD_mpiposix_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
#ifdef REPORT_IO
HDfprintf(stderr, "open: rank=%d name=%s file=0x%08lx\n", mpi_rank, name, (unsigned long)file);
@@ -955,7 +912,7 @@ done:
MPI_Comm_free(&comm_dup);
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_open() */
@@ -981,21 +938,21 @@ H5FD_mpiposix_close(H5FD_t *_file)
H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpiposix_close, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_close, FAIL)
assert(file);
assert(H5FD_MPIPOSIX==file->pub.driver_id);
/* Close the unix file */
if (HDclose(file->fd)<0)
- HGOTO_ERROR(H5E_IO, H5E_CANTCLOSEFILE, FAIL, "unable to close file");
+ HGOTO_ERROR(H5E_IO, H5E_CANTCLOSEFILE, FAIL, "unable to close file")
/* Clean up other stuff */
MPI_Comm_free(&file->comm);
H5MM_xfree(file);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_close() */
@@ -1023,34 +980,34 @@ H5FD_mpiposix_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
const H5FD_mpiposix_t *f2 = (const H5FD_mpiposix_t*)_f2;
int ret_value=0;
- FUNC_ENTER_NOAPI(H5FD_mpiposix_cmp, H5FD_VFD_DEFAULT);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_cmp, H5FD_VFD_DEFAULT)
#ifdef WIN32
- if (f1->fileindexhi < f2->fileindexhi) HGOTO_DONE(-1);
- if (f1->fileindexhi > f2->fileindexhi) HGOTO_DONE(1);
+ if (f1->fileindexhi < f2->fileindexhi) HGOTO_DONE(-1)
+ if (f1->fileindexhi > f2->fileindexhi) HGOTO_DONE(1)
- if (f1->fileindexlo < f2->fileindexlo) HGOTO_DONE(-1);
- if (f1->fileindexlo > f2->fileindexlo) HGOTO_DONE(1);
+ if (f1->fileindexlo < f2->fileindexlo) HGOTO_DONE(-1)
+ if (f1->fileindexlo > f2->fileindexlo) HGOTO_DONE(1)
#else
#ifdef H5_DEV_T_IS_SCALAR
- if (f1->device < f2->device) HGOTO_DONE(-1);
- if (f1->device > f2->device) HGOTO_DONE(1);
+ if (f1->device < f2->device) HGOTO_DONE(-1)
+ if (f1->device > f2->device) HGOTO_DONE(1)
#else /* H5_DEV_T_IS_SCALAR */
/* If dev_t isn't a scalar value on this system, just use memcmp to
* determine if the values are the same or not. The actual return value
* shouldn't really matter...
*/
- if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))<0) HGOTO_DONE(-1);
- if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))>0) HGOTO_DONE(1);
+ if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))<0) HGOTO_DONE(-1)
+ if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))>0) HGOTO_DONE(1)
#endif /* H5_DEV_T_IS_SCALAR */
- if (f1->inode < f2->inode) HGOTO_DONE(-1);
- if (f1->inode > f2->inode) HGOTO_DONE(1);
+ if (f1->inode < f2->inode) HGOTO_DONE(-1)
+ if (f1->inode > f2->inode) HGOTO_DONE(1)
#endif
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_cmp() */
@@ -1075,7 +1032,7 @@ H5FD_mpiposix_query(const H5FD_t UNUSED *_file, unsigned long *flags /* out */)
{
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_mpiposix_query, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_query, FAIL)
/* Set the VFL feature flags that this driver supports */
if(flags) {
@@ -1094,7 +1051,7 @@ H5FD_mpiposix_query(const H5FD_t UNUSED *_file, unsigned long *flags /* out */)
} /* end if */
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_query() */
@@ -1121,7 +1078,7 @@ H5FD_mpiposix_get_eoa(H5FD_t *_file)
H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpiposix_get_eoa, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_get_eoa, HADDR_UNDEF)
assert(file);
assert(H5FD_MPIPOSIX==file->pub.driver_id);
@@ -1130,7 +1087,7 @@ H5FD_mpiposix_get_eoa(H5FD_t *_file)
ret_value=file->eoa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_get_eoa() */
@@ -1157,7 +1114,7 @@ H5FD_mpiposix_set_eoa(H5FD_t *_file, haddr_t addr)
H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpiposix_set_eoa, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_set_eoa, FAIL)
assert(file);
assert(H5FD_MPIPOSIX==file->pub.driver_id);
@@ -1165,7 +1122,7 @@ H5FD_mpiposix_set_eoa(H5FD_t *_file, haddr_t addr)
file->eoa = addr;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpi_posix_set_eoa() */
@@ -1197,7 +1154,7 @@ H5FD_mpiposix_get_eof(H5FD_t *_file)
H5FD_mpiposix_t *file = (H5FD_mpiposix_t*)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpiposix_get_eof, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_get_eof, HADDR_UNDEF)
assert(file);
assert(H5FD_MPIPOSIX==file->pub.driver_id);
@@ -1206,7 +1163,7 @@ H5FD_mpiposix_get_eof(H5FD_t *_file)
ret_value=MAX(file->eof,file->eoa);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_get_eof() */
@@ -1230,15 +1187,15 @@ H5FD_mpiposix_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
H5FD_mpiposix_t *file = (H5FD_mpiposix_t *)_file;
herr_t ret_value = SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_mpiposix_get_handle, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_get_handle, FAIL)
if(!file_handle)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid")
*file_handle = &(file->fd);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1272,7 +1229,7 @@ H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
ssize_t nbytes; /* Number of bytes read each I/O call */
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_mpiposix_read, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_read, FAIL)
assert(file);
assert(H5FD_MPIPOSIX==file->pub.driver_id);
@@ -1280,11 +1237,11 @@ H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined")
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
if (addr+size>file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
#ifdef REPORT_IO
{
@@ -1298,7 +1255,7 @@ H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
/* Seek to the correct location */
if ((addr!=file->pos || OP_READ!=file->op) &&
file_seek(file->fd, (file_offset_t)addr, SEEK_SET)<0)
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
/*
* Read data, being careful of interrupted system calls, partial results,
@@ -1309,11 +1266,11 @@ H5FD_mpiposix_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id,
nbytes = HDread(file->fd, buf, size);
} while (-1==nbytes && EINTR==errno);
if (-1==nbytes)
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed");
+ HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed")
if (0==nbytes) {
/* end of file but not end of format address space */
HDmemset(buf, 0, size);
- size = 0;
+ break;
} /* end if */
assert(nbytes>=0);
assert((size_t)nbytes<=size);
@@ -1334,7 +1291,7 @@ done:
file->op = OP_UNKNOWN;
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_read() */
@@ -1372,7 +1329,7 @@ H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_mpiposix_write, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_write, FAIL)
assert(file);
assert(H5FD_MPIPOSIX==file->pub.driver_id);
@@ -1382,15 +1339,15 @@ H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined")
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
if (addr+size>file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
/* Obtain the data transfer properties */
if(NULL == (plist = H5I_object(dxpl_id)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
/* Metadata specific actions */
if(type!=H5FD_MEM_DRAW) {
@@ -1408,11 +1365,11 @@ H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
*/
if(H5P_exist_plist(plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME)>0)
if(H5P_get(plist,H5AC_BLOCK_BEFORE_META_WRITE_NAME,&block_before_meta_write)<0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get H5AC property");
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get H5AC property")
if(block_before_meta_write)
if (MPI_SUCCESS!= (mpi_code=MPI_Barrier(file->comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code)
/* Only one process will do the actual write if all procs in comm write same metadata */
if (file->mpi_rank != H5_PAR_META_WRITE)
@@ -1448,7 +1405,7 @@ H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
hint.mar.accRangeArray[0].length = MIN(file->blksize-hint.mar.accRangeArray[0].start, size);
hint.mar.accRangeArray[0].isWrite = 1;
if (gpfs_fcntl(file->fd, &hint)<0)
- HGOTO_ERROR(H5E_FILE, H5E_FCNTL, NULL, "failed to send hints to GPFS");
+ HGOTO_ERROR(H5E_FILE, H5E_FCNTL, NULL, "failed to send hints to GPFS")
}
#endif /* H5_HAVE_GPFS */
}
@@ -1456,7 +1413,7 @@ H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
/* Seek to the correct location */
if ((addr!=file->pos || OP_WRITE!=file->op) &&
file_seek(file->fd, (file_offset_t)addr, SEEK_SET)<0)
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
/*
* Write the data, being careful of interrupted system calls and partial
@@ -1467,7 +1424,7 @@ H5FD_mpiposix_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
nbytes = HDwrite(file->fd, buf, size);
} while (-1==nbytes && EINTR==errno);
if (-1==nbytes)
- HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed");
+ HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed")
assert(nbytes>0);
assert((size_t)nbytes<=size);
size -= nbytes;
@@ -1488,14 +1445,14 @@ done:
} /* end if */
/* Guard against getting into metadata broadcast in failure cases */
else {
- /* if only one process writes, need to broadcast the ret_value to other processes */
+ /* when only one process writes, need to broadcast the ret_value to other processes */
if (type!=H5FD_MEM_DRAW) {
if (MPI_SUCCESS != (mpi_code= MPI_Bcast(&ret_value, sizeof(ret_value), MPI_BYTE, H5_PAR_META_WRITE, file->comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Bcast failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_Bcast failed", mpi_code)
} /* end if */
} /* end else */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_write() */
@@ -1525,7 +1482,7 @@ H5FD_mpiposix_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing
int mpi_code; /* MPI return code */
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_mpiposix_flush, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_flush, FAIL)
assert(file);
assert(H5FD_MPIPOSIX==file->pub.driver_id);
@@ -1543,10 +1500,10 @@ H5FD_mpiposix_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing
li.QuadPart = file->eoa;
SetFilePointer((HANDLE)filehandle,li.LowPart,&li.HighPart,FILE_BEGIN);
if(SetEndOfFile((HANDLE)filehandle)==0)
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly")
#else /* WIN32 */
if(-1==file_truncate(file->fd, (file_offset_t)file->eoa))
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly")
#endif /* WIN32 */
} /* end if */
@@ -1557,7 +1514,7 @@ H5FD_mpiposix_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing
* the new data written)
*/
if (MPI_SUCCESS!= (mpi_code=MPI_Barrier(file->comm)))
- HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code);
+ HMPI_GOTO_ERROR(FAIL, "MPI_Barrier failed", mpi_code)
/* Update the 'last' eoa and eof values */
file->last_eoa=file->eoa;
@@ -1569,8 +1526,111 @@ H5FD_mpiposix_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing
} /* end if */
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_mpiposix_flush() */
+
+/*-------------------------------------------------------------------------
+ * Function: H5FD_mpiposix_mpi_rank
+ *
+ * Purpose: Returns the MPI rank for a process
+ *
+ * Return: Success: non-negative
+ * Failure: negative
+ *
+ * Programmer: Quincey Koziol
+ * Thursday, July 11, 2002
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+H5FD_mpiposix_mpi_rank(const H5FD_t *_file)
+{
+ const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
+ int ret_value; /* Return value */
+
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_mpi_rank, FAIL)
+
+ assert(file);
+ assert(H5FD_MPIPOSIX==file->pub.driver_id);
+
+ /* Set return value */
+ ret_value=file->mpi_rank;
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5FD_mpiposix_mpi_rank() */
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5FD_mpiposix_mpi_size
+ *
+ * Purpose: Returns the number of MPI processes
+ *
+ * Return: Success: non-negative
+ * Failure: negative
+ *
+ * Programmer: Quincey Koziol
+ * Thursday, July 11, 2002
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static int
+H5FD_mpiposix_mpi_size(const H5FD_t *_file)
+{
+ const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
+ int ret_value; /* Return value */
+
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_mpi_size, FAIL)
+
+ assert(file);
+ assert(H5FD_MPIPOSIX==file->pub.driver_id);
+
+ /* Set return value */
+ ret_value=file->mpi_size;
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5FD_mpiposix_mpi_size() */
+
+
+/*-------------------------------------------------------------------------
+ * Function: H5FD_mpiposix_communicator
+ *
+ * Purpose: Returns the MPI communicator for the file.
+ *
+ * Return: Success: The communicator
+ *
+ * Failure: NULL
+ *
+ * Programmer: Quincey Koziol
+ * Thursday, July 11, 2002
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+static MPI_Comm
+H5FD_mpiposix_communicator(const H5FD_t *_file)
+{
+ const H5FD_mpiposix_t *file = (const H5FD_mpiposix_t*)_file;
+ MPI_Comm ret_value; /* Return value */
+
+ FUNC_ENTER_NOAPI(H5FD_mpiposix_communicator, MPI_COMM_NULL)
+
+ assert(file);
+ assert(H5FD_MPIPOSIX==file->pub.driver_id);
+
+ /* Set return value */
+ ret_value=file->comm;
+
+done:
+ FUNC_LEAVE_NOAPI(ret_value)
+} /* end H5FD_mpi_posix_communicator() */
+
#endif /*H5_HAVE_PARALLEL*/
diff --git a/src/H5FDmpiposix.h b/src/H5FDmpiposix.h
index b4614c7..d29bcd7 100644
--- a/src/H5FDmpiposix.h
+++ b/src/H5FDmpiposix.h
@@ -22,9 +22,6 @@
#ifndef __H5FDmpiposix_H
#define __H5FDmpiposix_H
-#include "H5FDpublic.h"
-#include "H5Ipublic.h"
-
#ifdef H5_HAVE_PARALLEL
# define H5FD_MPIPOSIX (H5FD_mpiposix_init())
#else
@@ -44,6 +41,7 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_mpiposix_init(void);
+H5_DLL void H5FD_mpiposix_term(void);
#ifdef H5_WANT_H5_V1_4_COMPAT
H5_DLL herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm);
H5_DLL herr_t H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/);
@@ -51,10 +49,6 @@ H5_DLL herr_t H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/);
H5_DLL herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t use_gpfs);
H5_DLL herr_t H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/, hbool_t *use_gpfs/*out*/);
#endif /* H5_WANT_H5_V1_4_COMPAT */
-H5_DLL MPI_Comm H5FD_mpiposix_communicator(H5FD_t *_file);
-H5_DLL herr_t H5FD_mpiposix_closing(H5FD_t *file);
-H5_DLL int H5FD_mpiposix_mpi_rank(H5FD_t *_file);
-H5_DLL int H5FD_mpiposix_mpi_size(H5FD_t *_file);
#ifdef __cplusplus
}
diff --git a/src/H5FDmulti.c b/src/H5FDmulti.c
index 186d1af..66b22bf 100644
--- a/src/H5FDmulti.c
+++ b/src/H5FDmulti.c
@@ -240,6 +240,29 @@ H5FD_multi_init(void)
}
+/*---------------------------------------------------------------------------
+ * Function: H5FD_multi_term
+ *
+ * Purpose: Shut down the VFD
+ *
+ * Return: <none>
+ *
+ * Programmer: Quincey Koziol
+ * Friday, Jan 30, 2004
+ *
+ * Modification:
+ *
+ *---------------------------------------------------------------------------
+ */
+void
+H5FD_multi_term(void)
+{
+ /* Reset VFL ID */
+ H5FD_MULTI_g=0;
+
+} /* end H5FD_multi_term() */
+
+
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_split
*
diff --git a/src/H5FDmulti.h b/src/H5FDmulti.h
index 959a019..59c1336 100644
--- a/src/H5FDmulti.h
+++ b/src/H5FDmulti.h
@@ -31,8 +31,9 @@
extern "C" {
#endif
H5_DLL hid_t H5FD_multi_init(void);
+H5_DLL void H5FD_multi_term(void);
H5_DLL herr_t H5Pset_fapl_multi(hid_t fapl_id, const H5FD_mem_t *memb_map,
- const hid_t *memb_fapl, const char * const *memb_name,
+ const hid_t *memb_fapl, const char * const *memb_name,
const haddr_t *memb_addr, hbool_t relax);
H5_DLL herr_t H5Pget_fapl_multi(hid_t fapl_id, H5FD_mem_t *memb_map/*out*/,
hid_t *memb_fapl/*out*/, char **memb_name/*out*/,
diff --git a/src/H5FDprivate.h b/src/H5FDprivate.h
index 4266bb9..cd8d4fe 100644
--- a/src/H5FDprivate.h
+++ b/src/H5FDprivate.h
@@ -25,19 +25,13 @@
/* Private headers needed by this file */
/*
- * The MPIO, MPIPOSIX, & FPHDF5 drivers are needed because there are
+ * The MPI drivers are needed because there are
* places where we check for things that aren't handled by these drivers.
*/
-#include "H5FDfphdf5.h"
-#include "H5FDmpio.h"
-#include "H5FDmpiposix.h"
+#include "H5FDmpi.h" /* MPI-based file drivers */
/* Macros */
-/* Single macro to check for all file drivers that use MPI */
-#define IS_H5FD_MPI(file) \
- (IS_H5FD_MPIO(file) || IS_H5FD_MPIPOSIX(file) || IS_H5FD_FPHDF5(file))
-
/* Forward declarations for prototype arguments */
struct H5P_genplist_t;
@@ -54,6 +48,7 @@ H5_DLL herr_t H5FD_fapl_close(hid_t driver_id, void *fapl);
H5_DLL herr_t H5FD_dxpl_open(struct H5P_genplist_t *plist, hid_t driver_id, const void *driver_info);
H5_DLL herr_t H5FD_dxpl_copy(hid_t driver_id, const void *dxpl, void **copied_dxpl);
H5_DLL herr_t H5FD_dxpl_close(hid_t driver_id, void *dxpl);
+H5_DLL hid_t H5FD_register(const void *cls, size_t size);
H5_DLL H5FD_t *H5FD_open(const char *name, unsigned flags, hid_t fapl_id,
haddr_t maxaddr);
H5_DLL herr_t H5FD_close(H5FD_t *file);
diff --git a/src/H5FDsec2.c b/src/H5FDsec2.c
index 2dbc9b2..05720e7 100644
--- a/src/H5FDsec2.c
+++ b/src/H5FDsec2.c
@@ -23,15 +23,20 @@
* I/O from this driver with I/O from other parts of the
* application to the same file).
*/
-#include "H5private.h" /*library functions */
-#include "H5Eprivate.h" /*error handling */
-#include "H5Fprivate.h" /*files */
-#include "H5FDprivate.h" /*file driver */
-#include "H5FDsec2.h" /* Sec2 file driver */
-#include "H5FLprivate.h" /*Free Lists */
-#include "H5Iprivate.h" /*object IDs */
-#include "H5MMprivate.h" /* Memory allocation */
-#include "H5Pprivate.h" /*property lists */
+
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5FD_sec2_mask
+
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Fprivate.h" /* File access */
+#include "H5FDprivate.h" /* File drivers */
+#include "H5FDsec2.h" /* Sec2 file driver */
+#include "H5FLprivate.h" /* Free Lists */
+#include "H5Iprivate.h" /* IDs */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5Pprivate.h" /* Property lists */
#ifdef MAX
#undef MAX
@@ -82,8 +87,8 @@ typedef struct H5FD_sec2_t {
* identifier and the volume serial number to determine whether two
* handles refer to the same file.
*/
- int fileindexlo;
- int fileindexhi;
+ DWORD fileindexlo;
+ DWORD fileindexhi;
#endif
} H5FD_sec2_t;
@@ -109,7 +114,7 @@ typedef struct H5FD_sec2_t {
# /*MSVC*/
# define file_offset_t __int64
# define file_seek _lseeki64
-# define file_truncate _ftruncatei64
+# define file_truncate _chsize
#else
# define file_offset_t off_t
# define file_seek lseek
@@ -136,7 +141,6 @@ typedef struct H5FD_sec2_t {
((A) & ~(haddr_t)MAXADDR))
#define SIZE_OVERFLOW(Z) ((Z) & ~(hsize_t)MAXADDR)
#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
- sizeof(file_offset_t)<sizeof(size_t) || \
HADDR_UNDEF==(A)+(Z) || \
(file_offset_t)((A)+(Z))<(file_offset_t)(A))
@@ -189,14 +193,35 @@ static const H5FD_class_t H5FD_sec2_g = {
};
/* Interface initialization */
-#define PABLO_MASK H5FD_sec2_mask
-#define INTERFACE_INIT H5FD_sec2_init
+#define INTERFACE_INIT H5FD_sec2_init_interface
static int interface_initialize_g = 0;
/* Declare a free list to manage the H5FD_sec2_t struct */
H5FL_DEFINE_STATIC(H5FD_sec2_t);
+/*--------------------------------------------------------------------------
+NAME
+ H5FD_sec2_init_interface -- Initialize interface-specific information
+USAGE
+ herr_t H5FD_sec2_init_interface()
+
+RETURNS
+ Non-negative on success/Negative on failure
+DESCRIPTION
+ Initializes any interface-specific data or routines. (Just calls
+ H5FD_sec2_init currently).
+
+--------------------------------------------------------------------------*/
+static herr_t
+H5FD_sec2_init_interface(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_sec2_init_interface)
+
+ FUNC_LEAVE_NOAPI(H5FD_sec2_init())
+} /* H5FD_sec2_init_interface() */
+
+
/*-------------------------------------------------------------------------
* Function: H5FD_sec2_init
*
@@ -217,21 +242,47 @@ H5FL_DEFINE_STATIC(H5FD_sec2_t);
hid_t
H5FD_sec2_init(void)
{
- hid_t ret_value=H5FD_SEC2_g; /* Return value */
+ hid_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_sec2_init, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_sec2_init, FAIL)
if (H5I_VFL!=H5I_get_type(H5FD_SEC2_g))
- H5FD_SEC2_g = H5FDregister(&H5FD_sec2_g);
+ H5FD_SEC2_g = H5FD_register(&H5FD_sec2_g,sizeof(H5FD_class_t));
/* Set return value */
ret_value=H5FD_SEC2_g;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
+/*---------------------------------------------------------------------------
+ * Function: H5FD_sec2_term
+ *
+ * Purpose: Shut down the VFD
+ *
+ * Return: <none>
+ *
+ * Programmer: Quincey Koziol
+ * Friday, Jan 30, 2004
+ *
+ * Modification:
+ *
+ *---------------------------------------------------------------------------
+ */
+void
+H5FD_sec2_term(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_sec2_term)
+
+ /* Reset VFL ID */
+ H5FD_SEC2_g=0;
+
+ FUNC_LEAVE_NOAPI_VOID
+} /* end H5FD_sec2_term() */
+
+
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_sec2
*
@@ -254,16 +305,16 @@ H5Pset_fapl_sec2(hid_t fapl_id)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
- FUNC_ENTER_API(H5Pset_fapl_sec2, FAIL);
+ FUNC_ENTER_API(H5Pset_fapl_sec2, FAIL)
H5TRACE1("e","i",fapl_id);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
ret_value= H5P_set_driver(plist, H5FD_SEC2, NULL);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -285,6 +336,7 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static H5FD_t *
H5FD_sec2_open(const char *name, unsigned flags, hid_t UNUSED fapl_id,
haddr_t maxaddr)
@@ -295,20 +347,22 @@ H5FD_sec2_open(const char *name, unsigned flags, hid_t UNUSED fapl_id,
#ifdef WIN32
HFILE filehandle;
struct _BY_HANDLE_FILE_INFORMATION fileinfo;
- int results;
#endif
h5_stat_t sb;
H5FD_t *ret_value;
- FUNC_ENTER_NOAPI(H5FD_sec2_open, NULL);
+ FUNC_ENTER_NOAPI(H5FD_sec2_open, NULL)
+
+ /* Sanity check on file offsets */
+ assert(sizeof(file_offset_t)>=sizeof(size_t));
/* Check arguments */
if (!name || !*name)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name")
if (0==maxaddr || HADDR_UNDEF==maxaddr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
if (ADDR_OVERFLOW(maxaddr))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, NULL, "bogus maxaddr")
/* Build the open flags */
o_flags = (H5F_ACC_RDWR & flags) ? O_RDWR : O_RDONLY;
@@ -318,21 +372,21 @@ H5FD_sec2_open(const char *name, unsigned flags, hid_t UNUSED fapl_id,
/* Open the file */
if ((fd=HDopen(name, o_flags, 0666))<0)
- HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file");
+ HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, NULL, "unable to open file")
if (HDfstat(fd, &sb)<0)
- HGOTO_ERROR(H5E_FILE, H5E_BADFILE, NULL, "unable to fstat file");
+ HGOTO_ERROR(H5E_FILE, H5E_BADFILE, NULL, "unable to fstat file")
/* Create the new file struct */
if (NULL==(file=H5FL_CALLOC(H5FD_sec2_t)))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct")
file->fd = fd;
- file->eof = sb.st_size;
+ H5_ASSIGN_OVERFLOW(file->eof,sb.st_size,off_t,haddr_t);
file->pos = HADDR_UNDEF;
file->op = OP_UNKNOWN;
#ifdef WIN32
filehandle = _get_osfhandle(fd);
- results = GetFileInformationByHandle((HANDLE)filehandle, &fileinfo);
+ (void)GetFileInformationByHandle((HANDLE)filehandle, &fileinfo);
file->fileindexhi = fileinfo.nFileIndexHigh;
file->fileindexlo = fileinfo.nFileIndexLow;
#else
@@ -349,7 +403,7 @@ done:
HDclose(fd);
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -375,15 +429,15 @@ H5FD_sec2_close(H5FD_t *_file)
H5FD_sec2_t *file = (H5FD_sec2_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_sec2_close, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_sec2_close, FAIL)
if (HDclose(file->fd)<0)
- HGOTO_ERROR(H5E_IO, H5E_CANTCLOSEFILE, FAIL, "unable to close file");
+ HGOTO_ERROR(H5E_IO, H5E_CANTCLOSEFILE, FAIL, "unable to close file")
H5FL_FREE(H5FD_sec2_t,file);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -412,34 +466,34 @@ H5FD_sec2_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
const H5FD_sec2_t *f2 = (const H5FD_sec2_t*)_f2;
int ret_value=0;
- FUNC_ENTER_NOAPI(H5FD_sec2_cmp, H5FD_VFD_DEFAULT);
+ FUNC_ENTER_NOAPI(H5FD_sec2_cmp, H5FD_VFD_DEFAULT)
#ifdef WIN32
- if (f1->fileindexhi < f2->fileindexhi) HGOTO_DONE(-1);
- if (f1->fileindexhi > f2->fileindexhi) HGOTO_DONE(1);
+ if (f1->fileindexhi < f2->fileindexhi) HGOTO_DONE(-1)
+ if (f1->fileindexhi > f2->fileindexhi) HGOTO_DONE(1)
- if (f1->fileindexlo < f2->fileindexlo) HGOTO_DONE(-1);
- if (f1->fileindexlo > f2->fileindexlo) HGOTO_DONE(1);
+ if (f1->fileindexlo < f2->fileindexlo) HGOTO_DONE(-1)
+ if (f1->fileindexlo > f2->fileindexlo) HGOTO_DONE(1)
#else
#ifdef H5_DEV_T_IS_SCALAR
- if (f1->device < f2->device) HGOTO_DONE(-1);
- if (f1->device > f2->device) HGOTO_DONE(1);
+ if (f1->device < f2->device) HGOTO_DONE(-1)
+ if (f1->device > f2->device) HGOTO_DONE(1)
#else /* H5_DEV_T_IS_SCALAR */
/* If dev_t isn't a scalar value on this system, just use memcmp to
* determine if the values are the same or not. The actual return value
* shouldn't really matter...
*/
- if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))<0) HGOTO_DONE(-1);
- if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))>0) HGOTO_DONE(1);
+ if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))<0) HGOTO_DONE(-1)
+ if(HDmemcmp(&(f1->device),&(f2->device),sizeof(dev_t))>0) HGOTO_DONE(1)
#endif /* H5_DEV_T_IS_SCALAR */
- if (f1->inode < f2->inode) HGOTO_DONE(-1);
- if (f1->inode > f2->inode) HGOTO_DONE(1);
+ if (f1->inode < f2->inode) HGOTO_DONE(-1)
+ if (f1->inode > f2->inode) HGOTO_DONE(1)
#endif
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -460,12 +514,13 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_sec2_query(const H5FD_t UNUSED * _f, unsigned long *flags /* out */)
{
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_sec2_query, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_sec2_query, FAIL)
/* Set the VFL feature flags that this driver supports */
if(flags) {
@@ -477,7 +532,7 @@ H5FD_sec2_query(const H5FD_t UNUSED * _f, unsigned long *flags /* out */)
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -505,13 +560,13 @@ H5FD_sec2_get_eoa(H5FD_t *_file)
H5FD_sec2_t *file = (H5FD_sec2_t*)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_sec2_get_eoa, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_sec2_get_eoa, HADDR_UNDEF)
/* Set return value */
ret_value=file->eoa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -539,12 +594,12 @@ H5FD_sec2_set_eoa(H5FD_t *_file, haddr_t addr)
H5FD_sec2_t *file = (H5FD_sec2_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_sec2_set_eoa, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_sec2_set_eoa, FAIL)
file->eoa = addr;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -574,13 +629,13 @@ H5FD_sec2_get_eof(H5FD_t *_file)
H5FD_sec2_t *file = (H5FD_sec2_t*)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_sec2_get_eof, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_sec2_get_eof, HADDR_UNDEF)
/* Set return value */
ret_value=MAX(file->eof, file->eoa);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -598,20 +653,21 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_sec2_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
{
H5FD_sec2_t *file = (H5FD_sec2_t *)_file;
herr_t ret_value = SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_sec2_get_handle, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_sec2_get_handle, FAIL)
if(!file_handle)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid")
*file_handle = &(file->fd);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -634,6 +690,7 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_sec2_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr_t addr,
size_t size, void *buf/*out*/)
@@ -642,23 +699,23 @@ H5FD_sec2_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, hadd
ssize_t nbytes;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_sec2_read, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_sec2_read, FAIL)
assert(file && file->pub.cls);
assert(buf);
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined")
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
if (addr+size>file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
/* Seek to the correct location */
if ((addr!=file->pos || OP_READ!=file->op) &&
file_seek(file->fd, (file_offset_t)addr, SEEK_SET)<0)
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
/*
* Read data, being careful of interrupted system calls, partial results,
@@ -669,15 +726,17 @@ H5FD_sec2_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, hadd
nbytes = HDread(file->fd, buf, size);
} while (-1==nbytes && EINTR==errno);
if (-1==nbytes) /* error */
- HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed");
+ HGOTO_ERROR(H5E_IO, H5E_READERROR, FAIL, "file read failed")
if (0==nbytes) {
/* end of file but not end of format address space */
HDmemset(buf, 0, size);
- size = 0;
+ break;
}
assert(nbytes>=0);
assert((size_t)nbytes<=size);
- size -= nbytes;
+ H5_CHECK_OVERFLOW(nbytes,ssize_t,size_t);
+ size -= (size_t)nbytes;
+ H5_CHECK_OVERFLOW(nbytes,ssize_t,haddr_t);
addr += (haddr_t)nbytes;
buf = (char*)buf + nbytes;
}
@@ -693,7 +752,7 @@ done:
file->op = OP_UNKNOWN;
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -715,6 +774,7 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_sec2_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr_t addr,
size_t size, const void *buf)
@@ -723,23 +783,23 @@ H5FD_sec2_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, had
ssize_t nbytes;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_sec2_write, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_sec2_write, FAIL)
assert(file && file->pub.cls);
assert(buf);
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "addr undefined")
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
if (addr+size>file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr overflow")
/* Seek to the correct location */
if ((addr!=file->pos || OP_WRITE!=file->op) &&
file_seek(file->fd, (file_offset_t)addr, SEEK_SET)<0)
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to seek to proper position")
/*
* Write the data, being careful of interrupted system calls and partial
@@ -750,10 +810,12 @@ H5FD_sec2_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, had
nbytes = HDwrite(file->fd, buf, size);
} while (-1==nbytes && EINTR==errno);
if (-1==nbytes) /* error */
- HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed");
+ HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "file write failed")
assert(nbytes>0);
assert((size_t)nbytes<=size);
- size -= nbytes;
+ H5_CHECK_OVERFLOW(nbytes,ssize_t,size_t);
+ size -= (size_t)nbytes;
+ H5_CHECK_OVERFLOW(nbytes,ssize_t,haddr_t);
addr += (haddr_t)nbytes;
buf = (const char*)buf + nbytes;
}
@@ -771,7 +833,7 @@ done:
file->op = OP_UNKNOWN;
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -792,13 +854,14 @@ done:
*
*-------------------------------------------------------------------------
*/
+/* ARGSUSED */
static herr_t
H5FD_sec2_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing)
{
H5FD_sec2_t *file = (H5FD_sec2_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_sec2_flush, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_sec2_flush, FAIL)
assert(file);
@@ -813,13 +876,13 @@ H5FD_sec2_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing)
/* Translate 64-bit integers into form Windows wants */
/* [This algorithm is from the Windows documentation for SetFilePointer()] */
- li.QuadPart = file->eoa;
- SetFilePointer((HANDLE)filehandle,li.LowPart,&li.HighPart,FILE_BEGIN);
+ li.QuadPart = (LONGLONG)file->eoa;
+ (void)SetFilePointer((HANDLE)filehandle,li.LowPart,&li.HighPart,FILE_BEGIN);
if(SetEndOfFile((HANDLE)filehandle)==0)
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly")
#else /* WIN32 */
if (-1==file_truncate(file->fd, (file_offset_t)file->eoa))
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "unable to extend file properly")
#endif /* WIN32 */
/* Update the eof value */
@@ -831,5 +894,5 @@ H5FD_sec2_flush(H5FD_t *_file, hid_t UNUSED dxpl_id, unsigned UNUSED closing)
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
diff --git a/src/H5FDsec2.h b/src/H5FDsec2.h
index 7d1e015..7242084 100644
--- a/src/H5FDsec2.h
+++ b/src/H5FDsec2.h
@@ -30,6 +30,7 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_sec2_init(void);
+H5_DLL void H5FD_sec2_term(void);
H5_DLL herr_t H5Pset_fapl_sec2(hid_t fapl_id);
#ifdef __cplusplus
diff --git a/src/H5FDsrb.c b/src/H5FDsrb.c
index 3f315c9..6ae7cbf 100644
--- a/src/H5FDsrb.c
+++ b/src/H5FDsrb.c
@@ -18,14 +18,19 @@
*
* Purpose: SRB I/O driver.
*/
-#include "H5private.h" /*library functions */
-#include "H5Eprivate.h" /*error handling */
-#include "H5Fprivate.h" /*files */
-#include "H5FDprivate.h" /*file driver */
-#include "H5FDsrb.h" /* Core file driver */
-#include "H5Iprivate.h" /*object IDs */
-#include "H5MMprivate.h" /* Memory allocation */
-#include "H5Pprivate.h" /*property lists */
+
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5FD_srb_mask
+
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5Fprivate.h" /* File access */
+#include "H5FDprivate.h" /* File drivers */
+#include "H5FDsrb.h" /* SRB file driver */
+#include "H5Iprivate.h" /* IDs */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5Pprivate.h" /* Property lists */
#ifdef H5_HAVE_SRB
@@ -153,11 +158,32 @@ static const H5FD_class_t H5FD_srb_g = {
};
/* Interface initialization */
-#define PABLO_MASK H5FD_srb_mask
-#define INTERFACE_INIT H5FD_srb_init
+#define INTERFACE_INIT H5FD_srb_init_interface
static int interface_initialize_g = 0;
+/*--------------------------------------------------------------------------
+NAME
+ H5FD_srb_init_interface -- Initialize interface-specific information
+USAGE
+ herr_t H5FD_srb_init_interface()
+
+RETURNS
+ Non-negative on success/Negative on failure
+DESCRIPTION
+ Initializes any interface-specific data or routines. (Just calls
+ H5FD_srb_init currently).
+
+--------------------------------------------------------------------------*/
+static herr_t
+H5FD_srb_init_interface(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_srb_init_interface)
+
+ FUNC_LEAVE_NOAPI(H5FD_srb_init())
+} /* H5FD_srb_init_interface() */
+
+
/*-------------------------------------------------------------------------
* Function: H5FD_srb_init
*
@@ -179,19 +205,45 @@ H5FD_srb_init(void)
{
hid_t ret_value=H5FD_SRB_g; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_srb_init, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_srb_init, FAIL)
if(H5I_VFL != H5Iget_type(H5FD_SRB_g))
- H5FD_SRB_g = H5FDregister(&H5FD_srb_g);
+ H5FD_SRB_g = H5FD_register(&H5FD_srb_g,sizeof(H5FD_class_t));
/* Set return value */
ret_value=H5FD_SRB_g;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
+/*---------------------------------------------------------------------------
+ * Function: H5FD_srb_term
+ *
+ * Purpose: Shut down the VFD
+ *
+ * Return: <none>
+ *
+ * Programmer: Quincey Koziol
+ * Friday, Jan 30, 2004
+ *
+ * Modification:
+ *
+ *---------------------------------------------------------------------------
+ */
+void
+H5FD_srb_term(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_srb_term)
+
+ /* Reset VFL ID */
+ H5FD_SRB_g=0;
+
+ FUNC_LEAVE_NOAPI_VOID
+} /* end H5FD_srb_term() */
+
+
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_srb
*
@@ -222,11 +274,11 @@ H5Pset_fapl_srb(hid_t fapl_id, SRB_Info info)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value;
- FUNC_ENTER_API(H5Pset_fapl_srb, FAIL);
+ FUNC_ENTER_API(H5Pset_fapl_srb, FAIL)
/*NO TRACE*/
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
/*connect to SRB server */
fa.srb_conn = clConnect(info.srbHost, info.srbPort, info.srbAuth);
@@ -235,14 +287,14 @@ H5Pset_fapl_srb(hid_t fapl_id, SRB_Info info)
clFinish(fa.srb_conn);
/*not sure about first 2 parameters. */
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "Connection to srbMaster failed.");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "Connection to srbMaster failed.")
}
fa.info = info;
ret_value = H5P_set_driver(plist, H5FD_SRB, &fa);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -273,21 +325,21 @@ H5Pget_fapl_srb(hid_t fapl_id, SRB_Info *info/*out*/)
H5FD_srb_fapl_t *fa;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Pget_fapl_srb, FAIL);
+ FUNC_ENTER_API(H5Pget_fapl_srb, FAIL)
H5TRACE2("e","ix",fapl_id,info);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
if(H5FD_SRB != H5P_get_driver(plist))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
if(NULL==(fa=H5P_get_driver_info(plist)))
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info")
if(info)
*info = fa->info;
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -321,18 +373,18 @@ H5FD_srb_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
H5P_genplist_t *plist; /* Property list pointer */
H5FD_t *ret_value;
- FUNC_ENTER_NOAPI(H5FD_srb_open, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_srb_open, FAIL)
/* Check arguments */
if (!name || !*name)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, NULL, "invalid file name")
if (0==maxaddr || HADDR_UNDEF==maxaddr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
if (ADDR_OVERFLOW(maxaddr))
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
if(H5P_FILE_ACCESS_DEFAULT==fapl_id || H5FD_SRB!=H5P_get_driver(plist)) {
HDmemset((void*)&_fa, 0, sizeof(H5FD_srb_fapl_t));
fa = &_fa;
@@ -386,9 +438,9 @@ H5FD_srb_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
fprintf(stderr, "cannot open file %s\n", name);
fprintf(stderr,"%s",clErrorMessage(fa->srb_conn));
clFinish(fa->srb_conn);
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, NULL, "cannot open file");
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, NULL, "cannot open file")
#else /* OLD_WAY */
- HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, NULL, clErrorMessage(fa->srb_conn));
+ HGOTO_ERROR(H5E_PLIST, H5E_BADVALUE, NULL, clErrorMessage(fa->srb_conn))
#endif /* OLD_WAY */
}
@@ -397,14 +449,14 @@ H5FD_srb_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
#ifdef OLD_WAY
srbFileClose(fa->srb_conn, srb_fid);
clFinish(fa->srb_conn);
- HGOTO_ERROR(H5E_IO, H5E_BADFILE, NULL, "SRB file stat failed");
+ HGOTO_ERROR(H5E_IO, H5E_BADFILE, NULL, "SRB file stat failed")
#else /* OLD_WAY */
- HGOTO_ERROR(H5E_IO, H5E_BADFILE, NULL, "SRB file stat failed");
+ HGOTO_ERROR(H5E_IO, H5E_BADFILE, NULL, "SRB file stat failed")
#endif /* OLD_WAY */
}
if (NULL==(file=H5MM_calloc(sizeof(H5FD_srb_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "can't allocate file struct");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "can't allocate file struct")
file->fd = srb_fid;
file->eof = srb_stat.st_size;
@@ -422,7 +474,7 @@ done:
if(srb_fid>=0)
srbFileClose(fa->srb_conn, srb_fid);
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -445,7 +497,7 @@ H5FD_srb_close(H5FD_t *_file)
H5FD_srb_t *file = (H5FD_srb_t *)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_srb_close, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_srb_close, FAIL)
srbFileClose(file->srb_conn, file->fd);
clFinish(file->srb_conn);
@@ -453,7 +505,7 @@ H5FD_srb_close(H5FD_t *_file)
H5MM_xfree(file);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -479,7 +531,7 @@ H5FD_srb_query(const UNUSED H5FD_t *_f, unsigned long *flags /* out */)
{
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_srb_query, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_srb_query, FAIL)
/* Set the VFL feature flags that this driver supports */
if(flags) {
@@ -489,7 +541,7 @@ H5FD_srb_query(const UNUSED H5FD_t *_f, unsigned long *flags /* out */)
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -516,13 +568,13 @@ H5FD_srb_get_eoa(H5FD_t *_file)
H5FD_srb_t *file = (H5FD_srb_t *)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_srb_get_eoa, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_srb_get_eoa, HADDR_UNDEF)
/* Set return value */
ret_value=file->eoa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -550,12 +602,12 @@ H5FD_srb_set_eoa(H5FD_t *_file, haddr_t addr)
H5FD_srb_t *file = (H5FD_srb_t *)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_srb_set_eoa, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_srb_set_eoa, FAIL)
file->eoa = addr;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -581,13 +633,13 @@ H5FD_srb_get_eof(H5FD_t *_file)
H5FD_srb_t *file = (H5FD_srb_t *)_file;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_srb_get_eof, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_srb_get_eof, HADDR_UNDEF)
/* Set return value */
ret_value=file->eof;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -611,15 +663,15 @@ H5FD_srb_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
H5FD_srb_t *file = (H5FD_srb_t *)_file;
herr_t ret_value = SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_srb_get_eof, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_srb_get_eof, FAIL)
if(!file_handle)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid")
*file_handle = &(file->fd);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -645,19 +697,19 @@ H5FD_srb_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr
ssize_t nbytes;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_srb_read, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_srb_read, FAIL)
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "addr undefined");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "addr undefined")
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large")
if (addr+size>file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large")
if( addr!=file->pos &&
srbFileSeek(file->srb_conn, (int)file->fd, (int)addr, SEEK_SET)<0 )
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "srb file seek failed");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "srb file seek failed")
/*
* Read data, being careful of interrupted system calls, partial results,
@@ -665,7 +717,7 @@ H5FD_srb_read(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, haddr
*/
while(size>0) {
if((nbytes=srbFileRead(file->srb_conn, (int)file->fd, (char*)buf, size))<0)
- HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "srb file write failed");
+ HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "srb file write failed")
if (0==nbytes) {
/*end of file but not end of format address space*/
@@ -690,7 +742,7 @@ done:
clFinish(file->srb_conn);
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -717,23 +769,23 @@ H5FD_srb_write(H5FD_t *_file, H5FD_mem_t UNUSED type, hid_t UNUSED dxpl_id, hadd
ssize_t nbytes;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_srb_write, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_srb_write, FAIL)
/* Check for overflow conditions */
if (HADDR_UNDEF==addr)
- HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "addr undefined");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADRANGE, FAIL, "addr undefined")
if (REGION_OVERFLOW(addr, size))
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large")
if (addr+size>file->eoa)
- HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large");
+ HGOTO_ERROR(H5E_ARGS, H5E_OVERFLOW, FAIL, "addr too large")
if( addr!=file->pos &&
srbFileSeek(file->srb_conn, (int)file->fd, (int)addr, SEEK_SET)<0 )
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "srb file seek failed");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "srb file seek failed")
while(size>0) {
if( (nbytes=srbFileWrite(file->srb_conn, (int)file->fd, (char*)buf, size)) < 0 )
- HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "srb file write failed");
+ HGOTO_ERROR(H5E_IO, H5E_WRITEERROR, FAIL, "srb file write failed")
size -= nbytes;
addr += (haddr_t)nbytes;
@@ -755,7 +807,7 @@ done:
clFinish(file->srb_conn);
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -778,10 +830,10 @@ H5FD_srb_flush(H5FD_t *_file, hid_t dxpl_id, unsigned UNUSED closing)
H5FD_srb_t *file = (H5FD_srb_t*)_file;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_srb_flush, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_srb_flush, FAIL)
if(srbFileSync(file->srb_conn, file->fd) != 0)
- HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "srb file sync failed");
+ HGOTO_ERROR(H5E_IO, H5E_SEEKERROR, FAIL, "srb file sync failed")
done:
if(ret_value<0) {
@@ -789,7 +841,7 @@ done:
clFinish(file->srb_conn);
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
#endif /* H5_HAVE_SRB */
diff --git a/src/H5FDsrb.h b/src/H5FDsrb.h
index 86b7f91..053ca51 100644
--- a/src/H5FDsrb.h
+++ b/src/H5FDsrb.h
@@ -42,6 +42,7 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_srb_init(void);
+H5_DLL void H5FD_srb_term(void);
H5_DLL herr_t H5Pset_fapl_srb(hid_t fapl_id, SRB_Info info);
H5_DLL herr_t H5Pget_fapl_srb(hid_t fapl_id, SRB_Info *info);
diff --git a/src/H5FDstdio.c b/src/H5FDstdio.c
index c15fe35..1e60d08 100644
--- a/src/H5FDstdio.c
+++ b/src/H5FDstdio.c
@@ -27,6 +27,11 @@
#include <stdlib.h>
#include <sys/stat.h>
+/* Disable certain warnings in PC-Lint: */
+/*lint --emacro( {534, 830}, H5P_FILE_ACCESS) */
+/*lint --emacro( {534, 830}, H5F_ACC_RDWR, H5F_ACC_EXCL) */
+/*lint -esym( 534, H5Eclear, H5Epush) */
+
#include "hdf5.h"
#ifdef H5_HAVE_STDIO_H
@@ -39,6 +44,12 @@
#ifdef WIN32
#include <windows.h>
#include <io.h>
+
+/* This is not defined in the Windows header files */
+#ifndef F_OK
+#define F_OK 00
+#endif
+
#endif
@@ -47,12 +58,6 @@
#endif /* MAX */
#define MAX(X,Y) ((X)>(Y)?(X):(Y))
-#ifndef F_OK
-#define F_OK 00
-#define W_OK 02
-#define R_OK 04
-#endif
-
/* The driver identification number, initialized at runtime */
static hid_t H5FD_STDIO_g = 0;
@@ -101,8 +106,8 @@ typedef struct H5FD_stdio_t {
* identifier and the volume serial number to determine whether two
* handles refer to the same file.
*/
- int fileindexlo;
- int fileindexhi;
+ DWORD fileindexlo;
+ DWORD fileindexhi;
#endif
} H5FD_stdio_t;
@@ -122,22 +127,11 @@ typedef struct H5FD_stdio_t {
* argument of the file seek function.
*/
/* adding for windows NT filesystem support. */
-#ifdef WIN32
-#define MAXADDR (((haddr_t)1<<(8*sizeof(LONGLONG)-1))-1)
-#else
-#define MAXADDR (((haddr_t)1<<(8*sizeof(long)-1))-1)
-#endif
-
+#define MAXADDR (((haddr_t)1<<(8*sizeof(file_offset_t)-1))-1)
#define ADDR_OVERFLOW(A) (HADDR_UNDEF==(A) || ((A) & ~(haddr_t)MAXADDR))
#define SIZE_OVERFLOW(Z) ((Z) & ~(hsize_t)MAXADDR)
-
-#ifdef WIN32
-#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
- sizeof(LONGLONG)<sizeof(size_t) || HADDR_UNDEF==(A)+(Z) || (LONGLONG)((A)+(Z))<(LONGLONG)(A))
-#else
#define REGION_OVERFLOW(A,Z) (ADDR_OVERFLOW(A) || SIZE_OVERFLOW(Z) || \
- sizeof(long)<sizeof(size_t) || HADDR_UNDEF==(A)+(Z) || (long)((A)+(Z))<(long)(A))
-#endif
+ HADDR_UNDEF==(A)+(Z) || (file_offset_t)((A)+(Z))<(file_offset_t)(A))
#ifdef H5_HAVE_LSEEK64
# define file_offset_t off64_t
@@ -145,7 +139,7 @@ typedef struct H5FD_stdio_t {
#elif defined (WIN32) && !defined(__MWERKS__)
# /*MSVC*/
# define file_offset_t __int64
-# define file_truncate _ftruncatei64
+# define file_truncate _chsize
#else
# define file_offset_t off_t
# define file_truncate ftruncate
@@ -230,6 +224,29 @@ H5FD_stdio_init(void)
}
+/*---------------------------------------------------------------------------
+ * Function: H5FD_stdio_term
+ *
+ * Purpose: Shut down the VFD
+ *
+ * Return: <none>
+ *
+ * Programmer: Quincey Koziol
+ * Friday, Jan 30, 2004
+ *
+ * Modification:
+ *
+ *---------------------------------------------------------------------------
+ */
+void
+H5FD_stdio_term(void)
+{
+ /* Reset VFL ID */
+ H5FD_STDIO_g=0;
+
+} /* end H5FD_stdio_term() */
+
+
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_stdio
*
@@ -304,11 +321,13 @@ H5FD_stdio_open( const char *name, unsigned flags, hid_t fapl_id,
HFILE filehandle;
struct _BY_HANDLE_FILE_INFORMATION fileinfo;
int fd;
- int results;
#else /* WIN32 */
struct stat sb;
#endif /* WIN32 */
+ /* Sanity check on file offsets */
+ assert(sizeof(file_offset_t)>=sizeof(size_t));
+
/* Shut compiler up */
fapl_id=fapl_id;
@@ -356,7 +375,7 @@ H5FD_stdio_open( const char *name, unsigned flags, hid_t fapl_id,
} else {
long x = ftell (file->fp);
assert (x>=0);
- file->eof = x;
+ file->eof = (haddr_t)x;
}
/* The unique key */
@@ -364,7 +383,7 @@ H5FD_stdio_open( const char *name, unsigned flags, hid_t fapl_id,
/*#error "Needs correct fileindexhi & fileindexlo, code below is from sec2 driver"*/
fd = _fileno(f);
filehandle = _get_osfhandle(fd);
- results = GetFileInformationByHandle((HANDLE)filehandle, &fileinfo);
+ (void)GetFileInformationByHandle((HANDLE)filehandle, &fileinfo);
file->fileindexhi = fileinfo.nFileIndexHigh;
file->fileindexlo = fileinfo.nFileIndexLow;
#else
@@ -625,7 +644,7 @@ H5FD_stdio_get_handle(H5FD_t *_file, hid_t fapl, void** file_handle)
/* Clear the error stack */
H5Eclear();
-
+
*file_handle = &(file->fp);
if(*file_handle==NULL)
H5Epush_ret(func, H5E_IO, H5E_WRITEERROR, "get handle failed", -1);
@@ -683,7 +702,7 @@ H5FD_stdio_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, siz
/* Check easy cases */
if (0 == size)
return(0);
- if ((haddr_t)addr >= file->eof) {
+ if ((haddr_t)addr >= file->eof) {
memset(buf, 0, size);
return(0);
}
@@ -693,28 +712,18 @@ H5FD_stdio_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, siz
*/
if (!(file->op == H5FD_STDIO_OP_READ || file->op==H5FD_STDIO_OP_SEEK) ||
file->pos != addr) {
-#ifdef WIN32
- fpos_t tempos =(fpos_t)(addr+SEEK_SET);
- if (fsetpos(file->fp,&tempos)!=0) {
- file->op = H5FD_STDIO_OP_UNKNOWN;
- file->pos = HADDR_UNDEF;
- H5Epush_ret(func, H5E_IO, H5E_SEEKERROR, "fsetpos failed", -1);
- }
-#else
-
if (fseek(file->fp, (long)addr, SEEK_SET) < 0) {
file->op = H5FD_STDIO_OP_UNKNOWN;
file->pos = HADDR_UNDEF;
H5Epush_ret(func, H5E_IO, H5E_SEEKERROR, "fseek failed", -1);
}
-#endif
file->pos = addr;
}
/*
* Read zeros past the logical end of file (physical is handled below)
*/
- if ((size_t) addr + size > file->eof) {
+ if (addr + size > file->eof) {
size_t nbytes = (size_t) (addr + size - file->eof);
memset((unsigned char *)buf + size - nbytes, 0, nbytes);
size -= nbytes;
@@ -722,11 +731,11 @@ H5FD_stdio_read(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, siz
/*
* Read the data. Since we're reading single-byte values, a partial read
- * will advance the file position by N. If N is negative or an error
+ * will advance the file position by N. If N is zero or an error
* occurs then the file position is undefined.
*/
n = fread(buf, 1, size, file->fp);
- if (n <= 0 && ferror(file->fp)) {
+ if (n == 0 && ferror(file->fp)) {
file->op = H5FD_STDIO_OP_UNKNOWN;
file->pos = HADDR_UNDEF;
H5Epush_ret(func, H5E_IO, H5E_READERROR, "fread failed", -1);
@@ -770,10 +779,6 @@ static herr_t
H5FD_stdio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
size_t size, const void *buf)
{
-#ifdef WIN32
- fpos_t tempos;
-#endif
-
H5FD_stdio_t *file = (H5FD_stdio_t*)_file;
static const char *func="H5FD_stdio_write"; /* Function Name for error reporting */
@@ -797,21 +802,11 @@ H5FD_stdio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
*/
if ((file->op != H5FD_STDIO_OP_WRITE && file->op != H5FD_STDIO_OP_SEEK) ||
file->pos != addr) {
-#ifdef WIN32
- tempos =(fpos_t)(addr+SEEK_SET);
-
- if (fsetpos(file->fp,&tempos) != 0) {
- file->op = H5FD_STDIO_OP_UNKNOWN;
- file->pos = HADDR_UNDEF;
- H5Epush_ret(func, H5E_IO, H5E_SEEKERROR, "fsetpos failed", -1);
- }
-#else
if (fseek(file->fp, (long)addr, SEEK_SET) < 0) {
file->op = H5FD_STDIO_OP_UNKNOWN;
file->pos = HADDR_UNDEF;
H5Epush_ret(func, H5E_IO, H5E_SEEKERROR, "fseek failed", -1);
}
-#endif /* WIN32 */
file->pos = addr;
}
@@ -831,18 +826,7 @@ H5FD_stdio_write(H5FD_t *_file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr,
*/
file->op = H5FD_STDIO_OP_WRITE;
file->pos = addr + size;
-/* The following code needs to be added for windows VC 6.0. This should be a VC++
- compiler bug. When not using ftell and fseek, although you reset the position to
- the starting of the file, fwrite will somehow to go to the end of the file and
- add contents. It seems they used a circular seeking algorithm, the starting point
- overlaps with the ending point and windows doesn't handle correctly for the case when
- file was written to the disk close to the end of the file and rewrite from the beginning
- of the file. This is how HDF5 signature was written for some failing cases. */
-#ifdef WIN32
- tempos = ftell(file->fp);
- fseek(file->fp,(long)tempos,SEEK_SET);
-#endif
/* Update EOF if necessary */
if (file->pos>file->eof)
file->eof = file->pos;
@@ -886,22 +870,23 @@ H5FD_stdio_flush(H5FD_t *_file, hid_t dxpl_id, unsigned closing)
if(file->write_access) {
/* Makes sure that the true file size is the same as the end-of-address. */
if (file->eoa!=file->eof) {
- int fd=fileno(file->fp); /* File descriptor for HDF5 file */
#ifdef WIN32
+ int fd=_fileno(file->fp); /* File descriptor for HDF5 file */
HFILE filehandle; /* Windows file handle */
LARGE_INTEGER li; /* 64-bit integer for SetFilePointer() call */
- fd = _fileno(file->fp);
/* Map the posix file handle to a Windows file handle */
filehandle = _get_osfhandle(fd);
/* Translate 64-bit integers into form Windows wants */
/* [This algorithm is from the Windows documentation for SetFilePointer()] */
- li.QuadPart = file->eoa;
- SetFilePointer((HANDLE)filehandle,li.LowPart,&li.HighPart,FILE_BEGIN);
+ li.QuadPart = (LONGLONG)file->eoa;
+ (void)SetFilePointer((HANDLE)filehandle,li.LowPart,&li.HighPart,FILE_BEGIN);
if(SetEndOfFile((HANDLE)filehandle)==0)
H5Epush_ret(func, H5E_IO, H5E_SEEKERROR, "unable to extend file properly", -1);
#else /* WIN32 */
+ int fd=fileno(file->fp); /* File descriptor for HDF5 file */
+
if (-1==file_truncate(fd, (file_offset_t)file->eoa))
H5Epush_ret(func, H5E_IO, H5E_SEEKERROR, "unable to extend file properly", -1);
#endif /* WIN32 */
diff --git a/src/H5FDstdio.h b/src/H5FDstdio.h
index 0b2b2b9..5c18a4f 100644
--- a/src/H5FDstdio.h
+++ b/src/H5FDstdio.h
@@ -30,6 +30,7 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_stdio_init(void);
+H5_DLL void H5FD_stdio_term(void);
H5_DLL herr_t H5Pset_fapl_stdio(hid_t fapl_id);
#ifdef __cplusplus
diff --git a/src/H5FDstream.c b/src/H5FDstream.c
index 72cf0d1..d3dad5e 100644
--- a/src/H5FDstream.c
+++ b/src/H5FDstream.c
@@ -12,8 +12,6 @@
* In addition to that, the memory image of the file is
* read from/written to a socket during an open/flush operation.
*
- * Version: $Id$
- *
* Modifications:
* Thomas Radke, Thursday, October 26, 2000
* Added support for Windows.
@@ -21,18 +19,22 @@
*
*/
-#include "H5private.h" /* library function */
+
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5FD_stream_mask
+
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5FDprivate.h" /* File drivers */
+#include "H5FDstream.h" /* Stream file driver */
+#include "H5Iprivate.h" /* IDs */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5Pprivate.h" /* Property lists */
/* Only build this driver if it was configured with --with-Stream-VFD */
#ifdef H5_HAVE_STREAM
-#include "H5Eprivate.h" /* error handling */
-#include "H5FDpublic.h" /* Public VFD header */
-#include "H5FDstream.h" /* Stream VFD header */
-#include "H5Iprivate.h" /* IDs */
-#include "H5MMprivate.h" /* memory allocation */
-#include "H5Pprivate.h" /* property prototypes */
-
#ifdef H5FD_STREAM_HAVE_UNIX_SOCKETS
#ifdef H5_HAVE_SYS_TYPES_H
#include <sys/types.h> /* socket stuff */
@@ -201,10 +203,32 @@ static const H5FD_class_t H5FD_stream_g = {
};
/* Interface initialization */
-#define INTERFACE_INIT H5FD_stream_init
+#define INTERFACE_INIT H5FD_stream_init_interface
static int interface_initialize_g = 0;
+/*--------------------------------------------------------------------------
+NAME
+ H5FD_stream_init_interface -- Initialize interface-specific information
+USAGE
+ herr_t H5FD_stream_init_interface()
+
+RETURNS
+ Non-negative on success/Negative on failure
+DESCRIPTION
+ Initializes any interface-specific data or routines. (Just calls
+ H5FD_stream_init currently).
+
+--------------------------------------------------------------------------*/
+static herr_t
+H5FD_stream_init_interface(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_stream_init_interface)
+
+ FUNC_LEAVE_NOAPI(H5FD_stream_init())
+} /* H5FD_stream_init_interface() */
+
+
/*-------------------------------------------------------------------------
* Function: H5FD_stream_init
*
@@ -224,10 +248,10 @@ hid_t H5FD_stream_init (void)
{
hid_t ret_value=H5FD_STREAM_g; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_stream_init, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_stream_init, FAIL)
if (H5I_VFL != H5Iget_type (H5FD_STREAM_g)) {
- H5FD_STREAM_g = H5FDregister (&H5FD_stream_g);
+ H5FD_STREAM_g = H5FD_register (&H5FD_stream_g,sizeof(H5FD_class_t));
/* set the process signal mask to ignore SIGPIPE signals */
/* NOTE: Windows doesn't know SIGPIPE signals that's why the #ifdef */
@@ -242,10 +266,36 @@ hid_t H5FD_stream_init (void)
ret_value=H5FD_STREAM_g;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
+/*---------------------------------------------------------------------------
+ * Function: H5FD_stream_term
+ *
+ * Purpose: Shut down the VFD
+ *
+ * Return: <none>
+ *
+ * Programmer: Quincey Koziol
+ * Friday, Jan 30, 2004
+ *
+ * Modification:
+ *
+ *---------------------------------------------------------------------------
+ */
+void
+H5FD_stream_term(void)
+{
+ FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_stream_term)
+
+ /* Reset VFL ID */
+ H5FD_STREAM_g=0;
+
+ FUNC_LEAVE_NOAPI_VOID
+} /* end H5FD_stream_term() */
+
+
/*-------------------------------------------------------------------------
* Function: H5Pset_fapl_stream
*
@@ -272,15 +322,15 @@ herr_t H5Pset_fapl_stream (hid_t fapl_id, H5FD_stream_fapl_t *fapl)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Pset_fapl_stream, FAIL);
+ FUNC_ENTER_API(H5Pset_fapl_stream, FAIL)
H5TRACE2 ("e", "ix", fapl_id, fapl);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR (H5E_PLIST, H5E_BADTYPE, FAIL, "not a fapl");
+ HGOTO_ERROR (H5E_PLIST, H5E_BADTYPE, FAIL, "not a fapl")
if (fapl) {
if (! fapl->do_socket_io && fapl->broadcast_fn == NULL)
- HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "read broadcast function pointer is NULL");
+ HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, "read broadcast function pointer is NULL")
user_fapl = *fapl;
if (fapl->increment == 0)
@@ -292,7 +342,7 @@ herr_t H5Pset_fapl_stream (hid_t fapl_id, H5FD_stream_fapl_t *fapl)
ret_value = H5P_set_driver (plist, H5FD_STREAM, &default_fapl);
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -317,21 +367,21 @@ herr_t H5Pget_fapl_stream(hid_t fapl_id, H5FD_stream_fapl_t *fapl /* out */)
H5P_genplist_t *plist; /* Property list pointer */
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_API(H5Pget_fapl_stream, FAIL);
+ FUNC_ENTER_API(H5Pget_fapl_stream, FAIL)
H5TRACE2("e","ix",fapl_id,fapl);
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR (H5E_PLIST, H5E_BADTYPE, FAIL, "not a fapl");
+ HGOTO_ERROR (H5E_PLIST, H5E_BADTYPE, FAIL, "not a fapl")
if (H5FD_STREAM != H5P_get_driver (plist))
- HGOTO_ERROR (H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver");
+ HGOTO_ERROR (H5E_PLIST, H5E_BADVALUE, FAIL, "incorrect VFL driver")
if (NULL == (this_fapl = H5P_get_driver_info (plist)))
- HGOTO_ERROR (H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info");
+ HGOTO_ERROR (H5E_PLIST, H5E_BADVALUE, FAIL, "bad VFL driver info")
if (fapl)
*fapl = *this_fapl;
done:
- FUNC_LEAVE_API(ret_value);
+ FUNC_LEAVE_API(ret_value)
}
@@ -357,10 +407,10 @@ H5FD_stream_fapl_get (H5FD_t *_stream)
H5FD_stream_fapl_t *fapl;
void *ret_value;
- FUNC_ENTER_NOAPI(H5FD_stream_fapl_get, NULL);
+ FUNC_ENTER_NOAPI(H5FD_stream_fapl_get, NULL)
if ((fapl = H5MM_calloc (sizeof (H5FD_stream_fapl_t))) == NULL)
- HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed");
+ HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, NULL, "memory allocation failed")
*fapl = stream->fapl;
@@ -368,7 +418,7 @@ H5FD_stream_fapl_get (H5FD_t *_stream)
ret_value=fapl;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -385,20 +435,20 @@ H5FD_stream_open_socket (const char *filename, int o_flags,
int on = 1;
H5FD_STREAM_SOCKET_TYPE ret_value=H5FD_STREAM_INVALID_SOCKET;
- FUNC_ENTER_NOAPI_NOINIT(H5FD_stream_open_socket);
+ FUNC_ENTER_NOAPI_NOINIT(H5FD_stream_open_socket)
/* Parse "hostname:port" from filename argument */
for (separator = filename; *separator != ':' && *separator; separator++)
;
if (separator == filename || !*separator) {
- HGOTO_ERROR(H5E_ARGS,H5E_BADVALUE,H5FD_STREAM_INVALID_SOCKET,"invalid host address");
+ HGOTO_ERROR(H5E_ARGS,H5E_BADVALUE,H5FD_STREAM_INVALID_SOCKET,"invalid host address")
} else {
tmp = separator;
if (! tmp[1])
- HGOTO_ERROR(H5E_ARGS,H5E_BADVALUE,H5FD_STREAM_INVALID_SOCKET,"no port number");
+ HGOTO_ERROR(H5E_ARGS,H5E_BADVALUE,H5FD_STREAM_INVALID_SOCKET,"no port number")
while (*++tmp) {
if (! isdigit (*tmp))
- HGOTO_ERROR(H5E_ARGS,H5E_BADVALUE,H5FD_STREAM_INVALID_SOCKET,"invalid port number");
+ HGOTO_ERROR(H5E_ARGS,H5E_BADVALUE,H5FD_STREAM_INVALID_SOCKET,"invalid port number")
}
}
@@ -406,7 +456,7 @@ H5FD_stream_open_socket (const char *filename, int o_flags,
/* Return if out of memory */
if (hostname == NULL)
- HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"memory allocation failed");
+ HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"memory allocation failed")
HDstrncpy (hostname, filename, (size_t)(separator - filename));
hostname[separator - filename] = 0;
@@ -417,9 +467,9 @@ H5FD_stream_open_socket (const char *filename, int o_flags,
server.sin_port = htons (fapl->port);
if (! (he = gethostbyname (hostname))) {
- HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to get host address");
+ HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to get host address")
} else if (H5FD_STREAM_ERROR_CHECK (sock = socket (AF_INET, SOCK_STREAM, 0)))
- HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to open socket");
+ HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to open socket")
if (O_RDONLY == o_flags) {
HDmemcpy (&server.sin_addr, he->h_addr, (size_t)he->h_length);
@@ -428,18 +478,18 @@ H5FD_stream_open_socket (const char *filename, int o_flags,
hostname, fapl->port);
#endif
if (connect (sock, (struct sockaddr *) &server, sizeof (server)) < 0)
- HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to connect");
+ HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to connect")
}
else {
server.sin_addr.s_addr = INADDR_ANY;
if (H5FD_STREAM_IOCTL_SOCKET (sock, FIONBIO, &on) < 0) {
- HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to set non-blocking mode for socket");
+ HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to set non-blocking mode for socket")
} else if (setsockopt (sock, IPPROTO_TCP, TCP_NODELAY, (const char *) &on,
sizeof(on)) < 0) {
- HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to set socket option TCP_NODELAY");
+ HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to set socket option TCP_NODELAY")
} else if (setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, (const char *) &on,
sizeof(on)) < 0) {
- HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to set socket option SO_REUSEADDR");
+ HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to set socket option SO_REUSEADDR")
} else {
/* Try to bind the socket to the given port.
If maxhunt is given try some successive ports also. */
@@ -456,10 +506,10 @@ H5FD_stream_open_socket (const char *filename, int o_flags,
}
if (fapl->port > first_port + fapl->maxhunt) {
fapl->port = 0;
- HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to bind socket");
+ HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to bind socket")
}
else if (listen (sock, fapl->backlog) < 0)
- HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to listen on socket");
+ HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,H5FD_STREAM_INVALID_SOCKET,"unable to listen on socket")
}
}
@@ -477,7 +527,7 @@ done:
H5FD_STREAM_CLOSE_SOCKET(sock);
} /* end if */
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -489,7 +539,7 @@ H5FD_stream_read_from_socket (H5FD_stream_t *stream)
unsigned char *ptr=NULL;
herr_t ret_value=SUCCEED;
- FUNC_ENTER_NOAPI_NOINIT(H5FD_stream_read_from_socket);
+ FUNC_ENTER_NOAPI_NOINIT(H5FD_stream_read_from_socket)
stream->eof = 0;
stream->mem = NULL;
@@ -506,7 +556,7 @@ H5FD_stream_read_from_socket (H5FD_stream_t *stream)
max_size++;
ptr = H5MM_realloc (stream->mem, (size_t) (stream->eof + max_size));
if (! ptr)
- HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,FAIL,"unable to allocate file space buffer");
+ HGOTO_ERROR(H5E_RESOURCE,H5E_NOSPACE,FAIL,"unable to allocate file space buffer")
stream->mem = ptr;
ptr += stream->eof;
}
@@ -517,7 +567,7 @@ H5FD_stream_read_from_socket (H5FD_stream_t *stream)
if (size < 0 && (EINTR == errno || EAGAIN == errno || EWOULDBLOCK))
continue;
if (size < 0)
- HGOTO_ERROR(H5E_IO,H5E_READERROR,FAIL,"error reading from file from socket");
+ HGOTO_ERROR(H5E_IO,H5E_READERROR,FAIL,"error reading from file from socket")
if (! size)
break;
max_size -= (size_t) size;
@@ -534,7 +584,7 @@ H5FD_stream_read_from_socket (H5FD_stream_t *stream)
(int) stream->eof);
#endif
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -570,15 +620,15 @@ H5FD_stream_open (const char *filename,
H5P_genplist_t *plist=NULL; /* Property list pointer */
H5FD_t *ret_value; /* Function return value */
- FUNC_ENTER_NOAPI(H5FD_stream_open, NULL);
+ FUNC_ENTER_NOAPI(H5FD_stream_open, NULL)
/* Check arguments */
if (filename == NULL|| *filename == '\0')
- HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, NULL,"invalid file name");
+ HGOTO_ERROR (H5E_ARGS, H5E_BADVALUE, NULL,"invalid file name")
if (maxaddr == 0 || HADDR_UNDEF == maxaddr)
- HGOTO_ERROR (H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr");
+ HGOTO_ERROR (H5E_ARGS, H5E_BADRANGE, NULL, "bogus maxaddr")
if (ADDR_OVERFLOW (maxaddr))
- HGOTO_ERROR (H5E_ARGS, H5E_OVERFLOW, NULL, "maxaddr overflow");
+ HGOTO_ERROR (H5E_ARGS, H5E_OVERFLOW, NULL, "maxaddr overflow")
/* Build the open flags */
o_flags = (H5F_ACC_RDWR & flags) ? O_RDWR : O_RDONLY;
@@ -587,17 +637,17 @@ H5FD_stream_open (const char *filename,
if (H5F_ACC_EXCL & flags) o_flags |= O_EXCL;
if ((O_RDWR & o_flags) && ! (O_CREAT & o_flags))
- HGOTO_ERROR (H5E_ARGS, H5E_UNSUPPORTED, NULL, "open stream for read/write not supported");
+ HGOTO_ERROR (H5E_ARGS, H5E_UNSUPPORTED, NULL, "open stream for read/write not supported")
#ifdef WIN32
if (WSAStartup (MAKEWORD (2, 0), &wsadata))
- HGOTO_ERROR (H5E_IO, H5E_CANTINIT, NULL, "Couldn't start Win32 socket layer");
+ HGOTO_ERROR (H5E_IO, H5E_CANTINIT, NULL, "Couldn't start Win32 socket layer")
#endif
fapl = NULL;
if (H5P_FILE_ACCESS_DEFAULT != fapl_id) {
if(NULL == (plist = H5P_object_verify(fapl_id,H5P_FILE_ACCESS)))
- HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, NULL, "not a file access property list")
fapl = H5P_get_driver_info (plist);
}
if (fapl == NULL)
@@ -606,7 +656,7 @@ H5FD_stream_open (const char *filename,
/* Create the new file struct */
stream = (H5FD_stream_t *) H5MM_calloc (sizeof (H5FD_stream_t));
if (stream == NULL)
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct");
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "unable to allocate file struct")
stream->fapl = *fapl;
stream->socket = H5FD_STREAM_INVALID_SOCKET;
@@ -627,7 +677,7 @@ H5FD_stream_open (const char *filename,
H5P_set_driver (plist, H5FD_STREAM, &stream->fapl);
}
else
- HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "can't open internal socket");
+ HGOTO_ERROR(H5E_IO, H5E_CANTOPENFILE, NULL, "can't open internal socket")
}
}
@@ -638,18 +688,18 @@ H5FD_stream_open (const char *filename,
fprintf (stderr, "Stream VFD: reading file from socket\n");
#endif
if(H5FD_stream_read_from_socket (stream)<0)
- HGOTO_ERROR(H5E_IO, H5E_READERROR, NULL, "can't read file from socket");
+ HGOTO_ERROR(H5E_IO, H5E_READERROR, NULL, "can't read file from socket")
}
/* Now call the user's broadcast routine if given */
if (fapl->broadcast_fn) {
if ((fapl->broadcast_fn) (&stream->mem, &stream->eof,
fapl->broadcast_arg) < 0)
- HGOTO_ERROR(H5E_IO, H5E_READERROR, NULL, "broadcast error");
+ HGOTO_ERROR(H5E_IO, H5E_READERROR, NULL, "broadcast error")
/* check for filesize of zero bytes */
if (stream->eof == 0)
- HGOTO_ERROR(H5E_IO, H5E_READERROR, NULL, "zero filesize");
+ HGOTO_ERROR(H5E_IO, H5E_READERROR, NULL, "zero filesize")
}
/* For files which are read from a socket:
@@ -673,7 +723,7 @@ done:
} /* end if */
}
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -706,7 +756,7 @@ H5FD_stream_flush (H5FD_t *_stream, hid_t UNUSED dxpl_id, unsigned UNUSED closin
H5FD_STREAM_SOCKET_TYPE sock;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_stream_flush, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_stream_flush, FAIL)
/* Write to backing store */
if (stream->dirty && ! H5FD_STREAM_ERROR_CHECK (stream->socket)) {
@@ -746,7 +796,7 @@ H5FD_stream_flush (H5FD_t *_stream, hid_t UNUSED dxpl_id, unsigned UNUSED closin
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -771,7 +821,7 @@ H5FD_stream_close (H5FD_t *_stream)
H5FD_stream_t *stream = (H5FD_stream_t *) _stream;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_stream_close, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_stream_close, FAIL)
/* Release resources */
if (! H5FD_STREAM_ERROR_CHECK (stream->socket) && stream->internal_socket)
@@ -782,7 +832,7 @@ H5FD_stream_close (H5FD_t *_stream)
H5MM_xfree (stream);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -809,7 +859,7 @@ H5FD_stream_query(const H5FD_t UNUSED * _f,
{
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_stream_query, SUCCEED);
+ FUNC_ENTER_NOAPI(H5FD_stream_query, SUCCEED)
/* Set the VFL feature flags that this driver supports */
if (flags) {
@@ -820,7 +870,7 @@ H5FD_stream_query(const H5FD_t UNUSED * _f,
}
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -847,13 +897,13 @@ H5FD_stream_get_eoa (H5FD_t *_stream)
H5FD_stream_t *stream = (H5FD_stream_t *) _stream;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_stream_get_eoa, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_stream_get_eoa, HADDR_UNDEF)
/* Set return value */
ret_value=stream->eoa;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -880,15 +930,15 @@ H5FD_stream_set_eoa (H5FD_t *_stream, haddr_t addr)
H5FD_stream_t *stream = (H5FD_stream_t *) _stream;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_stream_set_eoa, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_stream_set_eoa, FAIL)
if (ADDR_OVERFLOW (addr))
- HGOTO_ERROR (H5E_ARGS, H5E_OVERFLOW, FAIL, "address overflow");
+ HGOTO_ERROR (H5E_ARGS, H5E_OVERFLOW, FAIL, "address overflow")
stream->eoa = addr;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -917,13 +967,13 @@ H5FD_stream_get_eof (H5FD_t *_stream)
H5FD_stream_t *stream = (H5FD_stream_t *) _stream;
haddr_t ret_value; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_stream_get_eof, HADDR_UNDEF);
+ FUNC_ENTER_NOAPI(H5FD_stream_get_eof, HADDR_UNDEF)
/* Set return value */
ret_value= MAX (stream->eof, stream->eoa);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -947,15 +997,15 @@ H5FD_stream_get_handle(H5FD_t *_file, hid_t UNUSED fapl, void** file_handle)
H5FD_stream_t *file = (H5FD_stream_t *)_file;
herr_t ret_value = SUCCEED;
- FUNC_ENTER_NOAPI(H5FD_stream_get_handle, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_stream_get_handle, FAIL)
if(!file_handle)
- HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid");
+ HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "file handle not valid")
*file_handle = &(file->socket);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -990,18 +1040,18 @@ H5FD_stream_read (H5FD_t *_stream,
size_t nbytes;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_stream_read, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_stream_read, FAIL)
assert (stream && stream->pub.cls);
assert (buf);
/* Check for overflow conditions */
if (HADDR_UNDEF == addr)
- HGOTO_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed");
+ HGOTO_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed")
if (REGION_OVERFLOW (addr, size))
- HGOTO_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed");
+ HGOTO_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed")
if (addr + size > stream->eoa)
- HGOTO_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed");
+ HGOTO_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed")
/* Read the part which is before the EOF marker */
if (addr < stream->eof) {
@@ -1017,7 +1067,7 @@ H5FD_stream_read (H5FD_t *_stream,
HDmemset (buf, 0, size);
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
@@ -1049,16 +1099,16 @@ H5FD_stream_write (H5FD_t *_stream,
H5FD_stream_t *stream = (H5FD_stream_t *) _stream;
herr_t ret_value=SUCCEED; /* Return value */
- FUNC_ENTER_NOAPI(H5FD_stream_write, FAIL);
+ FUNC_ENTER_NOAPI(H5FD_stream_write, FAIL)
assert (stream && stream->pub.cls);
assert (buf);
/* Check for overflow conditions */
if (REGION_OVERFLOW (addr, size))
- HGOTO_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed");
+ HGOTO_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed")
if (addr + size > stream->eoa)
- HGOTO_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed");
+ HGOTO_ERROR (H5E_IO, H5E_OVERFLOW, FAIL, "file address overflowed")
/*
* Allocate more memory if necessary, careful of overflow. Also, if the
@@ -1078,7 +1128,7 @@ H5FD_stream_write (H5FD_t *_stream,
else
x = H5MM_realloc (stream->mem, (size_t) new_eof);
if (x == NULL)
- HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to allocate memory block");
+ HGOTO_ERROR (H5E_RESOURCE, H5E_NOSPACE, FAIL, "unable to allocate memory block")
stream->mem = x;
stream->eof = new_eof;
}
@@ -1088,7 +1138,7 @@ H5FD_stream_write (H5FD_t *_stream,
stream->dirty = TRUE;
done:
- FUNC_LEAVE_NOAPI(ret_value);
+ FUNC_LEAVE_NOAPI(ret_value)
}
#endif /* H5_HAVE_STREAM */
diff --git a/src/H5FDstream.h b/src/H5FDstream.h
index 3641e08..890eb5a 100644
--- a/src/H5FDstream.h
+++ b/src/H5FDstream.h
@@ -8,8 +8,6 @@
*
* Purpose: The public header file for the Stream Virtual File Driver.
*
- * Version: $Header$
- *
* Modifications:
* Thomas Radke, Thursday, October 26, 2000
* Added support for Windows.
@@ -69,6 +67,7 @@ typedef struct H5FD_stream_fapl_t
/* prototypes of exported functions */
H5_DLL hid_t H5FD_stream_init (void);
+H5_DLL void H5FD_stream_term(void);
H5_DLL herr_t H5Pset_fapl_stream (hid_t fapl_id,
H5FD_stream_fapl_t *fapl);
H5_DLL herr_t H5Pget_fapl_stream (hid_t fapl_id,
diff --git a/src/H5FP.c b/src/H5FP.c
deleted file mode 100644
index 5ca9a63..0000000
--- a/src/H5FP.c
+++ /dev/null
@@ -1,457 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-/* Private header files */
-#include "H5private.h" /* Generic Functions */
-#include "H5Eprivate.h" /* Error Handling */
-#include "H5Oprivate.h" /* Object Headers */
-#include "H5TBprivate.h" /* Threaded, Balanced, Binary Trees */
-
-#ifdef H5_HAVE_FPHDF5
-
-#include "H5FPprivate.h" /* Flexible Parallel Functions */
-
-/* Pablo mask */
-#define PABLO_MASK H5FP_mask
-
-/* Interface initialization */
-#define INTERFACE_INIT NULL
-static int interface_initialize_g = 0;
-
-MPI_Datatype H5FP_request; /* MPI datatype for the H5FP_request_t type */
-MPI_Datatype H5FP_reply; /* MPI datatype for the H5FP_reply_t type */
-MPI_Datatype H5FP_read; /* MPI datatype for the H5FP_read_t type */
-MPI_Datatype H5FP_alloc; /* MPI datatype for the H5FP_alloc_t type */
-
-/* SAP specific variables */
-MPI_Comm H5FP_SAP_COMM; /* Comm we use: Supplied by user */
-MPI_Comm H5FP_SAP_BARRIER_COMM; /* Comm if you want to do a barrier */
-
-unsigned H5FP_sap_rank; /* The rank of the SAP: Supplied by user*/
-unsigned H5FP_capt_rank; /* The rank which tells SAP of opens */
-unsigned H5FP_capt_barrier_rank;/* Rank of captain in barrier comm */
-
-/* local functions */
-static herr_t H5FP_commit_sap_datatypes(void);
-static herr_t H5FP_request_sap_stop(void);
-
-/*
- *===----------------------------------------------------------------------===
- * Public (API) Functions
- *===----------------------------------------------------------------------===
- */
-
-/*
- * Function: H5FPinit
- * Purpose: Initialize the SAP environment: duplicate the COMM the user
- * supplies to us, set aside the SAP_RANK as the SAP.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 26. July, 2002
- * Modifications:
- */
-herr_t
-H5FPinit(MPI_Comm comm, int sap_rank, MPI_Comm *sap_comm, MPI_Comm *sap_barrier_comm)
-{
- MPI_Group sap_group = MPI_GROUP_NULL, sap_barrier_group = MPI_GROUP_NULL;
- int mrc, comm_size, my_rank;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_API(H5FPinit, FAIL);
- H5TRACE4("e","McIs*Mc*Mc",comm,sap_rank,sap_comm,sap_barrier_comm);
-
- /* initialize to NULL so that we can release if an error occurs */
- H5FP_request = MPI_DATATYPE_NULL;
- H5FP_reply = MPI_DATATYPE_NULL;
- H5FP_read = MPI_DATATYPE_NULL;
- H5FP_alloc = MPI_DATATYPE_NULL;
-
- *sap_comm = H5FP_SAP_COMM = MPI_COMM_NULL;
- *sap_barrier_comm = H5FP_SAP_BARRIER_COMM = MPI_COMM_NULL;
-
- /* Set the global variable to track the SAP's rank */
- H5FP_sap_rank = sap_rank;
-
- /* Make a private copy of the communicator passed to us */
- if (MPI_Comm_dup(comm, &H5FP_SAP_COMM) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_dup failed");
-
- *sap_comm = H5FP_SAP_COMM;
-
- if (MPI_Comm_group(H5FP_SAP_COMM, &sap_group) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_group failed");
-
- /* Exclude the SAP from the barrier group group */
- if (MPI_Group_excl(sap_group, 1, (int *)&H5FP_sap_rank,
- &sap_barrier_group) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Group_excl failed");
-
- /* Create communicator for barrier group (all processes except the SAP) */
- if (MPI_Comm_create(H5FP_SAP_COMM, sap_barrier_group,
- &H5FP_SAP_BARRIER_COMM) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_create failed");
-
- *sap_barrier_comm = H5FP_SAP_BARRIER_COMM;
-
- /* Get the size of all the processes (including the SAP) */
- if (MPI_Comm_size(H5FP_SAP_COMM, &comm_size) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_size failed");
-
- /*
- * We assign the process right after the sap_rank as the one which
- * will tell the SAP that files have been opened or closed. We mod
- * it so that we don't go over the size of the communicator.
- */
- H5FP_capt_rank = (H5FP_sap_rank + 1) % comm_size;
-
- /* Get this processes rank */
- if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, (int *)&my_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- /* Get the rank of the captain in the barrier Comm */
- if (H5FP_capt_rank == (unsigned)my_rank)
- if ((mrc = MPI_Comm_rank(H5FP_SAP_BARRIER_COMM,
- (int *)&H5FP_capt_barrier_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- /* Broadcast the captain's barrier rank */
- if ((mrc = MPI_Bcast(&H5FP_capt_barrier_rank, 1, MPI_UNSIGNED,
- (int)H5FP_capt_rank,
- H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Bcast failed", mrc);
-
- /* Create the MPI types used for communicating with the SAP */
- if (H5FP_commit_sap_datatypes() != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "H5FP_commit_sap_datatypes failed");
-
- /* Go loop, if we are the SAP */
- if ((unsigned)my_rank == H5FP_sap_rank)
- H5FP_sap_receive_loop();
-
- /* Fall through and return to user, if not SAP */
-
-done:
- if (ret_value == FAIL) {
- /* we've encountered an error...clean up */
- if (H5FP_request != MPI_DATATYPE_NULL)
- if (MPI_Type_free(&H5FP_request) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
-
- if (H5FP_reply != MPI_DATATYPE_NULL)
- if (MPI_Type_free(&H5FP_reply) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
-
- if (H5FP_read != MPI_DATATYPE_NULL)
- if (MPI_Type_free(&H5FP_read) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
-
- if (H5FP_alloc != MPI_DATATYPE_NULL)
- if (MPI_Type_free(&H5FP_alloc) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
-
- if (H5FP_SAP_BARRIER_COMM != MPI_COMM_NULL)
- /* this comm will be NULL for the SAP */
- if (MPI_Comm_free(&H5FP_SAP_BARRIER_COMM) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_free failed");
-
- if (H5FP_SAP_COMM != MPI_COMM_NULL)
- if (MPI_Comm_free(&H5FP_SAP_COMM) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_free failed");
- }
-
- if (sap_group != MPI_GROUP_NULL)
- MPI_Group_free(&sap_group);
-
- if (sap_barrier_group != MPI_GROUP_NULL)
- MPI_Group_free(&sap_barrier_group);
-
- FUNC_LEAVE_API(ret_value);
-}
-
-/*
- * Function: H5FPfinalize
- * Purpose: Get rid of the initilized environment we setup with H5FPinit.
- * Mostly just freeing the duplicated COMM object and committed
- * datatypes.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 26. July, 2002
- * Modifications:
- */
-herr_t
-H5FPfinalize(void)
-{
- int mrc, my_rank;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_API(H5FPfinalize, FAIL);
- H5TRACE0("e","");
-
- /* Get this processes rank */
- if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, (int *)&my_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- /* Stop the SAP */
- if ((unsigned)my_rank != H5FP_sap_rank)
- if (H5FP_request_sap_stop() < 0)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Error stopping the SAP");
-
- /* Release the MPI types we created */
- if (MPI_Type_free(&H5FP_request) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
-
- if (MPI_Type_free(&H5FP_reply) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
-
- if (MPI_Type_free(&H5FP_read) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
-
- if (MPI_Type_free(&H5FP_alloc) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_free failed");
-
- /* Release the barrier communicator */
- if (H5FP_SAP_BARRIER_COMM != MPI_COMM_NULL)
- /* this comm will be NULL for the SAP */
- if (MPI_Comm_free(&H5FP_SAP_BARRIER_COMM) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_free failed");
-
- /* Release the FPH5 communicator */
- if (MPI_Comm_free(&H5FP_SAP_COMM) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_free failed");
-
-done:
- FUNC_LEAVE_API(ret_value);
-}
-
-/*
- *===----------------------------------------------------------------------===
- * Public Library (non-API) Functions
- *===----------------------------------------------------------------------===
- */
-
-/*
- * Function: H5FP_send_metadata
- * Purpose: Send a string of metadata to a process.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 30. July, 2002
- * Modifications:
- */
-herr_t
-H5FP_send_metadata(const char *mdata, int len, int to)
-{
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_send_metadata, FAIL);
-
- assert(mdata);
- assert(len);
-
- /* casts the CONST away: Okay */
- if (MPI_Send((void *)mdata, len, MPI_BYTE, to, H5FP_TAG_METADATA, H5FP_SAP_COMM)
- != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Send failed");
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_read_metadata
- * Purpose: Read a string of metadata from process FROM.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 31. January, 2003
- * Modifications:
- */
-herr_t
-H5FP_read_metadata(char **mdata, int len, int from)
-{
- MPI_Status status;
- herr_t ret_value = SUCCEED;
- int mrc;
-
- FUNC_ENTER_NOAPI(H5FP_read_metadata, FAIL);
-
- /* check args */
- assert(mdata);
-
- /*
- * There is metadata associated with this request. Get it as a
- * string (requires another read).
- */
- if ((*mdata = (char *)H5MM_malloc((size_t)len + 1)) == NULL)
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "out of memory");
-
- HDmemset(*mdata, 0, (size_t)len + 1);
-
- if ((mrc = MPI_Recv(*mdata, len + 1, MPI_BYTE, from, H5FP_TAG_METADATA,
- H5FP_SAP_COMM, &status)) != MPI_SUCCESS) {
- HDfree(*mdata);
- *mdata = NULL;
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- *===----------------------------------------------------------------------===
- * Private Functions
- *===----------------------------------------------------------------------===
- */
-
-/*
- * Function: H5FP_commit_sap_datatypes
- * Purpose: Commit the H5FP_request, H5FP_reply, H5FP_read, and
- * H5FP_alloc structure datatypes to MPI.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 26. July, 2002
- * Modifications:
- */
-static herr_t
-H5FP_commit_sap_datatypes(void)
-{
- int block_length[5];
- int i;
- MPI_Aint displs[5];
- MPI_Datatype old_types[5];
- H5FP_request_t sap_req;
- H5FP_reply_t sap_reply;
- H5FP_read_t sap_read;
- H5FP_alloc_t sap_alloc;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_commit_sap_datatypes, FAIL);
-
- /* Commit the H5FP_request datatype */
- block_length[0] = 8;
- block_length[1] = 1;
- block_length[2] = 4;
- block_length[3] = 1;
- block_length[4] = sizeof(sap_req.oid);
- old_types[0] = MPI_UNSIGNED;
- old_types[1] = MPI_UNSIGNED_LONG;
- old_types[2] = MPI_LONG_LONG_INT;
- old_types[3] = HADDR_AS_MPI_TYPE;
- old_types[4] = MPI_UNSIGNED_CHAR;
- MPI_Address(&sap_req.req_id, &displs[0]);
- MPI_Address(&sap_req.feature_flags, &displs[1]);
- MPI_Address(&sap_req.meta_block_size, &displs[2]);
- MPI_Address(&sap_req.addr, &displs[3]);
- MPI_Address(&sap_req.oid, &displs[4]);
-
- /* Calculate the displacements */
- for (i = 4; i >= 0; --i)
- displs[i] -= displs[0];
-
- if (MPI_Type_struct(5, block_length, displs, old_types, &H5FP_request) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_struct failed");
-
- if (MPI_Type_commit(&H5FP_request) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_commit failed");
-
- /* Commit the H5FP_reply datatype */
- block_length[0] = 4;
- old_types[0] = MPI_INT;
- MPI_Address(&sap_reply.req_id, &displs[0]);
-
- /* Calculate the displacements */
- for (i = 0; i >= 0; --i)
- displs[i] -= displs[0];
-
- if (MPI_Type_struct(1, block_length, displs, old_types, &H5FP_reply) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_struct failed");
-
- if (MPI_Type_commit(&H5FP_reply) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_commit failed");
-
- /* Commit the H5FP_read datatype */
- block_length[0] = 5;
- block_length[1] = 1;
- old_types[0] = MPI_UNSIGNED;
- old_types[1] = HADDR_AS_MPI_TYPE;
- MPI_Address(&sap_read.req_id, &displs[0]);
- MPI_Address(&sap_read.addr, &displs[1]);
-
- /* Calculate the displacements */
- for (i = 1; i >= 0; --i)
- displs[i] -= displs[0];
-
- if (MPI_Type_struct(2, block_length, displs, old_types, &H5FP_read) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_struct failed");
-
- if (MPI_Type_commit(&H5FP_read) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_commit failed");
-
- /* Commit the H5FP_alloc datatype */
- block_length[0] = 4;
- block_length[1] = 2;
- old_types[0] = MPI_UNSIGNED;
- old_types[1] = HADDR_AS_MPI_TYPE;
- MPI_Address(&sap_alloc.req_id, &displs[0]);
- MPI_Address(&sap_alloc.addr, &displs[1]);
-
- /* Calculate the displacements */
- for (i = 1; i >= 0; --i)
- displs[i] -= displs[0];
-
- if (MPI_Type_struct(2, block_length, displs, old_types, &H5FP_alloc) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_struct failed");
-
- if (MPI_Type_commit(&H5FP_alloc) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Type_commit failed");
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_request_sap_stop
- * Purpose: Request that the SAP stop it's loop processing. Each
- * process should send this to the SAP.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 02. August, 2002
- * Modifications:
- */
-static herr_t
-H5FP_request_sap_stop(void)
-{
- H5FP_request_t req;
- int mrc, my_rank;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_request_sap_stop, FAIL);
-
- /* Get this processes rank */
- if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, (int *)&my_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- HDmemset(&req, 0, sizeof(req));
- req.req_type = H5FP_REQ_STOP;
- req.req_id = 0;
- req.proc_rank = my_rank;
-
- if (MPI_Send(&req, 1, H5FP_request, (int)H5FP_sap_rank,
- H5FP_TAG_REQUEST, H5FP_SAP_COMM) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Send failed");
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-#endif /* H5_HAVE_FPHDF5 */
diff --git a/src/H5FPclient.c b/src/H5FPclient.c
deleted file mode 100644
index 1b3110a..0000000
--- a/src/H5FPclient.c
+++ /dev/null
@@ -1,828 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#define H5S_PACKAGE /*suppress error about including H5Spkg */
-#define H5G_PACKAGE /*suppress error about including H5Gpkg */
-
-#include "H5private.h" /* Generic Functions */
-#include "H5ACprivate.h" /* Metadata Cache */
-#include "H5Dprivate.h" /* Dataset Functions */
-#include "H5Eprivate.h" /* Error Handling */
-#include "H5Fprivate.h" /* Files */
-#include "H5FDprivate.h" /* File Drivers */
-#include "H5Gpkg.h" /* Group Functions */
-#include "H5Iprivate.h" /* ID Functions */
-#include "H5MMprivate.h" /* Memory Allocation */
-#include "H5Oprivate.h" /* Object Headers */
-#include "H5Spkg.h" /* Dataspace Functions */
-#include "H5TBprivate.h" /* Threaded, Balanced, Binary Trees */
-
-#ifdef H5_HAVE_FPHDF5
-
-#include "H5FDfphdf5.h" /* File Driver for FPHDF5 */
-#include "H5FPprivate.h" /* Flexible Parallel Functions */
-
-/* Pablo mask */
-#define PABLO_MASK H5FPclient_mask
-
-/* Is the interface initialized? */
-static int interface_initialize_g = 0;
-#define INTERFACE_INIT NULL
-
-/* local functions */
-static unsigned H5FP_gen_request_id(void);
-static herr_t H5FP_dump_to_file(H5FD_t *file, hid_t dxpl_id);
-
-/*
- *===----------------------------------------------------------------------===
- * Public Library (non-API) Functions
- *===----------------------------------------------------------------------===
- */
-
-/*
- * Function: H5FP_request_open
- * Purpose: Request an open of a file from the SAP. You pass in the
- * metadata string (MDATA) (the filename), it's length in
- * (MD_LEN), and the type of the object you're trying to
- * open (OBJ_TYPE). The request ID is returned in a pointer
- * supplied by the user.
- *
- * The so-called "captain" process is in charge of telling
- * the SAP that the processes opened a file. All processes
- * opening the file, though, should call this function so
- * that they can get the file ID that the SAP assigns to it.
- *
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 28. August, 2002
- * Modifications:
- */
-herr_t
-H5FP_request_open(H5FP_obj_t obj_type, haddr_t maxaddr,
- unsigned long feature_flags, hsize_t meta_block_size,
- hsize_t sdata_block_size, hsize_t threshold,
- hsize_t alignment, unsigned *file_id, unsigned *req_id)
-{
- H5FP_request_t req;
- MPI_Status mpi_status;
- int mrc, my_rank;
- int ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_request_open, FAIL);
-
- /* check args */
- assert(file_id);
- assert(req_id);
-
- HDmemset(&mpi_status, 0, sizeof(MPI_Status));
-
- if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, &my_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- if ((unsigned)my_rank == H5FP_capt_rank) {
- /*
- * The captain process sends the information about the file to
- * the SAP.
- */
- HDmemset(&req, 0, sizeof(req));
- req.req_type = H5FP_REQ_OPEN;
- req.req_id = H5FP_gen_request_id();
- req.proc_rank = my_rank;
- req.md_size = 0;
- req.obj_type = obj_type;
- req.addr = maxaddr;
- req.feature_flags = feature_flags;
- req.meta_block_size = meta_block_size;
- req.sdata_block_size = sdata_block_size;
- req.threshold = threshold;
- req.alignment = alignment;
-
- if ((mrc = MPI_Send(&req, 1, H5FP_request, (int)H5FP_sap_rank,
- H5FP_TAG_REQUEST, H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
-
- if ((mrc = MPI_Recv(file_id, 1, MPI_UNSIGNED, (int)H5FP_sap_rank,
- H5FP_TAG_FILE_ID, H5FP_SAP_COMM,
- &mpi_status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
- }
-
-done:
- *req_id = req.req_id;
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_request_lock
- * Purpose: Request a lock on an object in a file from the SAP. The
- * request ID is returned in a pointer supplied by the user.
- * The status of the SAP is returned to the user in the
- * supplied STATUS pointer.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 30. July, 2002
- * Modifications:
- */
-herr_t
-H5FP_request_lock(unsigned file_id, unsigned char *obj_oid,
- H5FP_lock_t rw_lock, int last, unsigned *req_id,
- H5FP_status_t *status)
-{
- H5FP_request_t req;
- int mrc, my_rank;
- int ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_request_lock, FAIL);
-
- /* check args */
- assert(obj_oid);
- assert(req_id);
- assert(status);
-
- HDmemset(&req, 0, sizeof(req));
-
- if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, &my_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- *status = H5FP_STATUS_OK;
- req.req_type = last ? H5FP_REQ_LOCK_END : H5FP_REQ_LOCK;
- req.req_id = H5FP_gen_request_id();
- req.file_id = file_id;
- req.rw_lock = rw_lock;
- req.md_size = 0;
- req.proc_rank = my_rank;
- H5FP_COPY_OID(req.oid, obj_oid);
-
- if ((mrc = MPI_Send(&req, 1, H5FP_request, (int)H5FP_sap_rank,
- H5FP_TAG_REQUEST, H5FP_SAP_COMM)) != MPI_SUCCESS) {
- *status = H5FP_STATUS_LOCK_FAILED;
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
- }
-
- if (last) {
- /*
- * On the last lock in the lock-group to be acquired, we expect a
- * reply from the SAP
- */
- H5FP_reply_t sap_reply;
- MPI_Status mpi_status;
-
- HDmemset(&mpi_status, 0, sizeof(mpi_status));
-
- if ((mrc = MPI_Recv(&sap_reply, 1, H5FP_reply, (int)H5FP_sap_rank,
- H5FP_TAG_REPLY, H5FP_SAP_COMM, &mpi_status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
-
- *status = sap_reply.status;
-
- if (sap_reply.status != H5FP_STATUS_LOCK_ACQUIRED)
- HGOTO_ERROR(H5E_RESOURCE, H5E_CANTLOCK, FAIL, "can't lock object on server");
- }
-
-done:
- *req_id = req.req_id;
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_request_release_lock
- * Purpose: Release a lock on the file from the SAP. Request a lock
- * on an object in a file from the SAP. The request ID is
- * returned in a pointer supplied by the user. The status
- * of the SAP is returned to the user in the supplied STATUS
- * pointer.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 30. July, 2002
- * Modifications:
- */
-herr_t
-H5FP_request_release_lock(unsigned file_id, unsigned char *obj_oid,
- int last, unsigned *req_id, H5FP_status_t *status)
-{
- H5FP_request_t req;
- int mrc, my_rank;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_request_release_lock, FAIL);
-
- /* check args */
- assert(obj_oid);
- assert(req_id);
- assert(status);
-
- HDmemset(&req, 0, sizeof(req));
-
- if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, &my_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- *status = H5FP_STATUS_OK;
- H5FP_COPY_OID(req.oid, obj_oid);
- req.req_type = last ? H5FP_REQ_RELEASE_END : H5FP_REQ_RELEASE;
- req.req_id = H5FP_gen_request_id();
- req.file_id = file_id;
- req.md_size = 0;
- req.proc_rank = my_rank;
-
- if ((mrc = MPI_Send(&req, 1, H5FP_request, (int)H5FP_sap_rank,
- H5FP_TAG_REQUEST, H5FP_SAP_COMM)) != MPI_SUCCESS) {
- *status = H5FP_STATUS_LOCK_RELEASE_FAILED;
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
- }
-
- if (last) {
- /*
- * On the last lock released in this lock-group, we expect a
- * reply from the SAP
- */
- H5FP_reply_t sap_reply;
- MPI_Status mpi_status;
-
- HDmemset(&mpi_status, 0, sizeof(mpi_status));
-
- if ((mrc = MPI_Recv(&sap_reply, 1, H5FP_reply, (int)H5FP_sap_rank,
- H5FP_TAG_REPLY, H5FP_SAP_COMM, &mpi_status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
-
- *status = sap_reply.status;
-
- if (sap_reply.status != H5FP_STATUS_LOCK_RELEASED)
- HGOTO_ERROR(H5E_RESOURCE, H5E_CANTUNLOCK, FAIL,
- "can't unlock object on server");
- }
-
-done:
- *req_id = req.req_id;
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_request_read_metadata
- * Purpose: Read a piece of metadata from the SAP. That is, if the
- * SAP has access to that metadata. If not, then we'll need
- * to read it from disk.
- *
- * This function has the potential of causing the process to
- * act as a dumper for the SAP's metadata. Places which call
- * this function and check the STATUS variable should take
- * this into account.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 02. August, 2002
- * Modifications:
- */
-herr_t
-H5FP_request_read_metadata(H5FD_t *file, unsigned file_id, hid_t dxpl_id,
- H5FD_mem_t UNUSED mem_type, MPI_Offset addr,
- size_t size, uint8_t **buf, int *bytes_read,
- unsigned *req_id, H5FP_status_t *status)
-{
- H5FP_request_t req;
- H5FP_read_t sap_read;
- MPI_Status mpi_status;
- int mrc, my_rank;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_request_read_metadata, FAIL);
-
- /* check args */
- assert(file);
- assert(buf);
- assert(bytes_read);
- assert(req_id);
- assert(status);
-
- HDmemset(&req, 0, sizeof(req));
-
- if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, &my_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- *status = H5FP_STATUS_OK;
- req.req_type = H5FP_REQ_READ;
- req.req_id = H5FP_gen_request_id();
- req.file_id = file_id;
- req.proc_rank = my_rank;
- req.addr = addr;
-
- if ((mrc = MPI_Send(&req, 1, H5FP_request, (int)H5FP_sap_rank,
- H5FP_TAG_REQUEST, H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
-
- HDmemset(&mpi_status, 0, sizeof(mpi_status));
-
- if ((mrc = MPI_Recv(&sap_read, 1, H5FP_read, (int)H5FP_sap_rank, H5FP_TAG_READ,
- H5FP_SAP_COMM, &mpi_status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
-
- HDmemset(*buf, '\0', size);
-
- switch (sap_read.status) {
- case H5FP_STATUS_OK:
- /* use the info in the H5FP_read_t structure to update the metadata */
- *status = H5FP_STATUS_OK;
- HDmemset(&mpi_status, 0, sizeof(mpi_status));
-
- if ((mrc = MPI_Recv(*buf, (int)size, MPI_BYTE, (int)H5FP_sap_rank,
- H5FP_TAG_METADATA, H5FP_SAP_COMM,
- &mpi_status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
-
- *bytes_read = size;
- break;
- case H5FP_STATUS_DUMPING:
- /*
- * Collect the metadata updates from the SAP and write them to
- * the file. We fall through because at this point the metadata
- * won't be cached on the server anymore.
- */
- if (H5FP_dump_to_file(file, dxpl_id) == FAIL)
- HGOTO_ERROR(H5E_FPHDF5, H5E_WRITEERROR, FAIL,
- "can't write metadata update to file");
- /* FALLTHROUGH */
- case H5FP_STATUS_MDATA_NOT_CACHED:
- /*
- * The metadata wasn't in the SAP's cache. Should read from disk
- * now.
- */
- *status = H5FP_STATUS_MDATA_NOT_CACHED;
- break;
- default:
- *status = sap_read.status;
- HGOTO_ERROR(H5E_RESOURCE, H5E_CANTCHANGE, FAIL, "can't write metadata to server");
- }
-
-done:
- *req_id = req.req_id;
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_request_write_metadata
- * Purpose: Tell the SAP that we want to change a piece of metadata
- * associated with the file. The request ID is returned in a
- * pointer supplied by the user.
- *
- * This function has the potential of causing the process to
- * act as a dumper for the SAP's metadata. Places which call
- * this function and check the STATUS variable should take
- * this into account.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 02. August, 2002
- * Modifications:
- */
-herr_t
-H5FP_request_write_metadata(H5FD_t *file, unsigned file_id, hid_t dxpl_id,
- H5FD_mem_t mem_type, MPI_Offset addr,
- int mdata_size, const char *mdata,
- unsigned *req_id, H5FP_status_t *status)
-{
- H5FP_reply_t sap_reply;
- MPI_Status mpi_status;
- H5FP_request_t req;
- int mrc, my_rank;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_request_change, FAIL);
-
- /* check args */
- assert(file);
- assert(mdata);
- assert(req_id);
- assert(status);
-
- HDmemset(&req, 0, sizeof(req));
-
- if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, &my_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- req.req_type = H5FP_REQ_WRITE;
- req.req_id = H5FP_gen_request_id();
- req.proc_rank = my_rank;
- req.file_id = file_id;
- req.mem_type = mem_type;
- req.addr = addr;
- req.md_size = mdata_size;
-
- if ((mrc = MPI_Send(&req, 1, H5FP_request, (int)H5FP_sap_rank,
- H5FP_TAG_REQUEST, H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
-
- /* The first MPI_Send will have been sent before this one will be read. */
- if (H5FP_send_metadata(mdata, mdata_size, (int)H5FP_sap_rank) != SUCCEED)
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTSENDMDATA, FAIL, "can't send metadata to server");
-
- HDmemset(&mpi_status, 0, sizeof(mpi_status));
-
- if ((mrc = MPI_Recv(&sap_reply, 1, H5FP_reply, (int)H5FP_sap_rank,
- H5FP_TAG_REPLY, H5FP_SAP_COMM, &mpi_status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
-
- switch (sap_reply.status) {
- case H5FP_STATUS_OK:
- /* Nothing to do... */
- break;
- case H5FP_STATUS_DUMPING:
- /*
- * Collect the metadata updates from the SAP and write them to
- * the file. The function which sends us the dumping data sends
- * it to us as an H5FP_read object instead of the H5FP_reply
- * object we got above. So we need this "extra" read.
- *
- * FIXME: This is probably too much of a hack and could be fixed
- * for read/write/closing instances...
- */
- if (H5FP_dump_to_file(file, dxpl_id) == FAIL) {
- *status = H5FP_STATUS_DUMPING_FAILED;
- HGOTO_ERROR(H5E_FPHDF5, H5E_WRITEERROR, FAIL,
- "can't write metadata update to file");
- }
-
- break;
- default:
- *status = sap_reply.status;
- HGOTO_ERROR(H5E_RESOURCE, H5E_CANTCHANGE, FAIL, "can't write metadata to server");
- }
-
- *status = H5FP_STATUS_OK;
-
-done:
- *req_id = req.req_id;
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_request_flush_metadata
- * Purpose: Tell the SAP that we want to change a piece of metadata
- * associated with the file. The request ID is returned in a
- * pointer supplied by the user.
- *
- * This function has the potential of causing the process to
- * act as a dumper for the SAP's metadata. Places which call
- * this function and check the STATUS variable should take
- * this into account.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 02. August, 2002
- * Modifications:
- */
-herr_t
-H5FP_request_flush_metadata(H5FD_t *file, unsigned file_id, hid_t dxpl_id,
- unsigned *req_id, H5FP_status_t *status)
-{
- H5FP_reply_t sap_reply;
- H5FP_request_t req;
- MPI_Status mpi_status;
- int mrc, my_rank;
- int ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_request_flush_metadata, FAIL);
-
- /* check args */
- assert(file);
- assert(req_id);
- assert(status);
-
- HDmemset(&req, 0, sizeof(req));
-
- if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, &my_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- req.req_type = H5FP_REQ_FLUSH;
- req.req_id = H5FP_gen_request_id();
- req.file_id = file_id;
- req.proc_rank = my_rank;
-
- if ((mrc = MPI_Send(&req, 1, H5FP_request, (int)H5FP_sap_rank,
- H5FP_TAG_REQUEST, H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
-
- HDmemset(&mpi_status, 0, sizeof(mpi_status));
-
- if ((mrc = MPI_Recv(&sap_reply, 1, H5FP_reply, (int)H5FP_sap_rank,
- H5FP_TAG_REPLY, H5FP_SAP_COMM, &mpi_status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
-
- switch (sap_reply.status) {
- case H5FP_STATUS_OK:
- /* Nothing to do... */
- break;
- case H5FP_STATUS_DUMPING:
- /*
- * Collect the metadata updates from the SAP and write them to
- * the file. The function which sends us the dumping data sends
- * it to us as an H5FP_read object instead of the H5FP_reply
- * object we got above.
- */
- if (H5FP_dump_to_file(file, dxpl_id) == FAIL) {
- *status = H5FP_STATUS_DUMPING_FAILED;
- HGOTO_ERROR(H5E_FPHDF5, H5E_WRITEERROR, FAIL,
- "can't write metadata update to file");
- }
-
- break;
- default:
- *status = sap_reply.status;
- HGOTO_ERROR(H5E_RESOURCE, H5E_CANTCHANGE, FAIL, "can't write metadata to server");
- }
-
- *status = H5FP_STATUS_OK;
-
-done:
- *req_id = req.req_id;
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_request_close
- * Purpose: Tell the SAP that we want all of the structural changes
- * made on the file and then close the file. The request ID
- * is returned in a pointer passed to the function by the
- * user.
- *
- * This function has the potential of causing the process to
- * act as a dumper for the SAP's metadata. Places which call
- * this function and check the STATUS variable should take
- * this into account.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 02. August, 2002
- * Modifications:
- */
-herr_t
-H5FP_request_close(H5FD_t *file, unsigned file_id, unsigned *req_id,
- H5FP_status_t *status)
-{
- H5FP_reply_t sap_reply;
- H5FP_request_t req;
- MPI_Status mpi_status;
- int mrc;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_request_close, FAIL);
-
- /* check args */
- assert(file);
- assert(req_id);
- assert(status);
-
- HDmemset(&req, 0, sizeof(req));
- req.req_type = H5FP_REQ_CLOSE;
- req.req_id = H5FP_gen_request_id();
- req.file_id = file_id;
- req.proc_rank = H5FD_fphdf5_mpi_rank(file);
-
- if ((mrc = MPI_Send(&req, 1, H5FP_request, (int)H5FP_sap_rank,
- H5FP_TAG_REQUEST, H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
-
- HDmemset(&mpi_status, 0, sizeof(mpi_status));
-
- if ((mrc = MPI_Recv(&sap_reply, 1, H5FP_reply, (int)H5FP_sap_rank,
- H5FP_TAG_REPLY, H5FP_SAP_COMM, &mpi_status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
-
- if (sap_reply.status != H5FP_STATUS_OK)
- HGOTO_ERROR(H5E_RESOURCE, H5E_CANTCHANGE, FAIL, "can't close file on server");
-
- *status = H5FP_STATUS_OK;
-
-done:
- *req_id = req.req_id;
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_request_allocate
- * Purpose: Request an allocation of space from the SAP.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 19. February 2003
- * Modifications:
- */
-herr_t
-H5FP_request_allocate(H5FD_t *file, H5FD_mem_t mem_type, hsize_t size,
- haddr_t *addr, haddr_t *eoa, unsigned *req_id,
- H5FP_status_t *status)
-{
- H5FP_alloc_t sap_alloc;
- H5FP_request_t req;
- MPI_Status mpi_status;
- int mrc;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_request_allocate, FAIL);
-
- /* check args */
- assert(file);
- assert(req_id);
- assert(status);
-
- HDmemset(&req, 0, sizeof(req));
-
- req.req_type = H5FP_REQ_ALLOC;
- req.req_id = H5FP_gen_request_id();
- req.file_id = H5FD_fphdf5_file_id(file);
- req.proc_rank = H5FD_fphdf5_mpi_rank(file);
- req.mem_type = mem_type;
- req.meta_block_size = size; /* use this field as the size to allocate */
-
- if ((mrc = MPI_Send(&req, 1, H5FP_request, (int)H5FP_sap_rank,
- H5FP_TAG_REQUEST, H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
-
- HDmemset(&mpi_status, 0, sizeof(mpi_status));
-
- if ((mrc = MPI_Recv(&sap_alloc, 1, H5FP_alloc, (int)H5FP_sap_rank,
- H5FP_TAG_ALLOC, H5FP_SAP_COMM, &mpi_status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
-
- if (sap_alloc.status != H5FP_STATUS_OK)
- HGOTO_ERROR(H5E_RESOURCE, H5E_CANTCHANGE, FAIL, "can't allocate space on server");
-
- *status = H5FP_STATUS_OK;
- *addr = sap_alloc.addr;
- *eoa = sap_alloc.eoa;
-
-done:
- *req_id = req.req_id;
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_request_free
- * Purpose: Request freeing of space from the SAP.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 20. February 2003
- * Modifications:
- */
-herr_t
-H5FP_request_free(H5FD_t *file, unsigned *req_id, H5FP_status_t *status)
-{
- H5FP_alloc_t sap_alloc;
- H5FP_request_t req;
- MPI_Status mpi_status;
- int mrc;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI(H5FP_request_free, FAIL);
-
- /* check args */
- assert(file);
- assert(req_id);
- assert(status);
-
- HDmemset(&req, 0, sizeof(req));
-
- req.req_type = H5FP_REQ_FREE;
- req.req_id = H5FP_gen_request_id();
- req.file_id = H5FD_fphdf5_file_id(file);
- req.proc_rank = H5FD_fphdf5_mpi_rank(file);
-
- if ((mrc = MPI_Send(&req, 1, H5FP_request, (int)H5FP_sap_rank,
- H5FP_TAG_REQUEST, H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
-
- HDmemset(&mpi_status, 0, sizeof(mpi_status));
-
- if ((mrc = MPI_Recv(&sap_alloc, 1, H5FP_alloc, (int)H5FP_sap_rank,
- H5FP_TAG_ALLOC, H5FP_SAP_COMM, &mpi_status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
-
- if (sap_alloc.status != H5FP_STATUS_OK)
- HGOTO_ERROR(H5E_RESOURCE, H5E_CANTCHANGE, FAIL, "can't free space on server");
-
- if ((mrc = MPI_Bcast(&sap_alloc, 1, H5FP_alloc, (int)H5FP_capt_barrier_rank,
- H5FP_SAP_BARRIER_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Bcast failed", mrc);
-
- /* Set the EOA for all processes. This doesn't fail. */
- file->cls->set_eoa(file, sap_alloc.eoa);
- *status = H5FP_STATUS_OK;
-
-done:
- *req_id = req.req_id;
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- *===----------------------------------------------------------------------===
- * Functions Private to Client Module
- *===----------------------------------------------------------------------===
- */
-
-/*
- * Function: H5FP_gen_request_id
- * Purpose: Generate a unique request ID to send along with a
- * message.
- * Return: Integer >= 0 - Doesn't fail.
- * Programmer: Bill Wendling, 30. July, 2002
- * Modifications:
- */
-static unsigned
-H5FP_gen_request_id()
-{
- static unsigned int i = 0;
- FUNC_ENTER_NOAPI_NOINIT(H5FP_gen_request_id);
- FUNC_LEAVE_NOAPI(i++);
-}
-
-/*
- * Function: H5FP_dump_to_file
- * Purpose: Dump the updated metadata to the file.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 03. February 2003
- * Modifications:
- */
-static herr_t
-H5FP_dump_to_file(H5FD_t *file, hid_t dxpl_id)
-{
- H5FP_read_t sap_read;
- hid_t new_dxpl_id = FAIL;
- H5P_genplist_t *plist = NULL, *old_plist;
- unsigned dumping = 1;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_dump_to_file);
-
- /* check args */
- assert(file);
-
- if ((old_plist = H5I_object(dxpl_id)) == NULL)
- HGOTO_ERROR(H5E_PLIST, H5E_NOTFOUND, FAIL, "property object doesn't exist");
-
- /* Compare property lists */
- if ((new_dxpl_id = H5P_copy_plist(old_plist)) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTCOPY, FAIL, "can't copy property list");
-
- if (new_dxpl_id == FAIL)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTCOPY, FAIL, "can't copy property list");
-
- if ((plist = H5P_object_verify(new_dxpl_id, H5P_DATASET_XFER)) == NULL)
- HGOTO_ERROR(H5E_PLIST, H5E_BADTYPE, FAIL, "not a dataset transfer list");
-
- /* Set the fact that we're dumping metadata to the file */
- if (H5P_insert(plist, H5FD_FPHDF5_XFER_DUMPING_METADATA,
- H5FD_FPHDF5_XFER_DUMPING_SIZE, &dumping,
- NULL, NULL, NULL, NULL, NULL) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't insert MPI-I/O property");
-
- /*
- * At this point, we've received a message saying that the SAP is
- * dumping info to us. There's a metadata read waiting for us right
- * now...
- */
- for (;;) {
- MPI_Status mpi_status;
- int mrc;
- char *mdata;
-
- HDmemset(&mpi_status, 0, sizeof(mpi_status));
-
- if ((mrc = MPI_Recv(&sap_read, 1, H5FP_read, (int)H5FP_sap_rank,
- H5FP_TAG_DUMP, H5FP_SAP_COMM, &mpi_status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
-
- if (sap_read.status != H5FP_STATUS_DUMPING) {
- if (sap_read.status == H5FP_STATUS_DUMPING_FINISHED)
- break;
-
- /* FIXME: ERROR */
- }
-
- if (H5FP_read_metadata(&mdata, (int)sap_read.md_size,
- (int)H5FP_sap_rank) != FAIL) {
- if (H5FD_fphdf5_write_real(file, dxpl_id, sap_read.addr,
- (int)sap_read.md_size, mdata) == FAIL) {
- HDfree(mdata);
- HGOTO_ERROR(H5E_FPHDF5, H5E_WRITEERROR, FAIL, "can't write metadata to file");
- }
-
- HDfree(mdata);
- } else {
- /* FIXME: Error */
- }
- }
-
-done:
- if (plist)
- /* FIXME: What can I do if this fails?? */
- H5P_close(plist);
-
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-#endif /* H5_HAVE_FPHDF5 */
diff --git a/src/H5FPprivate.h b/src/H5FPprivate.h
deleted file mode 100644
index 5ae04ca..0000000
--- a/src/H5FPprivate.h
+++ /dev/null
@@ -1,306 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-#ifndef H5FPPRIVATE_H__
-#define H5FPPRIVATE_H__ 0
-
-#ifdef H5_HAVE_FPHDF5
-
-#include "H5ACpublic.h" /* Metadata Cache */
-#include "H5FPpublic.h" /* Flexible Parallel HDF5 */
-#include "H5Oprivate.h" /* Object Headers */
-#include "H5Rprivate.h" /* References */
-
-/*===----------------------------------------------------------------------===
- * Request Types
- *===----------------------------------------------------------------------===
- *
- * The H5FP_REQ_LOCK_END and H5FP_REQ_RELEASE_END are used to lock and
- * release a collection of objects at the same time. The last object you
- * need to lock is sent with the H5FP_REQ_LOCK_END request type (this can
- * also be a null message - where you're just sending a message that has
- * H5FP_REQ_LOCK_END as the request type with no data associated with it.
- * In that case, the md_size *MUST* be set to 0). The SAP will then try
- * to lock all of the objects you've requested to lock at once. If it
- * cannot do so, then it will fail and you have to try again at a later
- * time.
- *
- * Releasing locks is done in the exact same way, except that the action
- * will always release locks (i.e., not fail) if there is a vaild lock
- * for that object.
- */
-typedef enum {
- /* Metadata Requests */
- H5FP_REQ_OPEN, /* Open a file (or eventually an object) */
- H5FP_REQ_LOCK, /* Lock an object (in a sequence) */
- H5FP_REQ_LOCK_END, /* Last lock request in lock sequence */
- H5FP_REQ_RELEASE, /* Unlock an object (in a sequence) */
- H5FP_REQ_RELEASE_END, /* Last unlock request in unlock sequence */
- H5FP_REQ_WRITE, /* Writing a piece of metadata */
- H5FP_REQ_READ, /* Reading a piece of metadata */
- H5FP_REQ_FLUSH, /* Flush the metadata out to disk */
- H5FP_REQ_CLOSE, /* Close a file (or eventually an object) */
- H5FP_REQ_STOP, /* Stop SAP */
-
- /* Allocation Requests */
- H5FP_REQ_ALLOC, /* Allocate a region of metadata */
- H5FP_REQ_FREE /* Free a region of metadata */
-} H5FP_req_t;
-
-/*===----------------------------------------------------------------------===
- * Lock Types
- *===----------------------------------------------------------------------===
- *
- * A ``read'' lock indicates that the process is busy reading the
- * metadata of that object. It's non-exclusive, so any number of
- * processes can have any number of locks on a given object. However, you
- * cannot have a write and a read lock on an object.
- *
- * A ``write'' lock indicates that the process is busy writing to the
- * metadata of that object. It's exclusive, so only one process can have
- * a write lock on an object at any one time. However, that object can
- * have any number of write locks on that object.
- *
- * It's up to the program to release all of the locks it has on a given
- * object.
- */
-typedef enum {
- H5FP_LOCK_READ,
- H5FP_LOCK_WRITE
-} H5FP_lock_t;
-
-/*===----------------------------------------------------------------------===
- * Object Types
- *===----------------------------------------------------------------------===
- *
- * The various types of objects we're able to get a lock on or which we
- * want to modify/read.
- */
-typedef enum {
- H5FP_OBJ_FILE,
- H5FP_OBJ_GROUP,
- H5FP_OBJ_DATASET,
- H5FP_OBJ_DATATYPE,
- H5FP_OBJ_ATTRIBUTE,
- H5FP_OBJ_MEMORY
-} H5FP_obj_t;
-
-/*===----------------------------------------------------------------------===
- * MPI Message Tags
- *===----------------------------------------------------------------------===
- *
- * Special tag numbers for requests, replies, and string passing
- * messages.
- *
- * Certain actions (Open, Change, and Close) require a pathname to the
- * object. This pathname is sent in a separate message and the SAP will
- * search for it after getting the appropriate request.
- */
-enum {
- H5FP_TAG_REQUEST,
- H5FP_TAG_REPLY,
- H5FP_TAG_READ,
- H5FP_TAG_METADATA,
- H5FP_TAG_ALLOC,
- H5FP_TAG_DUMP,
- H5FP_TAG_FILE_ID
-};
-
-/*===----------------------------------------------------------------------===
- * Status
- *===----------------------------------------------------------------------===
- *
- * The status returned by the SAP. If the process receives an
- * H5FP_STATUS_CATASTROPHIC status, then something *REALLY* bad happened
- * on the set-aside process. The state of the program is then
- * indeterminant and the only real course of action is for the program to
- * abort operation.
- */
-typedef enum sap_status {
- H5FP_STATUS_OK,
-
- /* For locking */
- H5FP_STATUS_LOCK_ACQUIRED,
- H5FP_STATUS_LOCK_FAILED,
-
- /* For releasing locks */
- H5FP_STATUS_LOCK_RELEASED,
- H5FP_STATUS_LOCK_RELEASE_FAILED,
- H5FP_STATUS_BAD_LOCK, /* Process doesn't own a lock on the OID */
-
- /* For change requests */
- H5FP_STATUS_FILE_CLOSING,
- H5FP_STATUS_NO_LOCK,
-
- /* For read requests */
- H5FP_STATUS_MDATA_NOT_CACHED,
-
- /* For dumping data to client */
- H5FP_STATUS_DUMPING,
- H5FP_STATUS_DUMPING_FINISHED,
- H5FP_STATUS_DUMPING_FAILED,
-
- /* Out of memory error */
- H5FP_STATUS_OOM,
-
- /* Bad file ID */
- H5FP_STATUS_BAD_FILE_ID,
-
- /* Can't do memory things */
- H5FP_STATUS_CANT_ALLOC,
- H5FP_STATUS_CANT_FREE,
-
- /* Reserved for completely disasterous failures which require an abort */
- H5FP_STATUS_CATASTROPHIC
-} H5FP_status_t;
-
-/*===----------------------------------------------------------------------===
- * H5FP_request
- *===----------------------------------------------------------------------===
- *
- * The structure sent to the SAP which holds all of the requested action
- */
-typedef struct {
- unsigned req_id; /* ID for request set by sending process */
- H5FP_req_t req_type; /* Request type */
- unsigned proc_rank; /* Rank of sending process */
- unsigned file_id; /* SAP's file ID for the specific file */
- H5FP_obj_t obj_type; /* Type of the object */
- H5FP_lock_t rw_lock; /* Indicates read or write lock */
- H5FD_mem_t mem_type; /* Type of memory updated, if req'd */
- unsigned md_size; /* Size of the metadata sent in next msg */
- unsigned long feature_flags; /* Feature flags for the file driver */
- hsize_t meta_block_size; /* Metadata block size */
- hsize_t sdata_block_size; /* Small data block size */
- hsize_t threshold; /* Alignment threshold */
- hsize_t alignment; /* Alignment (really!) */
- haddr_t addr; /* Address of the metadata */
- unsigned char oid[H5R_OBJ_REF_BUF_SIZE]; /* Buffer to store OID of object */
-} H5FP_request_t;
-
-extern MPI_Datatype H5FP_request; /* MPI datatype for the H5FP_request obj */
-
-/*===----------------------------------------------------------------------===
- * H5FP_reply
- *===----------------------------------------------------------------------===
- *
- * Reply from the SAP on an H5FP_request send
- */
-typedef struct {
- unsigned req_id; /* Request ID copied from the SAP_request */
- unsigned file_id; /* File ID assigned to an open file */
- H5FP_status_t status; /* Status of the request */
- unsigned md_size; /* Size of the metadata sent in next msg */
-} H5FP_reply_t;
-
-extern MPI_Datatype H5FP_reply; /* MPI datatype for the H5FP_reply obj */
-
-/*===----------------------------------------------------------------------===
- * H5FP_read
- *===----------------------------------------------------------------------===
- *
- * The reply message from the SAP on an H5FP_request H5FP_REQ_READ send
- */
-typedef struct {
- unsigned req_id; /* Request ID copied from the SAP_request */
- unsigned file_id; /* SAP's file ID for the specific file */
- H5FP_status_t status; /* Status of the request */
- H5FD_mem_t mem_type; /* Type of memory updated, if req'd */
- unsigned md_size; /* Size of the metadata sent in next msg */
- MPI_Offset addr; /* Address of the metadata */
-} H5FP_read_t;
-
-extern MPI_Datatype H5FP_read; /* MPI datatype for the H5FP_read obj */
-
-/*===----------------------------------------------------------------------===
- * H5FP_alloc
- *===----------------------------------------------------------------------===
- *
- * The reply message from the SAP on an H5FP_alloc H5FP_REQ_ALLOC send.
- */
-typedef struct {
- unsigned req_id; /* Request ID copied from the SAP_request */
- unsigned file_id; /* SAP's file ID for the specific file */
- H5FP_status_t status; /* Status of the request */
- H5FD_mem_t mem_type; /* Type of memory updated, if req'd */
- haddr_t addr; /* Address of the metadata */
- haddr_t eoa; /* End of address space */
-} H5FP_alloc_t;
-
-extern MPI_Datatype H5FP_alloc; /* MPI datatype for the H5FP_alloc obj */
-
-/* Handy #define for copying OIDs */
-#define H5FP_COPY_OID(dst, src) HDmemcpy((dst), (src), H5R_OBJ_REF_BUF_SIZE)
-
-/* SAP specific variables */
-extern MPI_Comm H5FP_SAP_COMM; /* Comm we use: Supplied by user */
-extern MPI_Comm H5FP_SAP_BARRIER_COMM; /* Comm if you want to do a barrier */
-
-extern unsigned H5FP_sap_rank; /* The rank of the SAP: Supplied by user */
-extern unsigned H5FP_capt_rank; /* The rank which tells SAP of opens */
-extern unsigned H5FP_capt_barrier_rank;/* Rank of captain in barrier comm */
-
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
-
-/* Start the SAP */
-extern herr_t H5FP_sap_receive_loop(void);
-
-/* Use these functions to communicate with the SAP */
-extern herr_t H5FP_request_open(H5FP_obj_t obj_type,
- haddr_t maxaddr,
- unsigned long feature_flags,
- hsize_t meta_block_size,
- hsize_t sdata_block_size,
- hsize_t threshold,
- hsize_t alignment,
- unsigned *file_id,
- unsigned *req_id);
-extern herr_t H5FP_request_lock(unsigned sap_file_id, unsigned char *mdata,
- H5FP_lock_t rw_lock, int last, unsigned *req_id,
- H5FP_status_t *status);
-extern herr_t H5FP_request_release_lock(unsigned sap_file_id, unsigned char *mdata,
- int last, unsigned *req_id,
- H5FP_status_t *status);
-extern herr_t H5FP_request_read_metadata(H5FD_t *file, unsigned sap_file_id, hid_t dxpl_id,
- H5FD_mem_t mem_type, MPI_Offset addr,
- size_t size, uint8_t **buf, int *bytes_read,
- unsigned *req_id, H5FP_status_t *status);
-extern herr_t H5FP_request_write_metadata(H5FD_t *file, unsigned file_id, hid_t dxpl_id,
- H5FD_mem_t mem_type, MPI_Offset addr,
- int mdata_size, const char *mdata,
- unsigned *req_id, H5FP_status_t *status);
-extern herr_t H5FP_request_flush_metadata(H5FD_t *file, unsigned file_id,
- hid_t dxpl_id, unsigned *req_id,
- H5FP_status_t *status);
-extern herr_t H5FP_request_close(H5FD_t *file, unsigned sap_file_id,
- unsigned *req_id, H5FP_status_t *status);
-extern herr_t H5FP_request_allocate(H5FD_t *file, H5FD_mem_t mem_type,
- hsize_t size, haddr_t *addr,
- haddr_t *eoa, unsigned *req_id,
- H5FP_status_t *status);
-extern herr_t H5FP_request_free(H5FD_t *file, unsigned *req_id, H5FP_status_t *status);
-
-/* NOTE: Don't use these functions outside of the H5FP* modules! */
-extern herr_t H5FP_send_metadata(const char *mdata, int len, int to);
-extern herr_t H5FP_read_metadata(char **mdata, int len, int from);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* H5_HAVE_FPHDF5 */
-
-#endif /* H5FPPRIVATE_H__ */
diff --git a/src/H5FPpublic.h b/src/H5FPpublic.h
deleted file mode 100644
index b93bd5f..0000000
--- a/src/H5FPpublic.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-#ifndef H5FPPUBLIC_H__
-#define H5FPPUBLIC_H__ 0
-
-#include "H5public.h"
-
-#ifdef H5_HAVE_FPHDF5
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-H5_DLL herr_t H5FPinit(MPI_Comm comm, int sap_rank,
- MPI_Comm *FP_comm, MPI_Comm *FP_barrier_comm);
-H5_DLL herr_t H5FPfinalize(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* H5_HAVE_FPHDF5 */
-
-#endif /* H5FPPUBLIC_H__ */
diff --git a/src/H5FPserver.c b/src/H5FPserver.c
deleted file mode 100644
index cdedb33..0000000
--- a/src/H5FPserver.c
+++ /dev/null
@@ -1,1599 +0,0 @@
-/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
- * Copyright by the Board of Trustees of the University of Illinois. *
- * All rights reserved. *
- * *
- * This file is part of HDF5. The full HDF5 copyright notice, including *
- * terms governing use, modification, and redistribution, is contained in *
- * the files COPYING and Copyright.html. COPYING can be found at the root *
- * of the source code distribution tree; Copyright.html can be found at the *
- * root level of an installed copy of the electronic HDF5 document set and *
- * is linked from the top-level documents page. It can also be found at *
- * http://hdf.ncsa.uiuc.edu/HDF5/doc/Copyright.html. If you do not have *
- * access to either file, you may request a copy from hdfhelp@ncsa.uiuc.edu. *
- * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
-/*
- * NOTE! This is NOT thread safe!
- *
- * NOTE: There will be caveats on call-back functions.
- */
-
-/*
- * Purpose:
- *
- * This file has all of the code that a server (SAP) would run to
- * handle requests from clients.
- */
-
-#include "H5private.h" /* Generic Functions */
-#include "H5ACprivate.h" /* Metadata Cache */
-#include "H5Eprivate.h" /* Error Handling */
-#include "H5FDprivate.h" /* File driver */
-#include "H5Oprivate.h" /* Object Headers */
-#include "H5TBprivate.h" /* Threaded, Balanced, Binary Trees */
-
-#ifdef H5_HAVE_FPHDF5
-
-#include "H5FDfphdf5.h" /* File Driver for FPHDF5 */
-#include "H5FPprivate.h" /* Flexible Parallel Functions */
-
-/* Pablo mask */
-#define PABLO_MASK H5FPserver_mask
-
-/* Is the interface initialized? */
-static int interface_initialize_g = 0;
-#define INTERFACE_INIT NULL
-
-/* Internal SAP structures */
-
-/*===----------------------------------------------------------------------===
- * H5FP_object_lock
- *===----------------------------------------------------------------------===
- *
- * A lock on a given object. A list of current locks is kept in the
- * appropriate H5FP_file_info structure.
- */
-typedef struct {
- uint8_t oid[H5R_OBJ_REF_BUF_SIZE]; /* Buffer to store OID of object */
- unsigned owned_rank; /* rank which has the lock */
- H5FP_obj_t obj_type; /* type of object being locked */
- unsigned ref_count; /* number of times lock was aquired by proc */
- H5FP_lock_t rw_lock; /* indicates if it's a read or write lock */
-} H5FP_object_lock;
-
-/*===----------------------------------------------------------------------===
- * H5FP_mdata_mod
- *===----------------------------------------------------------------------===
- *
- * A given modification (write) of metadata in the file. A list of
- * current modifications is kept in the appropriate H5FP_file_info
- * structure.
- */
-typedef struct {
- H5FD_mem_t mem_type; /* type of memory updated */
- H5FP_obj_t obj_type; /* type of object modified */
- haddr_t addr; /* address of the metadata */
- unsigned md_size; /* size of the metadata */
- char *metadata; /* encoded metadata about the object */
-} H5FP_mdata_mod;
-
-/*===----------------------------------------------------------------------===
- * H5FP_file_info
- *===----------------------------------------------------------------------===
- *
- * This has all the information the SAP cares about for a given file: a
- * copy of the H5FD_fphdf5_t structure for keeping track of metadata
- * allocations in the file, the file ID assigned by the SAP, whether the
- * file is in the process of being closed (and, therefore, can't accept
- * anymore modifications), a count of the number of modifications not
- * written to the file, a list of modifications (writes) made by clients
- * to the metadata, and a list of current locks on objects in the file.
- */
-typedef struct {
- H5FD_fphdf5_t file; /* file driver structure */
- unsigned file_id; /* the file id the SAP keeps per file */
- int closing; /* we're closing the file - no more changes */
- unsigned num_mods; /* number of mdata writes outstanding */
- H5TB_TREE *mod_tree; /* a tree of metadata updates done */
- H5TB_TREE *locks; /* a tree of locks on objects in the file */
-} H5FP_file_info;
-
-/*
- * This marks the point at which we want to dump all of the metadata
- * write to a process so that that process can write them to the file.
- */
-#define H5FP_MDATA_CACHE_HIGHWATER_MARK 1024
-
-static H5TB_TREE *file_info_tree;
-
-/* local functions */
-static herr_t H5FP_sap_receive(H5FP_request_t *req, int source, int tag, char **buf);
-
- /* local functions to generate unique ids for messages */
-static unsigned H5FP_gen_sap_file_id(void);
-
- /* local functions for handling object locks */
-static int H5FP_object_lock_cmp(H5FP_object_lock *o1,
- H5FP_object_lock *o2,
- int cmparg);
-static H5FP_object_lock *H5FP_new_object_lock(const unsigned char *oid,
- unsigned rank,
- H5FP_obj_t obj_type,
- H5FP_lock_t rw_lock);
-static herr_t H5FP_free_object_lock(H5FP_object_lock *ol);
-static H5FP_object_lock *H5FP_find_object_lock(H5FP_file_info *info,
- unsigned char *oid);
-static herr_t H5FP_remove_object_lock_from_list(H5FP_file_info *info,
- H5FP_object_lock *ol);
-
- /* local file information handling functions */
-static herr_t H5FP_add_new_file_info_to_list(unsigned file_id,
- haddr_t maxaddr,
- unsigned long feature_flags,
- hsize_t meta_block_size,
- hsize_t sdata_block_size,
- hsize_t threshold,
- hsize_t alignment);
-static int H5FP_file_info_cmp(H5FP_file_info *k1,
- H5FP_file_info *k2,
- int cmparg);
-static herr_t H5FP_remove_file_id_from_list(unsigned file_id);
-static herr_t H5FP_free_file_info_node(H5FP_file_info *info);
-static H5FP_file_info *H5FP_new_file_info_node(unsigned file_id);
-static H5FP_file_info *H5FP_find_file_info(unsigned file_id);
-
- /* local file modification structure handling functions */
-static H5FP_mdata_mod *H5FP_new_file_mod_node(unsigned rank,
- H5FD_mem_t mem_type,
- haddr_t addr,
- unsigned md_size,
- char *metadata);
-static herr_t H5FP_free_mod_node(H5FP_mdata_mod *info);
-
- /* local request handling functions */
-static herr_t H5FP_sap_handle_open_request(H5FP_request_t *req, unsigned md_size);
-static herr_t H5FP_sap_handle_lock_request(H5FP_request_t *req);
-static herr_t H5FP_sap_handle_release_lock_request(H5FP_request_t *req);
-static herr_t H5FP_sap_handle_read_request(H5FP_request_t *req);
-static herr_t H5FP_sap_handle_write_request(H5FP_request_t *req,
- char *mdata,
- unsigned md_size);
-static herr_t H5FP_sap_handle_flush_request(H5FP_request_t *req);
-static herr_t H5FP_sap_handle_close_request(H5FP_request_t *req);
-static herr_t H5FP_sap_handle_alloc_request(H5FP_request_t *req);
-static herr_t H5FP_sap_handle_free_request(H5FP_request_t *req);
-
-/*
- *===----------------------------------------------------------------------===
- * Public Library (non-API) Functions
- *===----------------------------------------------------------------------===
- */
-
-/*
- * Function: H5FP_sap_receive_loop
- * Purpose: Just receive message after message from the other
- * processes and process that message. Return when we
- * receive an "H5FP_REQ_STOP" message from all processes in
- * H5FP_SAP_COMM.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 05. August, 2002
- * Modifications:
- */
-herr_t
-H5FP_sap_receive_loop(void)
-{
- herr_t ret_value = SUCCEED;
- int comm_size;
- int stop = 0;
- H5FP_request_t req;
-
- FUNC_ENTER_NOAPI(H5FP_sap_receive_loop, FAIL);
-
- /* Get the size of the SAP communicator */
- if (MPI_Comm_size(H5FP_SAP_COMM, &comm_size) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_size failed");
-
- /* Create the file structure tree. */
- if ((file_info_tree = H5TB_dmake((H5TB_cmp_t)H5FP_file_info_cmp,
- sizeof(H5FP_file_info), FALSE)) == NULL)
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTMAKETREE, FAIL, "cannot make TBBT tree");
-
- for (;;) {
- char *buf = NULL;
- herr_t hrc;
-
- if (H5FP_sap_receive(&req, MPI_ANY_SOURCE, H5FP_TAG_REQUEST, &buf) != SUCCEED)
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTRECV, FAIL, "cannot receive messages");
-
- switch (req.req_type) {
- case H5FP_REQ_OPEN:
- if ((hrc = H5FP_sap_handle_open_request(&req, req.md_size)) != SUCCEED)
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTOPENOBJ, FAIL, "cannot open file");
- break;
- case H5FP_REQ_LOCK:
- case H5FP_REQ_LOCK_END:
- hrc = H5FP_sap_handle_lock_request(&req);
- break;
- case H5FP_REQ_RELEASE:
- case H5FP_REQ_RELEASE_END:
- hrc = H5FP_sap_handle_release_lock_request(&req);
- break;
- case H5FP_REQ_READ:
- hrc = H5FP_sap_handle_read_request(&req);
- break;
- case H5FP_REQ_WRITE:
- hrc = H5FP_sap_handle_write_request(&req, buf, req.md_size);
- break;
- case H5FP_REQ_FLUSH:
- hrc = H5FP_sap_handle_flush_request(&req);
- break;
- case H5FP_REQ_CLOSE:
- hrc = H5FP_sap_handle_close_request(&req);
- break;
- case H5FP_REQ_ALLOC:
- hrc = H5FP_sap_handle_alloc_request(&req);
- break;
- case H5FP_REQ_FREE:
- hrc = H5FP_sap_handle_free_request(&req);
- break;
- case H5FP_REQ_STOP:
- hrc = SUCCEED;
- if (++stop == comm_size - 1)
- goto done;
- break;
- default:
- HGOTO_ERROR(H5E_FPHDF5, H5E_ARGS, FAIL, "invalid request type");
- }
-
- /*
- * If the above calls didn't succeed, free the buffer
- */
- if (hrc != SUCCEED) {
- HDfree(buf);
- }
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_sap_receive
- * Purpose: Receive a message from SOURCE with the given TAG. The REQ
- * object passed in as a pointer is filled by the MPI_Recv
- * function.
- * Return: Success: Pointer to string passed in, if one was sent.
- * As well as the SAP_request object.
- * Failure: FAIL
- * Programmer: Bill Wendling, 17. September, 2002
- * Modifications:
- */
-static herr_t
-H5FP_sap_receive(H5FP_request_t *req, int source, int tag, char **buf)
-{
- MPI_Status status;
- herr_t ret_value = SUCCEED;
- int mrc;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_sap_receive);
-
- HDmemset(&status, 0, sizeof(status));
-
- if ((mrc = MPI_Recv(req, 1, H5FP_request, source, tag,
- H5FP_SAP_COMM, &status)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Recv failed", mrc);
-
- if (buf && req->md_size)
- if (H5FP_read_metadata(buf, (int)req->md_size, (int)req->proc_rank) == FAIL)
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTRECV, FAIL, "can't read metadata from process");
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_object_lock_cmp
- * Purpose: Comparison function for the TBBT.
- * Return: <0, 0, or >0
- * Programmer: Bill Wendling, 09. September 2002
- * Modifications:
- */
-static int
-H5FP_object_lock_cmp(H5FP_object_lock *o1,
- H5FP_object_lock *o2,
- int UNUSED cmparg)
-{
- FUNC_ENTER_NOAPI_NOINIT(H5FP_object_lock_cmp);
- assert(o1);
- assert(o2);
- FUNC_LEAVE_NOAPI(HDmemcmp(o1->oid, o2->oid, sizeof(o1->oid)));
-}
-
-/*
- * Function: H5FP_new_object_lock
- * Purpose: Create a new object lock. The locks are keyed off of the
- * OID when they're inserted into the TBBT. There's a
- * reference count so the same process can request the lock
- * multiple times, if need be. The rank of the requesting
- * process is kept around so that we can determine who
- * wanted it in the first place. RW_LOCK tells us what kind
- * of lock it is -- READ or WRITE.
- * Return: Success: Pointer to SAP_OBJ_LOCK structure.
- * Failure: NULL
- * Programmer: Bill Wendling, 09. September 2002
- * Modifications:
- */
-static H5FP_object_lock *
-H5FP_new_object_lock(const unsigned char *oid, unsigned rank,
- H5FP_obj_t obj_type, H5FP_lock_t rw_lock)
-{
- H5FP_object_lock *ret_value = NULL;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_new_object_lock);
- assert(oid);
-
- if ((ret_value = (H5FP_object_lock *)H5MM_malloc(sizeof(H5FP_object_lock))) == NULL)
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "out of memory");
-
- H5FP_COPY_OID(ret_value->oid, oid);
- ret_value->owned_rank = rank;
- ret_value->obj_type = obj_type;
- ret_value->ref_count = 1;
- ret_value->rw_lock = rw_lock;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_free_object_lock
- * Purpose: Free up the space allocated for the object lock.
- * Return: SUCCEED (never fails)
- * Programmer: Bill Wendling, 09. September 2002
- * Modifications:
- */
-static herr_t
-H5FP_free_object_lock(H5FP_object_lock *ol)
-{
- FUNC_ENTER_NOAPI_NOINIT(H5FP_free_object_lock);
- HDfree(ol);
- FUNC_LEAVE_NOAPI(SUCCEED);
-}
-
-/*
- * Function: H5FP_find_object_lock
- * Purpose: Find the object lock for the given OID if there is one.
- * Return: Success: Pointer to the object
- * Failure: NULL
- * Programmer: Bill Wendling, 09. September 2002
- * Modifications:
- */
-static H5FP_object_lock *
-H5FP_find_object_lock(H5FP_file_info *info, unsigned char *oid)
-{
- H5FP_object_lock *ret_value = NULL;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_find_object_lock);
-
- assert(info);
- assert(oid);
-
- if (info->locks && info->locks->root) {
- H5TB_NODE *node;
- H5FP_object_lock ol;
-
- H5FP_COPY_OID(ol.oid, oid); /* This is the key field for the TBBT */
-
- if ((node = H5TB_dfind(info->locks, (void *)&ol, NULL)) == NULL)
- HGOTO_ERROR(H5E_FPHDF5, H5E_NOTFOUND, NULL, "lock not found");
-
- ret_value = (H5FP_object_lock *)node->data;
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_remove_object_lock_from_list
- * Purpose: Remove the object lock from the file structure's lock
- * list.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 09. September 2002
- * Modifications:
- */
-static herr_t
-H5FP_remove_object_lock_from_list(H5FP_file_info *info,
- H5FP_object_lock *ol)
-{
- H5TB_NODE *node;
- herr_t ret_value = FAIL;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_remove_object_lock_from_list);
-
- if ((node = H5TB_dfind(info->locks, (void *)ol, NULL)) != NULL) {
- H5FP_free_object_lock(H5TB_rem(&info->locks->root, node, NULL));
- ret_value = SUCCEED;
- }
-
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_file_mod_cmp
- * Purpose: Comparison function for the TBBT.
- * Return: <0, 0, or >0
- * Programmer: Bill Wendling, 27. August, 2002
- * Modifications:
- */
-static int
-H5FP_file_mod_cmp(H5FP_mdata_mod *k1,
- H5FP_mdata_mod *k2,
- int UNUSED cmparg)
-{
- FUNC_ENTER_NOAPI_NOINIT(H5FP_file_mod_cmp);
- assert(k1);
- assert(k2);
- FUNC_LEAVE_NOAPI(k1->addr - k2->addr);
-}
-
-/*
- * Function: H5FP_free_mod_node
- * Purpose: Helper function to free up an SAP_FILE_MOD node and all
- * of the malloced space it has.
- * Return: SUCCEED (doesn't fail)
- * Programmer: Bill Wendling, 31. July, 2002
- * Modifications:
- */
-static herr_t
-H5FP_free_mod_node(H5FP_mdata_mod *info)
-{
- FUNC_ENTER_NOAPI_NOINIT(H5FP_free_mod_node);
-
- if (info) {
- HDfree(info->metadata);
- HDfree(info);
- }
-
- FUNC_LEAVE_NOAPI(SUCCEED);
-}
-
-/*
- * Function: H5FP_new_file_mod_node
- * Purpose: Create a new sap_file_mod node and initialize it. This
- * object now has responsibility for freeing the metadata
- * information.
- * Return: Success: Pointer to new sap_file_mod structure.
- * Failure: NULL
- * Programmer: Bill Wendling, 02. August, 2002
- * Modifications:
- */
-static H5FP_mdata_mod *
-H5FP_new_file_mod_node(unsigned UNUSED rank, H5FD_mem_t mem_type,
- haddr_t addr, unsigned md_size, char *metadata)
-{
- H5FP_mdata_mod *ret_value = NULL;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_new_file_mod_node);
-
- if ((ret_value = (H5FP_mdata_mod *)H5MM_malloc(sizeof(H5FP_mdata_mod))) == NULL)
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "out of memory");
-
- ret_value->mem_type = mem_type;
- ret_value->addr = addr;
- ret_value->md_size = md_size;
- ret_value->metadata = metadata;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_add_file_mod_to_list
- * Purpose: Add a metadata write to a file ID. If the metadata is
- * already in the cache, then we just replace it with the
- * updated bits. (Only the metadata info and size should
- * change in this case.)
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 02. August, 2002
- * Modifications:
- */
-static herr_t
-H5FP_add_file_mod_to_list(H5FP_file_info *info, H5FD_mem_t mem_type,
- haddr_t addr, unsigned rank, unsigned md_size,
- char *metadata)
-{
- H5FP_mdata_mod *fm, mod;
- H5TB_NODE *node;
- herr_t ret_value = FAIL;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_add_file_mod_to_list);
-
- /* check args */
- assert(info);
-
- mod.addr = addr; /* This is the key field for the TBBT */
-
- if ((node = H5TB_dfind(info->mod_tree, (void *)&mod, NULL)) != NULL) {
- /*
- * The metadata is in the cache already. All we have to do is
- * replace what's there. The addr and type should be the same.
- * The only things to change is the metadata and its size.
- */
- fm = (H5FP_mdata_mod *)node->data;
- HDfree(fm->metadata);
- fm->metadata = metadata;
- fm->md_size = md_size;
- HGOTO_DONE(SUCCEED);
- }
-
- if ((fm = H5FP_new_file_mod_node(rank, mem_type, addr, md_size, metadata)) != NULL) {
- if (!H5TB_dins(info->mod_tree, (void *)fm, NULL))
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTINSERT, FAIL,
- "can't insert modification into tree");
-
- ++info->num_mods;
- HGOTO_DONE(SUCCEED);
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_free_file_info_node
- * Purpose: Helper function to free up an SAP_FILE_STRUCT node and all
- * of the malloced space it has.
- * Return: SUCCEED (never fails)
- * Programmer: Bill Wendling, 31. July, 2002
- * Modifications:
- */
-static herr_t
-H5FP_free_file_info_node(H5FP_file_info *info)
-{
- FUNC_ENTER_NOAPI_NOINIT(H5FP_free_file_info_node);
-
- if (info) {
- H5TB_dfree(info->mod_tree, (void (*)(void*))H5FP_free_mod_node, NULL);
- H5TB_dfree(info->locks, (void (*)(void*))H5FP_free_object_lock, NULL);
- H5FD_free_freelist(&info->file.pub);
- HDfree(info);
- }
-
- FUNC_LEAVE_NOAPI(SUCCEED);
-}
-
-/*
- * Function: H5FP_file_info_cmp
- * Purpose: Compare two sap_file_info structs for the TBBT.
- * Return: <0, 0, >0
- * Programmer: Bill Wendling, 27. August, 2002
- * Modifications:
- */
-static int
-H5FP_file_info_cmp(H5FP_file_info *k1, H5FP_file_info *k2, int UNUSED cmparg)
-{
- FUNC_ENTER_NOAPI_NOINIT(H5FP_file_info_cmp);
- assert(k1);
- assert(k2);
- FUNC_LEAVE_NOAPI(k1->file_id - k2->file_id);
-}
-
-/*
- * Function: H5FP_new_file_info_node
- * Purpose: Create and initialize an sap_file_info node.
- * Return: Success: Pointer to new node
- * Failure: NULL
- * Programmer: Bill Wendling, 02. August, 2002
- * Modifications:
- */
-static H5FP_file_info *
-H5FP_new_file_info_node(unsigned file_id)
-{
- H5FP_file_info *ret_value;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_new_file_info_node);
-
- if ((ret_value = (H5FP_file_info *)H5MM_malloc(sizeof(H5FP_file_info))) == NULL)
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, NULL, "out of memory");
-
- ret_value->file_id = file_id;
- ret_value->closing = FALSE;
- ret_value->num_mods = 0;
-
- if ((ret_value->mod_tree = H5TB_dmake((H5TB_cmp_t)H5FP_file_mod_cmp,
- sizeof(H5FP_mdata_mod), FALSE)) == NULL) {
- HDfree(ret_value);
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTMAKETREE, NULL, "cannot make TBBT tree");
- }
-
- if ((ret_value->locks = H5TB_dmake((H5TB_cmp_t)H5FP_object_lock_cmp,
- sizeof(H5FP_object_lock), FALSE)) == NULL) {
- H5TB_dfree(ret_value->mod_tree, (void (*)(void*))H5FP_free_mod_node, NULL);
- HDfree(ret_value);
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTMAKETREE, NULL, "cannot make TBBT tree");
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_find_file_info
- * Purpose: Find the file structure for the requested file_id.
- * Return: Success: Pointer to the file structure
- * Failure: NULL
- * Programmer: Bill Wendling, 31. July, 2002
- * Modifications:
- */
-static H5FP_file_info *
-H5FP_find_file_info(unsigned file_id)
-{
- H5TB_NODE *node = NULL;
- H5FP_file_info *ret_value = NULL;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_find_file_info);
-
- if (file_info_tree && file_info_tree->root) {
- H5FP_file_info s;
-
- s.file_id = file_id; /* This is the key field for the TBBT */
-
- if ((node = H5TB_dfind(file_info_tree, (void *)&s, NULL)) != NULL)
- ret_value = (H5FP_file_info *)node->data;
- }
-
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_add_new_file_info_to_list
- * Purpose: Add a FILE_ID to the list of file IDS.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 02. August, 2002
- * Modifications:
- */
-static herr_t
-H5FP_add_new_file_info_to_list(unsigned file_id, haddr_t maxaddr,
- unsigned long feature_flags,
- hsize_t meta_block_size,
- hsize_t sdata_block_size,
- hsize_t threshold,
- hsize_t alignment)
-{
- H5FP_file_info *info;
- herr_t ret_value = FAIL;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_add_new_file_info_to_list);
-
- if ((info = H5FP_new_file_info_node(file_id)) != NULL) {
- int mrc;
-
- if (!H5TB_dins(file_info_tree, (void *)info, NULL)) {
- H5FP_free_file_info_node(info);
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTINSERT, FAIL,
- "can't insert file structure into tree");
- }
-
- /*
- * Initialize some of the information needed for metadata
- * allocation requests
- */
- HDmemset(&info->file, 0, sizeof(info->file));
- info->file.pub.driver_id = H5FD_FPHDF5;
- info->file.pub.cls = &H5FD_fphdf5_g;
- info->file.pub.maxaddr = maxaddr;
- info->file.pub.accum_loc = HADDR_UNDEF;
- info->file.pub.feature_flags = feature_flags;
- info->file.pub.def_meta_block_size = meta_block_size;
- info->file.pub.def_sdata_block_size = sdata_block_size;
- info->file.pub.threshold = threshold;
- info->file.pub.alignment = alignment;
-
- if ((mrc = MPI_Comm_rank(H5FP_SAP_COMM, &info->file.mpi_rank)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- if ((mrc = MPI_Comm_size(H5FP_SAP_COMM, &info->file.mpi_size)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Comm_rank failed", mrc);
-
- ret_value = SUCCEED;
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_remove_file_id_from_list
- * Purpose: Remove an FILE_ID from the list of file IDS.
- *
- * NOTE: This should only be called after all modifications to
- * the file descriptor have been synced to all processes and the
- * file has been closed by all processes.
- *
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 31. July, 2002
- * Modifications:
- */
-static herr_t
-H5FP_remove_file_id_from_list(unsigned file_id)
-{
- H5FP_file_info s;
- H5TB_NODE *node;
- herr_t ret_value = FAIL;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_remove_file_id_from_list);
-
- s.file_id = file_id; /* This is the key field for the TBBT */
-
- if ((node = H5TB_dfind(file_info_tree, (void *)&s, NULL)) != NULL) {
- H5FP_free_file_info_node(H5TB_rem(&file_info_tree->root, node, NULL));
- ret_value = SUCCEED;
- }
-
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- *===----------------------------------------------------------------------===
- * Functions to reply to requests
- *===----------------------------------------------------------------------===
- */
-
-/*
- * Function: H5FP_send_reply
- * Purpose: Send an H5FP_reply message to process TO.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 31. July, 2002
- * Modifications:
- */
-static herr_t
-H5FP_send_reply(unsigned to, unsigned req_id, unsigned file_id, H5FP_status_t status)
-{
- H5FP_reply_t reply;
- herr_t ret_value = SUCCEED;
- int mrc;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_send_reply);
-
- reply.req_id = req_id;
- reply.file_id = file_id;
- reply.status = status;
-
- if ((mrc = MPI_Send(&reply, 1, H5FP_reply, (int)to, H5FP_TAG_REPLY,
- H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_dump
- * Purpose: Dump all metadata writes to a process so that that
- * process will write them to the file.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 31. July, 2002
- * Modifications:
- */
-static herr_t
-H5FP_dump(H5FP_file_info *info, unsigned to, unsigned req_id, unsigned file_id)
-{
- H5FP_read_t r;
- H5TB_NODE *node;
- herr_t ret_value = SUCCEED;
- int mrc;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_dump);
-
- /* check args */
- assert(info);
-
- if (!info->mod_tree)
- /* Nothing to write to the file */
- HGOTO_DONE(SUCCEED);
-
- r.req_id = req_id;
- r.file_id = file_id;
- r.status = H5FP_STATUS_DUMPING;
-
- node = H5TB_first(info->mod_tree->root);
-
- while (node) {
- H5FP_mdata_mod *m = (H5FP_mdata_mod *)node->data;
-
- r.mem_type = m->mem_type;
- r.addr = m->addr;
- r.md_size = m->md_size;
-
- if ((mrc = MPI_Send(&r, 1, H5FP_read, (int)to, H5FP_TAG_DUMP,
- H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
-
- if (H5FP_send_metadata(m->metadata, (int)m->md_size, (int)to) != SUCCEED)
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTSENDMDATA, FAIL,
- "can't dump metadata to client");
-
- node = H5TB_next(node);
- }
-
- /* Tell the receiving process that we're finished... */
- r.mem_type = 0;
- r.addr = 0;
- r.md_size = 0;
- r.status = H5FP_STATUS_DUMPING_FINISHED;
-
- if ((mrc = MPI_Send(&r, 1, H5FP_read, (int)to, H5FP_TAG_DUMP,
- H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
-
- /* Free up the modification tree */
- H5TB_dfree(info->mod_tree, (void (*)(void*))H5FP_free_mod_node, NULL);
-
- if ((info->mod_tree = H5TB_dmake((H5TB_cmp_t)H5FP_file_mod_cmp,
- sizeof(H5FP_mdata_mod), FALSE)) == NULL)
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTMAKETREE, FAIL, "cannot make TBBT tree");
-
- info->num_mods = 0;
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- *===----------------------------------------------------------------------===
- * Functions to handle SAP requests
- *===----------------------------------------------------------------------===
- */
-
-/*
- * Function: H5FP_gen_request_id
- * Purpose: Generate a unique request ID to send along with a
- * message.
- * Return: Integer >= 0 - Doesn't fail.
- * Programmer: Bill Wendling, 30. July, 2002
- * Modifications:
- */
-static unsigned
-H5FP_gen_sap_file_id()
-{
- static unsigned i = 0;
- FUNC_ENTER_NOAPI_NOINIT(H5FP_gen_sap_file_id);
- FUNC_LEAVE_NOAPI(i++);
-}
-
-/*
- * Function: H5FP_sap_handle_open_request
- * Purpose: Handle a request to open a file.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 06. August, 2002
- * Modifications:
- */
-static herr_t
-H5FP_sap_handle_open_request(H5FP_request_t *req, unsigned UNUSED md_size)
-{
- herr_t ret_value = SUCCEED;
- int mrc;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_sap_handle_open_request);
-
- if (req->obj_type == H5FP_OBJ_FILE) {
- unsigned new_file_id = H5FP_gen_sap_file_id();
-
- /* N.B. At this point, req->addr is equiv. to maxaddr in H5FD_open() */
- if (H5FP_add_new_file_info_to_list(new_file_id, req->addr, req->feature_flags,
- req->meta_block_size, req->sdata_block_size,
- req->threshold, req->alignment) != SUCCEED)
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTINSERT, FAIL,
- "can't insert new file structure to list");
-
- /* file ID gets broadcast via the captain process */
- if ((mrc = MPI_Send(&new_file_id, 1, MPI_UNSIGNED, (int)req->proc_rank,
- H5FP_TAG_FILE_ID, H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
- }
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_sap_handle_lock_request
- * Purpose: Handle a request to lock an object. There are two
- * different kinds of locks. There are READ and WRITE locks.
- * The READ locks are sharable, that is if all processes want
- * to READ the object, they can. They just tell the SAP that
- * they're doing so and the SAP gives them a "token" to do
- * that. WRITE locks, on the other hand, are exclusive. You
- * can't have any outstanding READ or WRITE locks on an
- * object before you get a WRITE lock on it.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 06. August, 2002
- * Modifications:
- */
-static herr_t
-H5FP_sap_handle_lock_request(H5FP_request_t *req)
-{
- struct lock_group {
- unsigned char oid[sizeof(req->oid)];
- unsigned file_id;
- unsigned locked;
- H5FP_lock_t rw_lock;
- H5FP_file_info *info;
- H5FP_object_lock *lock;
- } *oids;
- unsigned list_size = 2; /* the size of the "oids" list */
- H5FP_status_t exit_state = H5FP_STATUS_LOCK_ACQUIRED;
- herr_t ret_value = SUCCEED;
- unsigned i, j;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_sap_handle_lock_request);
-
- if ((oids = (struct lock_group *)H5MM_malloc(list_size *
- sizeof(struct lock_group))) == NULL) {
- exit_state = H5FP_STATUS_OOM;
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "out of memory");
- }
-
- /*
- * Gather together all of the OIDs the process is requesting to lock
- * at one time.
- */
- for (i = 0;; ++i) {
- if (req->oid[0]) {
- if (i == list_size) {
- list_size <<= 1; /* equiv to list_size *= 2; */
- oids = HDrealloc(oids, list_size * sizeof(struct lock_group));
-
- if (!oids) {
- exit_state = H5FP_STATUS_OOM;
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "out of memory");
- }
- }
-
- H5FP_COPY_OID(oids[i].oid, req->oid);
- oids[i].file_id = req->file_id;
- oids[i].rw_lock = req->rw_lock;
- oids[i].locked = FALSE;
- }
-
- if (req->req_type == H5FP_REQ_LOCK_END)
- /* this was the last lock request */
- break;
-
- if (H5FP_sap_receive(req, (int)req->proc_rank,
- H5FP_TAG_REQUEST, NULL) != SUCCEED) {
- exit_state = H5FP_STATUS_LOCK_FAILED;
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTRECV, FAIL, "cannot receive messages");
- }
- }
-
- /*
- * Check to see if we can acquire all of the locks requested. If
- * not, the it's an error and we need to return.
- */
- for (j = 0; j <= i; ++j) {
- if ((oids[j].info = H5FP_find_file_info(oids[j].file_id)) == NULL) {
- exit_state = H5FP_STATUS_BAD_FILE_ID;
- HGOTO_DONE(FAIL);
- }
-
- if (oids[j].info->closing) {
- /* we're closing the file - don't accept anymore locks */
- exit_state = H5FP_STATUS_FILE_CLOSING;
- HGOTO_DONE(FAIL);
- }
-
- oids[j].lock = H5FP_find_object_lock(oids[j].info, oids[j].oid);
-
- /*
- * Don't panic!
- *
- * This horrid little if-then statement is just the logical
- * inverse of the if-then statement in the next for-loop.
- */
- if (oids[j].lock &&
- !((oids[j].rw_lock == H5FP_LOCK_READ &&
- oids[j].lock->rw_lock == H5FP_LOCK_READ) ||
- (oids[j].rw_lock == H5FP_LOCK_WRITE &&
- oids[j].lock->rw_lock == H5FP_LOCK_WRITE &&
- oids[j].lock->owned_rank == req->proc_rank))) {
- /* FAILURE */
- exit_state = H5FP_STATUS_LOCK_FAILED;
- HGOTO_DONE(FAIL);
- }
- }
-
- /*
- * Actually acquire the locks. This shouldn't fail because of the
- * previous checks. The only thing which can likely occur is an
- * out-of-memory error.
- */
- for (j = 0; j <= i; ++j) {
- if (oids[j].lock) {
- /*
- * Don't panic!
- *
- * This horrid little if-then statement is just checking so
- * that if you want a READ lock and the current lock is a
- * READ lock, then we bump up the reference count on it. If
- * you want a WRITE lock and the current lock is a WRITE lock
- * and furthermore the current process has that lock, we will
- * also bump up the reference count.
- *
- * Otherwise, it's a failure.
- */
- if ((oids[j].rw_lock == H5FP_LOCK_READ &&
- oids[j].lock->rw_lock == H5FP_LOCK_READ) ||
- (oids[j].rw_lock == H5FP_LOCK_WRITE &&
- oids[j].lock->rw_lock == H5FP_LOCK_WRITE &&
- oids[j].lock->owned_rank == req->proc_rank)) {
- /*
- * The requesting process may already have this lock. Might
- * be a request from some call-back function of some sort.
- * Increase the reference count (which is decreased when
- * released) to help to prevent deadlocks.
- */
- ++oids[j].lock->ref_count;
- oids[j].locked = TRUE;
- } else {
- /* FIXME: reply saying object locked? */
- exit_state = H5FP_STATUS_LOCK_FAILED;
- ret_value = FAIL;
- goto rollback;
- }
- } else {
- H5FP_object_lock *lock = H5FP_new_object_lock(oids[j].oid, req->proc_rank,
- req->obj_type, req->rw_lock);
-
- if (lock) {
- if (!H5TB_dins(oids[j].info->locks, (void *)lock, NULL)) {
- H5FP_free_object_lock(lock);
- exit_state = H5FP_STATUS_LOCK_FAILED;
- ret_value = FAIL;
- HCOMMON_ERROR(H5E_FPHDF5, H5E_CANTINSERT, "can't insert lock into tree");
- goto rollback;
- }
-
- oids[j].locked = TRUE;
- } else {
- /* out of memory...ulp! */
- exit_state = H5FP_STATUS_OOM;
- ret_value = FAIL;
- HCOMMON_ERROR(H5E_RESOURCE, H5E_NOSPACE, "out of memory");
- goto rollback;
- }
- }
- }
-
- goto done;
-
- /* Error handling code */
-rollback:
- /*
- * More than likely, out of memory during the actual locking phase.
- * Try to release any locks which may have been obtained. If it's not
- * possible to release those locks, we're in big trouble. The file is
- * now in an inconsistent state, as far as the SAP is concerned. The
- * only options left to the program are either to abort or completely
- * close the file and reopen which could cause corruption.
- */
- for (j = 0; j <= i; ++j) {
- if (oids[j].locked) {
- if (oids[j].lock) {
- if (oids[j].lock->owned_rank == req->proc_rank) {
- if (--oids[j].lock->ref_count == 0) {
- H5FP_remove_object_lock_from_list(oids[j].info, oids[j].lock);
- }
- } else {
- /* CATASTROPHIC FAILURE!!! */
- /* LOCK WAS NOT CLEARED */
- exit_state = H5FP_STATUS_CATASTROPHIC;
- }
- } else {
- /* CATASTROPHIC FAILURE!!! */
- /* LOCK WAS NOT CLEARED */
- exit_state = H5FP_STATUS_CATASTROPHIC;
- }
- }
- }
-
-done:
- if (ret_value != SUCCEED) {
- /* Can't lock the whole group at one time for some reason */
-HDfprintf(stderr, "%s: locking failure (%d)!!\n", FUNC, ret_value);
- }
-
- HDfree(oids);
- H5FP_send_reply(req->proc_rank, req->req_id, req->file_id, exit_state);
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_sap_handle_release_lock_request
- * Purpose: Handle a request to release the lock on an object.
- * Return: Nothing
- * Programmer: Bill Wendling, 06. August, 2002
- * Modifications:
- */
-static herr_t
-H5FP_sap_handle_release_lock_request(H5FP_request_t *req)
-{
- struct release_group {
- unsigned char oid[sizeof(req->oid)];
- unsigned file_id;
- H5FP_file_info *info;
- H5FP_object_lock *lock;
- } *oids;
- unsigned list_size = 2; /* the size of the "oids" list */
- H5FP_status_t exit_state = H5FP_STATUS_LOCK_RELEASED;
- herr_t ret_value;
- unsigned i, j;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_sap_handle_release_lock_request);
-
- if ((oids = (struct release_group *)H5MM_malloc(list_size *
- sizeof(struct release_group))) == NULL) {
- exit_state = H5FP_STATUS_OOM;
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "out of memory");
- }
-
- /*
- * Gather together all of the OIDs the process is requesting to
- * release locks at one time.
- */
- for (i = 0;; ++i) {
- if (req->oid[0]) {
- if (i == list_size) {
- list_size <<= 1; /* equiv to list_size *= 2; */
- oids = HDrealloc(oids, list_size * sizeof(struct release_group));
-
- if (!oids) {
- exit_state = H5FP_STATUS_OOM;
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "out of memory");
- }
- }
-
- H5FP_COPY_OID(oids[i].oid, req->oid);
- oids[i].file_id = req->file_id;
- }
-
- if (req->req_type == H5FP_REQ_RELEASE_END)
- /* this was the last lock request */
- break;
-
- if (H5FP_sap_receive(req, (int)req->proc_rank, H5FP_TAG_REQUEST, NULL) != SUCCEED) {
- exit_state = H5FP_STATUS_LOCK_RELEASE_FAILED;
- HGOTO_DONE(FAIL);
- }
- }
-
- /*
- * Check here to see if the locks exist and we have the locks. This
- * will help keep us from being in a catastrophic state.
- */
- for (j = 0; j <= i; ++j) {
- if ((oids[j].info = H5FP_find_file_info(oids[j].file_id)) == NULL) {
- exit_state = H5FP_STATUS_BAD_FILE_ID;
- HGOTO_DONE(FAIL);
- }
-
- oids[j].lock = H5FP_find_object_lock(oids[j].info, oids[j].oid);
-
- if (!oids[j].lock || oids[j].lock->owned_rank != req->proc_rank) {
- exit_state = H5FP_STATUS_BAD_LOCK;
- HGOTO_DONE(FAIL);
- }
- }
-
- /*
- * Release a lock. There may be multiple locks to release if they
- * were locked in a group, so loop finding all of the locks and
- * release them.
- */
- for (j = 0; j <= i; ++j) {
- if (oids[j].lock) {
- if (oids[j].lock->owned_rank == req->proc_rank) {
- if (--oids[j].lock->ref_count == 0)
- H5FP_remove_object_lock_from_list(oids[j].info, oids[j].lock);
- } else {
- /* AAAIIIIEEE!!! */
- exit_state = H5FP_STATUS_CATASTROPHIC;
- HGOTO_DONE(FAIL);
- }
- } else {
- /* AAAIIIIEEE!!! */
- exit_state = H5FP_STATUS_CATASTROPHIC;
- HGOTO_DONE(FAIL);
- }
- }
-
-done:
- HDfree(oids);
- H5FP_send_reply(req->proc_rank, req->req_id, req->file_id, exit_state);
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_sap_handle_read_request
- * Purpose: Handle a read request from a client. The bit of metadata
- * that the client wants may or may not be in here. It's not
- * an error if it isn't here. When that's the case, the
- * client just goes and reads it from the file.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 06. August, 2002
- * Modifications:
- */
-static herr_t
-H5FP_sap_handle_read_request(H5FP_request_t *req)
-{
- H5FP_file_info *info;
- H5FP_read_t r;
- herr_t ret_value = SUCCEED;
- char *metadata = NULL;
- int mrc;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_sap_handle_read_request);
-
- r.req_id = req->req_id;
- r.file_id = req->file_id;
- r.md_size = 0;
- r.addr = 0;
- r.status = H5FP_STATUS_MDATA_NOT_CACHED;
-
- if ((info = H5FP_find_file_info(req->file_id)) != NULL) {
- H5FP_mdata_mod mod; /* Used to find the correct modification */
- H5TB_NODE *node;
-
- if (info->num_mods >= H5FP_MDATA_CACHE_HIGHWATER_MARK) {
- if (H5FP_dump(info, req->proc_rank, req->req_id, req->file_id) == FAIL)
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTSENDMDATA, FAIL,
- "can't dump metadata to client");
-
- /*
- * We aren't going to find the information we need since it
- * was just dumped.
- */
- HGOTO_DONE(SUCCEED);
- }
-
- mod.addr = req->addr; /* This is the key field for the TBBT */
-
- if ((node = H5TB_dfind(info->mod_tree, (void *)&mod, NULL)) != NULL) {
- H5FP_mdata_mod *fm = (H5FP_mdata_mod *)node->data;
-
- r.md_size = fm->md_size;
- r.addr = fm->addr;
- r.status = H5FP_STATUS_OK;
- metadata = fm->metadata; /* Sent out in a separate message */
- }
- }
-
- if ((mrc = MPI_Send(&r, 1, H5FP_read, (int)req->proc_rank,
- H5FP_TAG_READ, H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_GOTO_ERROR(FAIL, "MPI_Send failed", mrc);
-
- if (r.md_size)
- if (H5FP_send_metadata(metadata, (int)r.md_size, (int)req->proc_rank) != SUCCEED)
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTSENDMDATA, FAIL,
- "can't send metadata to client");
-
-done:
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_sap_handle_write_request
- * Purpose: Handle a request to write a piece of metadata in the
- * file.
- *
- * N.B: We assume that the client has the lock on the
- * requesting object before getting here. Why? Because it's
- * hard to pass the OID for that object down to the
- * low-level I/O routines...*sigh*
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 06. August, 2002
- * Modifications:
- */
-static herr_t
-H5FP_sap_handle_write_request(H5FP_request_t *req, char *mdata, unsigned md_size)
-{
- H5FP_file_info *info;
- H5FP_status_t exit_state = H5FP_STATUS_OK;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_sap_handle_write_request);
-
- if ((info = H5FP_find_file_info(req->file_id)) != NULL) {
-#if 0
- H5FP_object_lock *lock;
-#endif /* 0 */
-
- if (info->num_mods >= H5FP_MDATA_CACHE_HIGHWATER_MARK) {
- /*
- * If there are any modifications not written out yet, dump
- * them to this process
- */
- if (H5FP_send_reply(req->proc_rank, req->req_id, req->file_id,
- H5FP_STATUS_DUMPING) == FAIL) {
- exit_state = H5FP_STATUS_DUMPING_FAILED;
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTSENDMDATA, FAIL,
- "can't send message to client");
- }
-
- if (H5FP_dump(info, req->proc_rank, req->req_id, req->file_id) == FAIL) {
- exit_state = H5FP_STATUS_DUMPING_FAILED;
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTSENDMDATA, FAIL,
- "metadata dump failed");
- }
- }
-
- if (info->closing) {
- /* we're closing the file - don't accept anymore changes */
- exit_state = H5FP_STATUS_FILE_CLOSING;
- HGOTO_DONE(FAIL);
- }
-
-#if 0
- /*
- * We're assuming that the client has the correct lock at this
- * point...
- */
-
- /* handle the change request */
- lock = H5FP_find_object_lock(info, req->oid);
-
- if (!lock || lock->owned_rank != req->proc_rank
- || lock->rw_lock != H5FP_LOCK_WRITE) {
- /*
- * There isn't a write lock or we don't own the write
- * lock on this OID
- */
- exit_state = H5FP_STATUS_NO_LOCK;
- HGOTO_DONE(FAIL);
- }
-#endif /* 0 */
-
- if (H5FP_add_file_mod_to_list(info, req->mem_type, (haddr_t)req->addr,
- req->proc_rank, md_size, mdata) != SUCCEED) {
- exit_state = H5FP_STATUS_OOM;
- HGOTO_DONE(FAIL);
- }
- } else {
- /* error: there isn't a file opened to change */
- exit_state = H5FP_STATUS_BAD_FILE_ID;
- HGOTO_DONE(FAIL);
- }
-
-done:
- H5FP_send_reply(req->proc_rank, req->req_id, req->file_id, exit_state);
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_sap_handle_flush_request
- * Purpose: Handle a request to flush the metadata to a file.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling
- * 12. February 2003
- * Modifications:
- */
-static herr_t
-H5FP_sap_handle_flush_request(H5FP_request_t *req)
-{
- H5FP_file_info *info;
- H5FP_status_t exit_state = H5FP_STATUS_OK;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_sap_handle_flush_request);
-
- if ((info = H5FP_find_file_info(req->file_id)) != NULL)
- if (info->num_mods) {
- /*
- * If there are any modifications not written out yet, dump
- * them to this process
- */
- if (H5FP_send_reply(req->proc_rank, req->req_id, req->file_id,
- H5FP_STATUS_DUMPING) == FAIL) {
- exit_state = H5FP_STATUS_DUMPING_FAILED;
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTSENDMDATA, FAIL,
- "can't send message to client");
- }
-
- if (H5FP_dump(info, req->proc_rank, req->req_id, req->file_id) == FAIL) {
- exit_state = H5FP_STATUS_DUMPING_FAILED;
- HGOTO_ERROR(H5E_FPHDF5, H5E_CANTSENDMDATA, FAIL,
- "can't dump metadata to client");
- }
- }
-
-done:
- H5FP_send_reply(req->proc_rank, req->req_id, req->file_id, exit_state);
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_sap_handle_close_request
- * Purpose: Handle a request to close a file.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 06. August, 2002
- * Modifications:
- */
-static herr_t
-H5FP_sap_handle_close_request(H5FP_request_t *req)
-{
- H5FP_file_info *info;
- H5FP_status_t exit_state = H5FP_STATUS_OK;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_sap_handle_close_request);
-
- if ((info = H5FP_find_file_info(req->file_id)) != NULL) {
- int comm_size;
-
- /* Get the size of the SAP communicator */
- if (MPI_Comm_size(H5FP_SAP_COMM, &comm_size) != MPI_SUCCESS)
- HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "MPI_Comm_size failed");
-
- if (++info->closing == comm_size - 1) {
- /* Free the freelist -- this call never fails */
- H5FD_free_freelist((H5FD_t*)&info->file);
-
- /* All processes have closed the file - remove it from list */
- if (H5FP_remove_file_id_from_list(req->file_id) != SUCCEED) {
- exit_state = H5FP_STATUS_BAD_FILE_ID;
- HGOTO_ERROR(H5E_FPHDF5, H5E_NOTFOUND, FAIL,
- "cannot remove file ID from list");
- }
- }
- }
-
-done:
- H5FP_send_reply(req->proc_rank, req->req_id, req->file_id, exit_state);
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_sap_handle_alloc_request
- * Purpose: Handle a request to allocate data from the file.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 19. February 2003
- * Modifications:
- */
-static herr_t
-H5FP_sap_handle_alloc_request(H5FP_request_t *req)
-{
- H5FP_alloc_t sap_alloc;
- H5FP_file_info *info;
- int mrc;
- herr_t ret_value = SUCCEED;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_sap_handle_alloc_request);
-
- sap_alloc.req_id = req->req_id;
- sap_alloc.file_id = req->file_id;
- sap_alloc.status = H5FP_STATUS_OK;
- sap_alloc.mem_type = req->mem_type;
-
- if ((info = H5FP_find_file_info(req->file_id)) != NULL) {
- /*
- * Try allocating from the free-list that is kept on the server
- * first. If that fails, then call the specified allocation
- * functions depending upon what type of data is being allocated.
- *
- * Note: H5P_DEFAULT is passed in as the data xfer property list.
- * This is okay since the only situation where that will be used
- * is if you have a "hole" in the middle of your metadata (in
- * aggregate mode) that needs to be freed. We've turned off
- * metadata aggregation for FPHDF5 because we don't have the
- * proper information.
- *
- * Whatta pain.
- */
- if ((sap_alloc.addr = H5FD_alloc((H5FD_t*)&info->file, req->mem_type, H5P_DEFAULT,
- req->meta_block_size)) == HADDR_UNDEF) {
- sap_alloc.status = H5FP_STATUS_CANT_ALLOC;
- HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL,
- "SAP unable to allocate file memory");
- }
-
- /* Get the EOA from the file. This call doesn't fail. */
- sap_alloc.eoa = ((H5FD_t*)&info->file)->cls->get_eoa((H5FD_t*)&info->file);
- sap_alloc.status = H5FP_STATUS_OK;
- } else {
- sap_alloc.addr = HADDR_UNDEF;
- sap_alloc.eoa = HADDR_UNDEF;
- sap_alloc.status = H5FP_STATUS_CANT_ALLOC;
- }
-
-done:
- if ((mrc = MPI_Send(&sap_alloc, 1, H5FP_alloc, (int)req->proc_rank,
- H5FP_TAG_ALLOC, H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_DONE_ERROR(FAIL, "MPI_Send failed", mrc);
-
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-/*
- * Function: H5FP_sap_handle_free_request
- * Purpose: Handle a request to free data from the file.
- * Return: Success: SUCCEED
- * Failure: FAIL
- * Programmer: Bill Wendling, 31. March 2003
- * Modifications:
- */
-static herr_t
-H5FP_sap_handle_free_request(H5FP_request_t *req)
-{
- H5FP_alloc_t sap_alloc;
- H5FP_file_info *info;
- H5FP_status_t exit_state = H5FP_STATUS_OK;
- herr_t ret_value = SUCCEED;
- int mrc;
-
- FUNC_ENTER_NOAPI_NOINIT(H5FP_sap_handle_free_request);
-
- sap_alloc.req_id = req->req_id;
- sap_alloc.file_id = req->file_id;
- sap_alloc.status = H5FP_STATUS_OK;
- sap_alloc.addr = HADDR_UNDEF;
-
- if ((info = H5FP_find_file_info(req->file_id)) != NULL) {
- H5FD_t *f = (H5FD_t*)&info->file;
-
- if (f->eoma)
- if (H5FD_free(f, H5FD_MEM_DEFAULT, H5P_DEFAULT,
- f->eoma, f->cur_meta_block_size) != SUCCEED) {
- exit_state = H5FP_STATUS_CANT_FREE;
- sap_alloc.status = H5FP_STATUS_CANT_FREE;
- HGOTO_ERROR(H5E_VFL, H5E_CANTFREE, FAIL,
- "SAP unable to free metadata block");
- }
-
- /* Reset metadata block information, just in case */
- f->eoma = 0;
- f->cur_meta_block_size = 0;
-
- if (f->eosda)
- if (H5FD_free(f, H5FD_MEM_DRAW, H5P_DEFAULT,
- f->eosda, f->cur_sdata_block_size) != SUCCEED) {
- exit_state = H5FP_STATUS_CANT_FREE;
- sap_alloc.status = H5FP_STATUS_CANT_FREE;
- HGOTO_ERROR(H5E_VFL, H5E_CANTFREE, FAIL,
- "SAP unable to free 'small data' block");
- }
-
- /* Reset "small data" block information, just in case */
- f->eosda = 0;
- f->cur_sdata_block_size = 0;
-
- /* Get the EOA from the file. This call doesn't fail. */
- sap_alloc.eoa = ((H5FD_t*)&info->file)->cls->get_eoa((H5FD_t*)&info->file);
- } else {
- sap_alloc.eoa = HADDR_UNDEF;
- sap_alloc.status = H5FP_STATUS_CANT_FREE;
- }
-
-done:
- if ((mrc = MPI_Send(&sap_alloc, 1, H5FP_alloc, (int)req->proc_rank,
- H5FP_TAG_ALLOC, H5FP_SAP_COMM)) != MPI_SUCCESS)
- HMPI_DONE_ERROR(FAIL, "MPI_Send failed", mrc);
-
- FUNC_LEAVE_NOAPI(ret_value);
-}
-
-#endif /* H5_HAVE_FPHDF5 */
diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h
index 695c3bc..3c64956 100644
--- a/src/H5Fprivate.h
+++ b/src/H5Fprivate.h
@@ -225,7 +225,7 @@ typedef struct H5F_t H5F_t;
#define H5F_RDCC_W0(F) (H5F_rdcc_w0(F))
#define H5F_HAS_FEATURE(F,FL) (H5F_has_feature(F,FL))
#define H5F_GRP_BTREE_SHARED(F) (H5F_grp_btree_shared(F))
-#define H5F_BASE_ADDR(F) (H5F_base_addr(F))
+#define H5F_BASE_ADDR(F) (H5F_get_base_addr(F))
#endif /* H5F_PACKAGE */
diff --git a/src/H5Smpio.c b/src/H5Smpio.c
index 0316feb..c8aab2d 100644
--- a/src/H5Smpio.c
+++ b/src/H5Smpio.c
@@ -24,10 +24,13 @@
#define H5F_PACKAGE /*suppress error about including H5Fpkg */
#define H5S_PACKAGE /*suppress error about including H5Spkg */
+/* Pablo information */
+/* (Put before include files to avoid problems with inline functions) */
+#define PABLO_MASK H5S_mpio_mask
+
#include "H5private.h" /* Generic Functions */
#include "H5Eprivate.h" /* Error handling */
#include "H5Fpkg.h" /* Files */
-#include "H5FDmpio.h" /* MPIO file driver */
#include "H5FDprivate.h" /* File drivers */
#include "H5Iprivate.h" /* IDs */
#include "H5Pprivate.h" /* Property lists */
@@ -36,7 +39,6 @@
#ifdef H5_HAVE_PARALLEL
/* Interface initialization */
-#define PABLO_MASK H5Sall_mask
#define INTERFACE_INIT NULL
static int interface_initialize_g = 0;
@@ -682,7 +684,7 @@ H5S_mpio_spaces_xfer(H5F_t *f, const H5D_t *dset, size_t elmt_size,
* Pass buf type, file type to the file driver. Request an MPI type
* transfer (instead of an elementary byteblock transfer).
*/
- if(H5FD_mpio_setup(dxpl_id, mpi_buf_type, mpi_file_type)<0)
+ if(H5FD_mpi_setup_collective(dxpl_id, mpi_buf_type, mpi_file_type)<0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set MPI-I/O properties");
plist_is_setup=1;
@@ -701,7 +703,7 @@ H5S_mpio_spaces_xfer(H5F_t *f, const H5D_t *dset, size_t elmt_size,
done:
/* Reset the dxpl settings */
if(plist_is_setup) {
- if(H5FD_mpio_teardown(dxpl_id)<0)
+ if(H5FD_mpi_teardown_collective(dxpl_id)<0)
HDONE_ERROR(H5E_DATASPACE, H5E_CANTFREE, FAIL, "unable to reset dxpl values");
} /* end if */
@@ -826,9 +828,13 @@ H5S_mpio_opt_possible( const H5S_t *mem_space, const H5S_t *file_space, const un
assert(mem_space);
assert(file_space);
+ /* Parallel I/O conversion flag must be set, if it is not collective IO, go to false. */
+ if(!(flags&H5S_CONV_PAR_IO_POSSIBLE))
+ HGOTO_DONE(FALSE);
+
/* Check whether these are both simple or scalar dataspaces */
if (!((H5S_SIMPLE==H5S_GET_EXTENT_TYPE(mem_space) || H5S_SCALAR==H5S_GET_EXTENT_TYPE(mem_space))
- && (H5S_SIMPLE==H5S_GET_EXTENT_TYPE(file_space) || H5S_SCALAR==H5S_GET_EXTENT_TYPE(file_space))))
+ && (H5S_SIMPLE==H5S_GET_EXTENT_TYPE(file_space) || H5S_SCALAR==H5S_GET_EXTENT_TYPE(file_space))))
HGOTO_DONE(FALSE);
/* Check whether both selections are "regular" */
@@ -847,10 +853,6 @@ H5S_mpio_opt_possible( const H5S_t *mem_space, const H5S_t *file_space, const un
if ((flags&H5S_CONV_STORAGE_MASK)!=H5S_CONV_STORAGE_CONTIGUOUS)
HGOTO_DONE(FALSE);
- /* Parallel I/O conversion flag must be set */
- if(!(flags&H5S_CONV_PAR_IO_POSSIBLE))
- HGOTO_DONE(FALSE);
-
done:
FUNC_LEAVE_NOAPI(ret_value);
} /* H5S_mpio_opt_possible() */
diff --git a/src/H5private.h b/src/H5private.h
index 71b09f6..c72f46b 100644
--- a/src/H5private.h
+++ b/src/H5private.h
@@ -1004,7 +1004,7 @@ extern H5_debug_t H5_debug_g;
#define H5TRACE_RETURN(V) /*void*/
#endif
-H5_DLL double H5_trace(double *calltime, const char *func, const char *type, ...);
+H5_DLL double H5_trace(const double *calltime, const char *func, const char *type, ...);
/*-------------------------------------------------------------------------
diff --git a/src/Makefile.in b/src/Makefile.in
index f3cf5fe..96fe515 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -32,20 +32,19 @@ DISTCLEAN=libhdf5.settings
## Source and object files for the library (lexicographically)...
LIB_SRC=H5.c H5A.c H5AC.c H5B.c H5D.c H5Dcontig.c H5Dcompact.c H5Dio.c \
H5Distore.c H5Dseq.c H5Dtest.c H5E.c H5F.c H5FD.c H5FDcore.c \
- H5FDfamily.c H5FDfphdf5.c H5FDgass.c H5FDlog.c H5FDmpio.c \
- H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDsrb.c H5FDstdio.c \
- H5FDstream.c H5FL.c H5FO.c H5FP.c H5FPclient.c H5FPserver.c H5FS.c \
- H5G.c H5Gent.c H5Gnode.c H5Gstab.c H5HG.c H5HL.c H5HP.c H5I.c H5MF.c \
- H5MM.c H5O.c H5Oattr.c H5Obogus.c H5Ocont.c H5Odtype.c H5Oefl.c \
- H5Ofill.c H5Olayout.c H5Omtime.c H5Oname.c H5Onull.c H5Opline.c \
- H5Osdspace.c H5Oshared.c H5Ostab.c H5P.c H5Pdcpl.c H5Pdxpl.c \
- H5Pfapl.c H5Pfcpl.c H5Ptest.c H5R.c H5RC.c H5RS.c H5S.c H5Sall.c \
- H5Shyper.c H5Smpio.c H5Snone.c H5Spoint.c H5Sselect.c H5Stest.c \
- H5ST.c H5T.c H5Tarray.c H5Tbit.c H5Tcommit.c H5Tcompound.c H5Tconv.c \
- H5Tcset.c H5Tenum.c H5Tfields.c H5Tfixed.c H5Tfloat.c H5Tinit.c \
- H5Tnative.c H5Toffset.c H5Topaque.c H5Torder.c H5Tpad.c H5Tprecis.c \
- H5Tstrpad.c H5Tvlen.c H5TB.c H5TS.c H5V.c H5Z.c H5Zdeflate.c \
- H5Zfletcher32.c H5Zshuffle.c H5Zszip.c
+ H5FDfamily.c H5FDgass.c H5FDlog.c H5FDmpi.c H5FDmpio.c H5FDmpiposix.c \
+ H5FDmulti.c H5FDsec2.c H5FDsrb.c H5FDstdio.c H5FDstream.c H5FL.c \
+ H5FO.c H5FS.c H5G.c H5Gent.c H5Gnode.c H5Gstab.c H5HG.c H5HL.c H5HP.c \
+ H5I.c H5MF.c H5MM.c H5O.c H5Oattr.c H5Obogus.c H5Ocont.c H5Odtype.c \
+ H5Oefl.c H5Ofill.c H5Olayout.c H5Omtime.c H5Oname.c H5Onull.c \
+ H5Opline.c H5Osdspace.c H5Oshared.c H5Ostab.c H5P.c H5Pdcpl.c \
+ H5Pdxpl.c H5Pfapl.c H5Pfcpl.c H5Ptest.c H5R.c H5RC.c H5RS.c H5S.c \
+ H5Sall.c H5Shyper.c H5Smpio.c H5Snone.c H5Spoint.c H5Sselect.c \
+ H5Stest.c H5ST.c H5T.c H5Tarray.c H5Tbit.c H5Tcommit.c H5Tcompound.c \
+ H5Tconv.c H5Tcset.c H5Tenum.c H5Tfields.c H5Tfixed.c H5Tfloat.c \
+ H5Tinit.c H5Tnative.c H5Toffset.c H5Topaque.c H5Torder.c H5Tpad.c \
+ H5Tprecis.c H5Tstrpad.c H5Tvlen.c H5TB.c H5TS.c H5V.c H5Z.c \
+ H5Zdeflate.c H5Zfletcher32.c H5Zshuffle.c H5Zszip.c
LIB_OBJ=$(LIB_SRC:.c=.lo)
@@ -55,16 +54,16 @@ MOSTLYCLEAN=H5detect.o H5detect.lo H5detect H5Tinit.o H5Tinit.lo H5Tinit.c
## Public header files (to be installed)...
PUB_HDR=H5public.h H5Apublic.h H5ACpublic.h H5Bpublic.h H5Dpublic.h \
H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDcore.h H5FDfamily.h \
- H5FDfphdf5.h H5FDgass.h H5FDlog.h H5FDmpio.h H5FDmpiposix.h \
+ H5FDgass.h H5FDlog.h H5FDmpio.h H5FDmpiposix.h \
H5FDmulti.h H5FDsec2.h H5FDsrb.h H5FDstdio.h H5FDstream.h \
- H5FPpublic.h H5Gpublic.h H5HGpublic.h H5HLpublic.h H5Ipublic.h \
+ H5Gpublic.h H5HGpublic.h H5HLpublic.h H5Ipublic.h \
H5MMpublic.h H5Opublic.h H5Ppublic.h H5Rpublic.h H5Spublic.h \
H5Tpublic.h H5Zpublic.h H5pubconf.h hdf5.h H5api_adpt.h
## Other header files (not to be installed)...
PRIVATE_HDR=H5private.h H5Aprivate.h H5Apkg.h H5ACprivate.h H5Bprivate.h \
H5Dprivate.h H5Eprivate.h H5Fprivate.h H5FDprivate.h H5FLprivate.h \
- H5FOprivate.h H5FPprivate.h H5FSprivate.h H5Gprivate.h H5Gpkg.h \
+ H5FOprivate.h H5FSprivate.h H5Gprivate.h H5Gpkg.h \
H5HGprivate.h H5HLprivate.h H5HPprivate.h H5Iprivate.h H5MFprivate.h \
H5MMprivate.h H5Oprivate.h H5Opkg.h H5Pprivate.h H5Ppkg.h \
H5Rprivate.h H5RCprivate.h H5RSprivate.h H5Sprivate.h H5STprivate.h \
diff --git a/src/hdf5.h b/src/hdf5.h
index 4bb9d10..76883aa 100644
--- a/src/hdf5.h
+++ b/src/hdf5.h
@@ -21,7 +21,6 @@
#define _HDF5_H
#include "H5public.h"
-#include "H5Ipublic.h" /* Interface abstraction */
#include "H5Apublic.h" /* Attributes */
#include "H5ACpublic.h" /* Metadata cache */
#include "H5Bpublic.h" /* B-trees */
@@ -32,6 +31,7 @@
#include "H5Gpublic.h" /* Groups */
#include "H5HGpublic.h" /* Global heaps */
#include "H5HLpublic.h" /* Local heaps */
+#include "H5Ipublic.h" /* ID management */
#include "H5MMpublic.h" /* Memory management */
#include "H5Opublic.h" /* Object headers */
#include "H5Ppublic.h" /* Property lists */
@@ -43,11 +43,9 @@
/* Predefined file drivers */
#include "H5FDcore.h" /* Files stored entirely in memory */
#include "H5FDfamily.h" /* File families */
-#include "H5FDfphdf5.h" /* Flexible Parallel HDF5 */
#include "H5FDgass.h" /* Remote files using GASS I/O */
#include "H5FDlog.h" /* sec2 driver with I/O logging (for debugging) */
-#include "H5FDmpio.h" /* Parallel files using MPI-2 I/O */
-#include "H5FDmpiposix.h" /* Parallel files using combination MPI-2 & posix I/O */
+#include "H5FDmpi.h" /* MPI-based file drivers */
#include "H5FDmulti.h" /* Usage-partitioned file family */
#include "H5FDsec2.h" /* POSIX unbuffered file I/O */
#include "H5FDsrb.h" /* Remote access using SRB */
diff --git a/test/Dependencies b/test/Dependencies
index 8e84283..b1e1859 100644
--- a/test/Dependencies
+++ b/test/Dependencies
@@ -8,8 +8,8 @@ h5test.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -28,10 +28,10 @@ h5test.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -71,10 +71,10 @@ testframe.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -88,8 +88,8 @@ big.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -108,10 +108,10 @@ big.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -127,8 +127,8 @@ bittests.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -147,10 +147,10 @@ bittests.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -165,9 +165,11 @@ bittests.lo: \
$(top_srcdir)/src/H5Bprivate.h \
$(top_srcdir)/src/H5ACprivate.h \
$(top_srcdir)/src/H5Fprivate.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5RSprivate.h \
$(top_srcdir)/src/H5Rprivate.h \
$(top_srcdir)/src/H5Dprivate.h \
+ $(top_srcdir)/src/H5FDprivate.h \
$(top_srcdir)/src/H5Oprivate.h \
$(top_srcdir)/src/H5HGprivate.h \
$(top_srcdir)/src/H5Zprivate.h
@@ -193,12 +195,14 @@ cmpd_dset.lo: \
$(top_srcdir)/src/H5Fprivate.h \
$(top_srcdir)/src/H5Fpublic.h \
$(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5RSprivate.h \
$(top_srcdir)/src/H5Rprivate.h \
$(top_srcdir)/src/H5Rpublic.h \
$(top_srcdir)/src/H5Dprivate.h \
$(top_srcdir)/src/H5Dpublic.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDprivate.h \
+ $(top_srcdir)/src/H5FDmpi.h \
$(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5Oprivate.h \
@@ -229,8 +233,8 @@ dsets.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -249,10 +253,10 @@ dsets.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -270,8 +274,8 @@ dtypes.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -290,10 +294,10 @@ dtypes.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -308,9 +312,11 @@ dtypes.lo: \
$(top_srcdir)/src/H5Bprivate.h \
$(top_srcdir)/src/H5ACprivate.h \
$(top_srcdir)/src/H5Fprivate.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5RSprivate.h \
$(top_srcdir)/src/H5Rprivate.h \
$(top_srcdir)/src/H5Dprivate.h \
+ $(top_srcdir)/src/H5FDprivate.h \
$(top_srcdir)/src/H5Oprivate.h \
$(top_srcdir)/src/H5HGprivate.h \
$(top_srcdir)/src/H5Zprivate.h
@@ -321,8 +327,8 @@ extend.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -341,10 +347,10 @@ extend.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -360,8 +366,8 @@ external.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -380,10 +386,10 @@ external.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -399,8 +405,8 @@ fillval.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -419,10 +425,10 @@ fillval.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -438,8 +444,8 @@ flush1.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -458,10 +464,10 @@ flush1.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -477,8 +483,8 @@ flush2.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -497,10 +503,10 @@ flush2.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -516,8 +522,8 @@ gheap.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -536,10 +542,10 @@ gheap.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -553,6 +559,7 @@ gheap.lo: \
$(top_srcdir)/src/H5Gprivate.h \
$(top_srcdir)/src/H5Bprivate.h \
$(top_srcdir)/src/H5ACprivate.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5RSprivate.h \
$(top_srcdir)/src/H5HGprivate.h \
$(top_srcdir)/src/H5Iprivate.h \
@@ -568,8 +575,8 @@ hyperslab.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -588,10 +595,10 @@ hyperslab.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -609,8 +616,8 @@ istore.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -629,10 +636,10 @@ istore.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -642,9 +649,11 @@ istore.lo: \
$(top_srcdir)/src/H5private.h \
$(top_srcdir)/src/H5MPprivate.h \
$(top_srcdir)/src/H5Dprivate.h \
+ $(top_srcdir)/src/H5FDprivate.h \
$(top_srcdir)/src/H5Oprivate.h \
$(top_srcdir)/src/H5HGprivate.h \
$(top_srcdir)/src/H5Fprivate.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5Tprivate.h \
$(top_srcdir)/src/H5Gprivate.h \
$(top_srcdir)/src/H5Bprivate.h \
@@ -666,8 +675,8 @@ lheap.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -686,10 +695,10 @@ lheap.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -708,8 +717,8 @@ links.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -728,10 +737,10 @@ links.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -747,8 +756,8 @@ mount.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -767,10 +776,10 @@ mount.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -786,8 +795,8 @@ mtime.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -806,10 +815,10 @@ mtime.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -825,8 +834,8 @@ ohdr.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -845,10 +854,10 @@ ohdr.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -862,6 +871,7 @@ ohdr.lo: \
$(top_srcdir)/src/H5Oprivate.h \
$(top_srcdir)/src/H5HGprivate.h \
$(top_srcdir)/src/H5Fprivate.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5Tprivate.h \
$(top_srcdir)/src/H5Gprivate.h \
$(top_srcdir)/src/H5Bprivate.h \
@@ -877,8 +887,8 @@ stab.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -897,10 +907,10 @@ stab.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -914,6 +924,7 @@ stab.lo: \
$(top_srcdir)/src/H5Bprivate.h \
$(top_srcdir)/src/H5ACprivate.h \
$(top_srcdir)/src/H5Fprivate.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5RSprivate.h
tarray.lo: \
$(srcdir)/tarray.c \
@@ -946,10 +957,10 @@ tarray.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -987,10 +998,10 @@ tattr.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1003,8 +1014,8 @@ tconfig.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -1023,10 +1034,10 @@ tconfig.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1069,10 +1080,10 @@ testhdf5.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1085,8 +1096,8 @@ testmeta.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -1105,10 +1116,10 @@ testmeta.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1121,8 +1132,8 @@ tfile.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -1141,10 +1152,10 @@ tfile.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1159,6 +1170,7 @@ tfile.lo: \
$(top_srcdir)/src/H5Bprivate.h \
$(top_srcdir)/src/H5ACprivate.h \
$(top_srcdir)/src/H5Fprivate.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5Pprivate.h \
$(top_srcdir)/src/H5Oprivate.h \
$(top_srcdir)/src/H5HGprivate.h \
@@ -1198,10 +1210,10 @@ tgenprop.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1209,9 +1221,11 @@ tgenprop.lo: \
$(top_srcdir)/src/H5FDstdio.h \
$(top_srcdir)/src/H5FDstream.h \
$(top_srcdir)/src/H5Dprivate.h \
+ $(top_srcdir)/src/H5FDprivate.h \
$(top_srcdir)/src/H5Oprivate.h \
$(top_srcdir)/src/H5HGprivate.h \
$(top_srcdir)/src/H5Fprivate.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5Tprivate.h \
$(top_srcdir)/src/H5Gprivate.h \
$(top_srcdir)/src/H5Bprivate.h \
@@ -1253,10 +1267,10 @@ th5s.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1266,8 +1280,10 @@ th5s.lo: \
$(top_srcdir)/src/H5Bprivate.h \
$(top_srcdir)/src/H5ACprivate.h \
$(top_srcdir)/src/H5Fprivate.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5Sprivate.h \
$(top_srcdir)/src/H5Dprivate.h \
+ $(top_srcdir)/src/H5FDprivate.h \
$(top_srcdir)/src/H5Oprivate.h \
$(top_srcdir)/src/H5HGprivate.h \
$(top_srcdir)/src/H5Tprivate.h \
@@ -1307,10 +1323,10 @@ theap.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1349,10 +1365,10 @@ titerate.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1390,10 +1406,10 @@ tmeta.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1432,10 +1448,10 @@ trefer.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1473,10 +1489,10 @@ trefstr.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1516,10 +1532,10 @@ tselect.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1529,9 +1545,11 @@ tselect.lo: \
$(top_srcdir)/src/H5Spkg.h \
$(top_srcdir)/src/H5Sprivate.h \
$(top_srcdir)/src/H5Dprivate.h \
+ $(top_srcdir)/src/H5FDprivate.h \
$(top_srcdir)/src/H5Oprivate.h \
$(top_srcdir)/src/H5HGprivate.h \
$(top_srcdir)/src/H5Fprivate.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5Tprivate.h \
$(top_srcdir)/src/H5Gprivate.h \
$(top_srcdir)/src/H5Bprivate.h \
@@ -1571,10 +1589,10 @@ ttime.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1612,10 +1630,10 @@ ttbbt.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1654,10 +1672,10 @@ ttst.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1696,10 +1714,10 @@ tvltypes.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1737,10 +1755,10 @@ tvlstr.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1753,8 +1771,8 @@ tmisc.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -1773,10 +1791,10 @@ tmisc.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1790,9 +1808,11 @@ tmisc.lo: \
$(srcdir)/h5test.h \
$(top_srcdir)/src/H5Dpkg.h \
$(top_srcdir)/src/H5Dprivate.h \
+ $(top_srcdir)/src/H5FDprivate.h \
$(top_srcdir)/src/H5Oprivate.h \
$(top_srcdir)/src/H5HGprivate.h \
$(top_srcdir)/src/H5Fprivate.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5Tprivate.h \
$(top_srcdir)/src/H5Gprivate.h \
$(top_srcdir)/src/H5Bprivate.h \
@@ -1809,8 +1829,8 @@ unlink.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -1829,10 +1849,10 @@ unlink.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1848,8 +1868,8 @@ enum.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -1868,10 +1888,10 @@ enum.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1887,8 +1907,8 @@ ttsafe.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -1907,10 +1927,10 @@ ttsafe.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1929,8 +1949,8 @@ ttsafe_dcreate.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -1949,10 +1969,10 @@ ttsafe_dcreate.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -1971,8 +1991,8 @@ ttsafe_error.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -1991,10 +2011,10 @@ ttsafe_error.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2013,8 +2033,8 @@ ttsafe_cancel.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2033,10 +2053,10 @@ ttsafe_cancel.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2055,8 +2075,8 @@ ttsafe_acreate.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2075,10 +2095,10 @@ ttsafe_acreate.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2097,8 +2117,8 @@ gass_write.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2117,10 +2137,10 @@ gass_write.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2136,8 +2156,8 @@ gass_read.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2156,10 +2176,10 @@ gass_read.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2175,8 +2195,8 @@ gass_append.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2195,10 +2215,10 @@ gass_append.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2214,8 +2234,8 @@ srb_read.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2234,10 +2254,10 @@ srb_read.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2253,8 +2273,8 @@ srb_write.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2273,10 +2293,10 @@ srb_write.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2292,8 +2312,8 @@ srb_append.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2312,10 +2332,10 @@ srb_append.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2330,8 +2350,8 @@ stream_test.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2350,10 +2370,10 @@ stream_test.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2366,8 +2386,8 @@ set_extent.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2386,10 +2406,10 @@ set_extent.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2405,8 +2425,8 @@ getname.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2425,10 +2445,10 @@ getname.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2445,8 +2465,8 @@ file_handle.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2465,10 +2485,10 @@ file_handle.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2484,8 +2504,8 @@ ntypes.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2504,10 +2524,10 @@ ntypes.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -2523,8 +2543,47 @@ dangle.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
$(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5MPprivate.h
+filename.lo: \
+ $(srcdir)/filename.c \
+ $(srcdir)/h5test.h \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -2543,10 +2602,51 @@ dangle.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDgass.h \
+ $(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
$(top_srcdir)/src/H5FDmpio.h \
+ $(top_srcdir)/src/H5FDmpiposix.h \
+ $(top_srcdir)/src/H5FDmulti.h \
+ $(top_srcdir)/src/H5FDsec2.h \
+ $(top_srcdir)/src/H5FDsrb.h \
+ $(top_srcdir)/src/H5FDstdio.h \
+ $(top_srcdir)/src/H5FDstream.h \
+ $(top_srcdir)/src/H5private.h \
+ $(top_srcdir)/src/H5MPprivate.h \
+ $(srcdir)/testhdf5.h \
+ $(top_srcdir)/src/H5Eprivate.h
+reserved.lo: \
+ $(srcdir)/reserved.c \
+ $(srcdir)/h5test.h \
+ $(top_srcdir)/src/hdf5.h \
+ $(top_srcdir)/src/H5public.h \
+ $(top_builddir)/src/H5pubconf.h \
+ $(top_srcdir)/src/H5api_adpt.h \
+ $(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
+ $(top_srcdir)/src/H5ACpublic.h \
+ $(top_srcdir)/src/H5Bpublic.h \
+ $(top_srcdir)/src/H5Dpublic.h \
+ $(top_srcdir)/src/H5Epublic.h \
+ $(top_srcdir)/src/H5Fpublic.h \
+ $(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5Gpublic.h \
+ $(top_srcdir)/src/H5Opublic.h \
+ $(top_srcdir)/src/H5HGpublic.h \
+ $(top_srcdir)/src/H5HLpublic.h \
+ $(top_srcdir)/src/H5MMpublic.h \
+ $(top_srcdir)/src/H5Ppublic.h \
+ $(top_srcdir)/src/H5Zpublic.h \
+ $(top_srcdir)/src/H5Rpublic.h \
+ $(top_srcdir)/src/H5Spublic.h \
+ $(top_srcdir)/src/H5Tpublic.h \
+ $(top_srcdir)/src/H5FDcore.h \
+ $(top_srcdir)/src/H5FDfamily.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
diff --git a/test/Makefile.in b/test/Makefile.in
index 6b7ff37..2456b34 100644
--- a/test/Makefile.in
+++ b/test/Makefile.in
@@ -47,7 +47,7 @@ PUB_LIB=
## prefix or low-level driver with environment variables will influence
## the temporary file name in ways that the makefile is not aware of.
MOSTLYCLEAN=cmpd_dset.h5 compact_dataset.h5 dataset.h5 extend.h5 istore.h5 \
- tfile[1-3].h5 th5s1.h5 lheap.h5 ohdr.h5 stab[1-2].h5 \
+ tfile[1-3].h5 th5s1.h5 th5s3.h5 lheap.h5 ohdr.h5 stab[1-2].h5 \
extern_[1-3].h5 extern_[1-4][ab].raw gheap[0-4].h5 \
links.h5 links[1-3].h5 big.data big[0-9][0-9][0-9][0-9][0-9].h5 \
dtypes[1-5].h5 tattr.h5 \
@@ -60,8 +60,8 @@ MOSTLYCLEAN=cmpd_dset.h5 compact_dataset.h5 dataset.h5 extend.h5 istore.h5 \
tmisc13b.h5 tmisc14.h5 set_extent_read.h5 set_extent_create.h5 \
getname.h5 getname1.h5 getname2.h5 getname3.h5 sec2_file.h5 \
family_file000[0-3][0-9].h5 multi_file-[rs].h5 core_file \
- new_move_[ab].h5 ntypes.h5 dangle.h5 test_filters.h5 \
- get_file_name.h5
+ new_move_[ab].h5 ntypes.h5 dangle.h5 test_filters.h5 \
+ get_file_name.h5
CLEAN=$(TIMINGS)
diff --git a/test/th5s.c b/test/th5s.c
index 3bcc3b4..4ba4088 100644
--- a/test/th5s.c
+++ b/test/th5s.c
@@ -764,5 +764,6 @@ void
cleanup_h5s(void)
{
remove(DATAFILE);
+ remove(BASICFILE);
}
diff --git a/testpar/Dependencies b/testpar/Dependencies
index 94a8aba..87e7af2 100644
--- a/testpar/Dependencies
+++ b/testpar/Dependencies
@@ -9,8 +9,8 @@ t_mpi.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -29,10 +29,10 @@ t_mpi.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -51,8 +51,8 @@ testphdf5.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -71,10 +71,10 @@ testphdf5.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -93,8 +93,8 @@ t_dset.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -113,10 +113,10 @@ t_dset.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -135,8 +135,8 @@ t_file.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -155,10 +155,10 @@ t_file.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -177,8 +177,8 @@ t_mdset.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -197,10 +197,10 @@ t_mdset.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -219,8 +219,8 @@ t_ph5basic.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -239,10 +239,10 @@ t_ph5basic.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
diff --git a/tools/gifconv/Dependencies b/tools/gifconv/Dependencies
index c1e3383..deeea1c 100644
--- a/tools/gifconv/Dependencies
+++ b/tools/gifconv/Dependencies
@@ -8,8 +8,8 @@ decompress.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -28,10 +28,10 @@ decompress.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -45,8 +45,8 @@ gif2hdf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -65,10 +65,10 @@ gif2hdf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -82,8 +82,8 @@ gif2mem.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -102,10 +102,10 @@ gif2mem.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -119,8 +119,8 @@ gifread.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -139,10 +139,10 @@ gifread.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -156,8 +156,8 @@ hdf2gif.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -176,10 +176,10 @@ hdf2gif.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -193,8 +193,8 @@ hdfgifwr.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -213,10 +213,10 @@ hdfgifwr.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -230,8 +230,8 @@ readhdf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -250,10 +250,10 @@ readhdf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -267,8 +267,8 @@ writehdf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -287,10 +287,10 @@ writehdf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
diff --git a/tools/h5diff/Dependencies b/tools/h5diff/Dependencies
index 68abfdf..6e99961 100644
--- a/tools/h5diff/Dependencies
+++ b/tools/h5diff/Dependencies
@@ -8,8 +8,8 @@ h5diff_main.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -28,10 +28,10 @@ h5diff_main.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -46,8 +46,8 @@ testh5diff_attr.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -66,10 +66,10 @@ testh5diff_attr.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -85,8 +85,8 @@ testh5diff_basic.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -105,10 +105,10 @@ testh5diff_basic.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -124,8 +124,8 @@ testh5diff_dset.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -144,10 +144,10 @@ testh5diff_dset.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -163,8 +163,8 @@ testh5diff_util.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -183,10 +183,10 @@ testh5diff_util.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -202,8 +202,8 @@ testh5diff_main.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -222,10 +222,10 @@ testh5diff_main.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
diff --git a/tools/h5dump/Dependencies b/tools/h5dump/Dependencies
index bf1e2a0..3daa59c 100644
--- a/tools/h5dump/Dependencies
+++ b/tools/h5dump/Dependencies
@@ -8,8 +8,8 @@ h5dump.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -28,10 +28,10 @@ h5dump.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -50,8 +50,8 @@ h5dumpgentest.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -70,10 +70,10 @@ h5dumpgentest.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
diff --git a/tools/h5ls/Dependencies b/tools/h5ls/Dependencies
index de32e4f..4a4f952 100644
--- a/tools/h5ls/Dependencies
+++ b/tools/h5ls/Dependencies
@@ -10,8 +10,8 @@ h5ls.lo: \
$(top_srcdir)/src/H5MPprivate.h \
$(top_srcdir)/tools/lib/h5tools.h \
$(top_srcdir)/src/hdf5.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -30,10 +30,10 @@ h5ls.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
diff --git a/tools/h5repack/Dependencies b/tools/h5repack/Dependencies
index f197a14..144030c 100644
--- a/tools/h5repack/Dependencies
+++ b/tools/h5repack/Dependencies
@@ -8,8 +8,8 @@ h5repack.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -28,10 +28,10 @@ h5repack.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -50,8 +50,8 @@ h5repack_copy.lo: \
$(top_srcdir)/src/H5MPprivate.h \
$(srcdir)/h5repack.h \
$(top_srcdir)/src/hdf5.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -70,10 +70,10 @@ h5repack_copy.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -89,8 +89,8 @@ h5repack_filters.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -109,10 +109,10 @@ h5repack_filters.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -135,8 +135,8 @@ h5repack_refs.lo: \
$(top_srcdir)/src/H5MPprivate.h \
$(srcdir)/h5repack.h \
$(top_srcdir)/src/hdf5.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -155,10 +155,10 @@ h5repack_refs.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -174,8 +174,8 @@ h5repack_layout.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -194,10 +194,10 @@ h5repack_layout.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -220,8 +220,8 @@ h5repack_list.lo: \
$(top_srcdir)/src/H5MPprivate.h \
$(srcdir)/h5repack.h \
$(top_srcdir)/src/hdf5.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -240,10 +240,10 @@ h5repack_list.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -260,8 +260,8 @@ h5repack_main.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -280,10 +280,10 @@ h5repack_main.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -300,8 +300,8 @@ h5repack_opttable.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -320,10 +320,10 @@ h5repack_opttable.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -340,8 +340,8 @@ h5repack_parse.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -360,10 +360,10 @@ h5repack_parse.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -379,8 +379,8 @@ h5repack_verify.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -399,10 +399,10 @@ h5repack_verify.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -422,8 +422,8 @@ testh5repack_attr.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -442,10 +442,10 @@ testh5repack_attr.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -465,51 +465,8 @@ testh5repack_dset.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
- $(top_srcdir)/src/H5ACpublic.h \
- $(top_srcdir)/src/H5Bpublic.h \
- $(top_srcdir)/src/H5Dpublic.h \
- $(top_srcdir)/src/H5Epublic.h \
- $(top_srcdir)/src/H5Fpublic.h \
- $(top_srcdir)/src/H5FDpublic.h \
- $(top_srcdir)/src/H5Gpublic.h \
- $(top_srcdir)/src/H5Opublic.h \
- $(top_srcdir)/src/H5HGpublic.h \
- $(top_srcdir)/src/H5HLpublic.h \
- $(top_srcdir)/src/H5MMpublic.h \
- $(top_srcdir)/src/H5Ppublic.h \
- $(top_srcdir)/src/H5Zpublic.h \
- $(top_srcdir)/src/H5Rpublic.h \
- $(top_srcdir)/src/H5Spublic.h \
- $(top_srcdir)/src/H5Tpublic.h \
- $(top_srcdir)/src/H5FDcore.h \
- $(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
- $(top_srcdir)/src/H5FDgass.h \
- $(top_srcdir)/src/H5FDlog.h \
- $(top_srcdir)/src/H5FDmpiposix.h \
- $(top_srcdir)/src/H5FDmulti.h \
- $(top_srcdir)/src/H5FDsec2.h \
- $(top_srcdir)/src/H5FDsrb.h \
- $(top_srcdir)/src/H5FDstdio.h \
- $(top_srcdir)/src/H5FDstream.h \
- $(top_srcdir)/test/h5test.h \
- $(top_srcdir)/src/H5private.h \
- $(top_srcdir)/src/H5MPprivate.h \
- $(srcdir)/h5repack.h \
- $(top_srcdir)/tools/lib/h5trav.h \
- $(top_srcdir)/tools/lib/h5diff.h \
- $(top_srcdir)/tools/lib/h5tools.h
-testh5repack_filters.lo: \
- $(srcdir)/testh5repack_filters.c \
- $(top_srcdir)/src/hdf5.h \
- $(top_srcdir)/src/H5public.h \
- $(top_builddir)/src/H5pubconf.h \
- $(top_srcdir)/src/H5api_adpt.h \
$(top_srcdir)/src/H5Ipublic.h \
- $(top_srcdir)/src/H5Apublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -528,10 +485,10 @@ testh5repack_filters.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -551,8 +508,8 @@ testh5repack_main.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -571,10 +528,10 @@ testh5repack_main.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -594,51 +551,8 @@ testh5repack_make.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
- $(top_srcdir)/src/H5ACpublic.h \
- $(top_srcdir)/src/H5Bpublic.h \
- $(top_srcdir)/src/H5Dpublic.h \
- $(top_srcdir)/src/H5Epublic.h \
- $(top_srcdir)/src/H5Fpublic.h \
- $(top_srcdir)/src/H5FDpublic.h \
- $(top_srcdir)/src/H5Gpublic.h \
- $(top_srcdir)/src/H5Opublic.h \
- $(top_srcdir)/src/H5HGpublic.h \
- $(top_srcdir)/src/H5HLpublic.h \
- $(top_srcdir)/src/H5MMpublic.h \
- $(top_srcdir)/src/H5Ppublic.h \
- $(top_srcdir)/src/H5Zpublic.h \
- $(top_srcdir)/src/H5Rpublic.h \
- $(top_srcdir)/src/H5Spublic.h \
- $(top_srcdir)/src/H5Tpublic.h \
- $(top_srcdir)/src/H5FDcore.h \
- $(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
- $(top_srcdir)/src/H5FDgass.h \
- $(top_srcdir)/src/H5FDlog.h \
- $(top_srcdir)/src/H5FDmpiposix.h \
- $(top_srcdir)/src/H5FDmulti.h \
- $(top_srcdir)/src/H5FDsec2.h \
- $(top_srcdir)/src/H5FDsrb.h \
- $(top_srcdir)/src/H5FDstdio.h \
- $(top_srcdir)/src/H5FDstream.h \
- $(top_srcdir)/test/h5test.h \
- $(top_srcdir)/src/H5private.h \
- $(top_srcdir)/src/H5MPprivate.h \
- $(srcdir)/h5repack.h \
- $(top_srcdir)/tools/lib/h5trav.h \
- $(top_srcdir)/tools/lib/h5diff.h \
- $(top_srcdir)/tools/lib/h5tools.h
-testh5repack_layout.lo: \
- $(srcdir)/testh5repack_layout.c \
- $(top_srcdir)/src/hdf5.h \
- $(top_srcdir)/src/H5public.h \
- $(top_builddir)/src/H5pubconf.h \
- $(top_srcdir)/src/H5api_adpt.h \
$(top_srcdir)/src/H5Ipublic.h \
- $(top_srcdir)/src/H5Apublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -657,10 +571,10 @@ testh5repack_layout.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -680,8 +594,8 @@ testh5repack_util.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -700,10 +614,10 @@ testh5repack_util.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
diff --git a/tools/lib/Dependencies b/tools/lib/Dependencies
index f4ed6d6..f780960 100644
--- a/tools/lib/Dependencies
+++ b/tools/lib/Dependencies
@@ -8,8 +8,8 @@ h5tools.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -28,10 +28,10 @@ h5tools.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -51,8 +51,8 @@ h5tools_str.lo: \
$(top_srcdir)/src/H5MPprivate.h \
$(srcdir)/h5tools.h \
$(top_srcdir)/src/hdf5.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -71,10 +71,10 @@ h5tools_str.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -90,8 +90,8 @@ h5tools_utils.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -110,10 +110,10 @@ h5tools_utils.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -129,8 +129,8 @@ h5diff.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -149,10 +149,10 @@ h5diff.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -169,8 +169,8 @@ h5diff_array.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -189,10 +189,10 @@ h5diff_array.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -209,8 +209,8 @@ h5diff_attr.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -229,10 +229,10 @@ h5diff_attr.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -249,8 +249,8 @@ h5diff_dset.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -269,10 +269,10 @@ h5diff_dset.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -290,8 +290,8 @@ h5diff_util.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -310,10 +310,10 @@ h5diff_util.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -330,8 +330,8 @@ h5trav.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -350,10 +350,10 @@ h5trav.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -369,8 +369,8 @@ h5trav_table.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -389,10 +389,10 @@ h5trav_table.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -407,8 +407,8 @@ h5tools_filters.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -427,10 +427,10 @@ h5tools_filters.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -445,8 +445,8 @@ h5tools_ref.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -465,10 +465,10 @@ h5tools_ref.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -485,8 +485,8 @@ talign.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -505,10 +505,10 @@ talign.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
diff --git a/tools/misc/Dependencies b/tools/misc/Dependencies
index ef04fef..a06d1fb 100644
--- a/tools/misc/Dependencies
+++ b/tools/misc/Dependencies
@@ -16,9 +16,11 @@ h5debug.lo: \
$(top_srcdir)/src/H5Fpublic.h \
$(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5FDpublic.h \
+ $(top_srcdir)/src/H5RCprivate.h \
$(top_srcdir)/src/H5Dprivate.h \
$(top_srcdir)/src/H5Dpublic.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
+ $(top_srcdir)/src/H5FDprivate.h \
+ $(top_srcdir)/src/H5FDmpi.h \
$(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5Oprivate.h \
@@ -52,8 +54,8 @@ h5repart.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -72,10 +74,10 @@ h5repart.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \
@@ -90,8 +92,8 @@ pdb2hdf.lo: \
$(top_srcdir)/src/H5public.h \
$(top_builddir)/src/H5pubconf.h \
$(top_srcdir)/src/H5api_adpt.h \
- $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5Apublic.h \
+ $(top_srcdir)/src/H5Ipublic.h \
$(top_srcdir)/src/H5ACpublic.h \
$(top_srcdir)/src/H5Bpublic.h \
$(top_srcdir)/src/H5Dpublic.h \
@@ -110,10 +112,10 @@ pdb2hdf.lo: \
$(top_srcdir)/src/H5Tpublic.h \
$(top_srcdir)/src/H5FDcore.h \
$(top_srcdir)/src/H5FDfamily.h \
- $(top_srcdir)/src/H5FDfphdf5.h \
- $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDgass.h \
$(top_srcdir)/src/H5FDlog.h \
+ $(top_srcdir)/src/H5FDmpi.h \
+ $(top_srcdir)/src/H5FDmpio.h \
$(top_srcdir)/src/H5FDmpiposix.h \
$(top_srcdir)/src/H5FDmulti.h \
$(top_srcdir)/src/H5FDsec2.h \