From 8a594dbff5f64e659f791bfdcd60c2ec7957a258 Mon Sep 17 00:00:00 2001 From: Quincey Koziol Date: Mon, 2 Aug 2004 09:10:07 -0500 Subject: [svn-r8985] Purpose: Bug fixes & code cleanups Description: Backport MPI-I/O changes from the development branch to the release branch in preparation for bringing Kent's collective chunk I/O changes back. Removed last vestiges of FPHDF5 from this branch, as it was never working here. Various code cleanups & syncrontizations to better align with development branch code and reduce diffs. Regenerate dependencies. Platforms tested: FreeBSD 4.10 (sleipnir) w/parallel IRIX64 6.5 (modi4) h5committested --- MANIFEST | 7 - fortran/src/Dependencies | 90 +-- pablo/Makefile.in | 10 +- perform/Dependencies | 48 +- src/Dependencies | 576 +++++++------- src/H5.c | 205 ++--- src/H5AC.c | 80 +- src/H5D.c | 18 +- src/H5Dcontig.c | 5 - src/H5Distore.c | 9 +- src/H5Dprivate.h | 4 +- src/H5F.c | 183 +---- src/H5FD.c | 133 +++- src/H5FDcore.c | 190 +++-- src/H5FDcore.h | 1 + src/H5FDfamily.c | 338 ++++---- src/H5FDfamily.h | 1 + src/H5FDfphdf5.c | 1788 ------------------------------------------- src/H5FDfphdf5.h | 127 --- src/H5FDgass.c | 178 +++-- src/H5FDgass.h | 1 + src/H5FDlog.c | 240 +++--- src/H5FDlog.h | 1 + src/H5FDmpi.c | 4 + src/H5FDmpi.h | 3 +- src/H5FDmpio.c | 835 ++++++-------------- src/H5FDmpio.h | 18 +- src/H5FDmpiposix.c | 490 ++++++------ src/H5FDmpiposix.h | 8 +- src/H5FDmulti.c | 23 + src/H5FDmulti.h | 3 +- src/H5FDprivate.h | 11 +- src/H5FDsec2.c | 227 ++++-- src/H5FDsec2.h | 1 + src/H5FDsrb.c | 178 +++-- src/H5FDsrb.h | 1 + src/H5FDstdio.c | 123 ++- src/H5FDstdio.h | 1 + src/H5FDstream.c | 216 ++++-- src/H5FDstream.h | 3 +- src/H5FP.c | 457 ----------- src/H5FPclient.c | 828 -------------------- src/H5FPprivate.h | 306 -------- src/H5FPpublic.h | 35 - src/H5FPserver.c | 1599 -------------------------------------- src/H5Fprivate.h | 2 +- src/H5Smpio.c | 20 +- src/H5private.h | 2 +- src/Makefile.in | 33 +- src/hdf5.h | 6 +- test/Dependencies | 418 ++++++---- test/Makefile.in | 6 +- test/th5s.c | 1 + testpar/Dependencies | 36 +- tools/gifconv/Dependencies | 48 +- tools/h5diff/Dependencies | 36 +- tools/h5dump/Dependencies | 12 +- tools/h5ls/Dependencies | 6 +- tools/h5repack/Dependencies | 172 ++--- tools/lib/Dependencies | 78 +- tools/misc/Dependencies | 16 +- 61 files changed, 2713 insertions(+), 7782 deletions(-) delete mode 100644 src/H5FDfphdf5.c delete mode 100644 src/H5FDfphdf5.h delete mode 100644 src/H5FP.c delete mode 100644 src/H5FPclient.c delete mode 100644 src/H5FPprivate.h delete mode 100644 src/H5FPpublic.h delete mode 100644 src/H5FPserver.c 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 #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+50 && at+50) { + 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=0 && asize[asize_idx]>=0) { + if (asize_idx>=0 && asize[asize_idx]>=0) { ssize_t *p = (ssize_t*)vp; fprintf(out, " {"); for (i=0; islot + 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; typefl_map[type]fl_map[type]>=H5FD_MEM_NTYPES) + for (type=H5FD_MEM_DEFAULT; typefl_map[type]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; typefl_map[type]>=H5FD_MEM_NOLIST && cls->fl_map[type]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: + * + * 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 (f1f2) - 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: + * + * 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; unmembs; 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; inmembs; 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; inmembs; i++) { - if (file->memb[i]) { - if (H5FDclose(file->memb[i])<0) { + for (u=0; unmembs; 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 || inmembs; i++) { + for (u=0; addr || unmembs; 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(inmembs); + assert(unmembs); - 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(inmembs); + assert(unmembs); - 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; inmembs; i++) - if (file->memb[i] && H5FDflush(file->memb[i], dxpl_id, closing)<0) + for (u=0; unmembs; 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 EOFeoa > 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: + * + * 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: + * + * 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: + * + * 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: + * + * 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: + * + * 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) + * + * 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: + * + * 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 #include +/* 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 #include + +/* 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) + * + * 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 /* 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: + * + * 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 \ -- cgit v0.12