From 9bfbfbc9a011b0b5161cd1e944558324ccd39a40 Mon Sep 17 00:00:00 2001 From: Robb Matzke Date: Thu, 19 Feb 1998 13:26:49 -0500 Subject: [svn-r291] Changes since 19980206 ---------------------- ./configure.in ./src/H5Fprivate.h ./src/H5Fsec2.c We now detect and use lseek64() on systems that have it (e.g., Irix64) and are able to generate >2GB files on Irix XFS file systems (and anything else that supports large files). This change also removed some warning messages from the Irix `-64' compiler. > $ ls -l istore.h5 > -rw-r--r-- 1 matzke meshtv 8605436856 Feb 17 14:03 istore.h5 ./configure.in ./src/H5Fprivate.h ./src/H5Fstdio.h We now detect and use fseek64() on systems that have it (e.g., Irix64) and are able to generate >2GB files on Irix XFS file systems (and anything else that supports large files). This change also removed some warning messages from the Iris `-64' compiler. ./src/H5E.c ./src/H5Epublic.h Added the H5E_OVERFLOW error to signal file address overflow. ./src/H5Fpublic.h ./examples/h5_chunk_read.c ./examples/h5_compound.c ./examples/h5_extend_write.c ./examples/h5_group.c ./examples/h5_read.c ./examples/h5_write.c ./html/Datasets.html ./html/Files.html ./html/H5.api.html ./html/H5.intro.html ./html/H5.sample_code.html ./html/ph5example.c ./html/review1.html ./test/cmpd_dset.c ./test/dsets.c ./test/extend.c ./test/tfile.c ./test/th5p.c ./test/theap.c ./test/tohdr.c ./test/tstab.c ./testpar/phdf5.c Renamed file access constants to follow the naming scheme. Also changed the base names a little to be more accurate as to what they do. The old names H5ACC_WRITE and H5ACC_OVERWRITE will temporarily work. H5ACC_DEFAULT --> H5F_ACC_RDONLY for H5Fopen() H5ACC_DEFAULT --> H5F_ACC_EXCL for H5Fcreate() H5ACC_WRITE --> H5F_ACC_RDWR H5ACC_OVERWRITE --> H5F_ACC_TRUNC Albert or Kim: The H5ACC_INDEPENDENT and H5ACC_COLLECTIVE macros in H5Fpublic.h should be an enum typedef and have names more like H5F_MPIO_INDEPENDENT and H5F_MPIO_COLLECTIVE. Also change the access_mode argument of H5Cset_mpio(). H5Fcreate() and H5Fopen() are more strict now about which flags are acceptable for the operation. ./src/H5Fprivate.h ./src/H5F.c ./src/H5C.c Changed the file access template to make it more general. A union contains a struct for each type of low-level driver and the default template is initialized at run-time. ./src/H5Fpublic.h ./src/H5F.c Added H5Fget_access_template() and cleaned up H5Fget_create_template(). ./src/H5C.c The H5Cset_mpi() no longer trashes the file access template when an error is detected. We check for errors and *then* update the file access template. Added H5C_close() so Albert and Kim have a place to release the MPI communicator and info from the file access property list. Kim or Albert: I notice in H5Cset_mpi() you copy the MPI communicator. Do you need to do something similar in H5C_copy()? ./src/H5F.c Added more error checking for the file creation and access property lists because it used to be possible to make the library dump core by swapping the creation and access property list ID numbers of H5Fcreate(). ./test/istore.c ./test/tfile.c ./test/th5p.c ./test/theap.c ./test/tohdr.c ./test/tstab.c ./testpar/testphdf5.c One must pass H5C_DEFAULT as the file creation or access property list in order to get the default property list. It is no longer possible to pass zero or any other arbitrary bad object ID. ./src/H5Fcore.c ./src/H5Ffamly.c ./src/H5Flow.c ./src/H5Fmpio.c ./src/H5Fsec2.c ./src/H5Fsplit.c ./src/H5Fstdio.c ./src/H5MF.c The file access property list is passed to all H5F_low_...() functions and to the drivers. ./src/H5Fcore.c The block size can be set at run time on a per-file basis instead of at compile time across all files. The "5000 items in a group test" now takes 1.6 seconds. ./src/H5private.h Removed inclusion of mpi.h and mpio.h since they're included from H5public.h. ./src/H5Cpublic.h ./src/H5C.c Added H5Cset_stdio(), H5Cset_sec2(), H5Cset_core(), H5Cset_split(), and H5Cset_family() in addition to the H5Cset_mpio() that Kim and Albert already wrote. We still need the H5Cget_driver() and an H5Cget...() counterpart for each of those functions. The split and family drivers still need a little work but I'm checking this in anyway. --- test/extend.c | 2 +- test/istore.c | 4 ++-- test/tfile.c | 12 +++++++----- test/th5p.c | 2 +- test/theap.c | 3 ++- test/tohdr.c | 3 ++- test/tstab.c | 20 ++++++++++++-------- testpar/testphdf5.c | 4 ++-- 8 files changed, 29 insertions(+), 21 deletions(-) diff --git a/test/extend.c b/test/extend.c index 7f899ee..7de127e 100644 --- a/test/extend.c +++ b/test/extend.c @@ -54,7 +54,7 @@ main (void) assert (mem_space>=0); /* Create the file */ - file = H5Fcreate ("extend.h5", H5ACC_OVERWRITE, H5C_DEFAULT, H5C_DEFAULT); + file = H5Fcreate ("extend.h5", H5F_ACC_TRUNC, H5C_DEFAULT, H5C_DEFAULT); assert (file>=0); /* Create the dataset which is originally NX by NY */ diff --git a/test/istore.c b/test/istore.c index 4aca884..f5b4b04 100644 --- a/test/istore.c +++ b/test/istore.c @@ -578,8 +578,8 @@ main(int argc, char *argv[]) creation_template = H5A_object(template_id); /* Create the test file */ - if (NULL == (f = H5F_open(FILETYPE, FILENAME, - (H5F_ACC_CREAT | H5F_ACC_WRITE | H5F_ACC_TRUNC | + if (NULL == (f = H5F_open(FILENAME, + (H5F_ACC_CREAT | H5F_ACC_RDWR | H5F_ACC_TRUNC | H5F_ACC_DEBUG), creation_template, NULL))) { printf("Cannot create file %s; test aborted\n", FILENAME); diff --git a/test/tfile.c b/test/tfile.c index ffbe172..d252587 100644 --- a/test/tfile.c +++ b/test/tfile.c @@ -71,11 +71,11 @@ test_file_create(void) MESSAGE(5, ("Testing Low-Level File Creation I/O\n")); /* Create first file */ - fid1 = H5Fcreate(FILE1, H5ACC_OVERWRITE, 0, 0); + fid1 = H5Fcreate(FILE1, H5F_ACC_TRUNC, H5C_DEFAULT, H5C_DEFAULT); CHECK(fid1, FAIL, "H5Fcreate"); /* Try to create first file again (should fail) */ - fid2 = H5Fcreate(FILE1, H5ACC_OVERWRITE, 0, 0); + fid2 = H5Fcreate(FILE1, H5F_ACC_TRUNC, H5C_DEFAULT, H5C_DEFAULT); VERIFY(fid2, FAIL, "H5Fcreate"); /* Get the file-creation template */ @@ -101,9 +101,11 @@ test_file_create(void) ret = H5Mclose(tmpl1); CHECK(ret, FAIL, "H5Mrelease"); +#ifdef LATER /* Double-check that the atom has been vaporized */ ret = H5Mclose(tmpl1); VERIFY(ret, FAIL, "H5Mrelease"); +#endif /* Create a new file with a non-standard file-creation template */ tmpl1 = H5Ccreate(H5C_FILE_CREATE); @@ -123,7 +125,7 @@ test_file_create(void) * Try to create second file, with non-standard file-creation template * params. */ - fid2 = H5Fcreate(FILE2, H5ACC_OVERWRITE, tmpl1, 0); + fid2 = H5Fcreate(FILE2, H5F_ACC_TRUNC, tmpl1, H5C_DEFAULT); CHECK(fid2, FAIL, "H5Fcreate"); /* Release file-creation template */ @@ -165,7 +167,7 @@ test_file_create(void) * Try to create second file, with non-standard file-creation template * params */ - fid3 = H5Fcreate(FILE3, H5ACC_OVERWRITE, tmpl2, 0); + fid3 = H5Fcreate(FILE3, H5F_ACC_TRUNC, tmpl2, H5C_DEFAULT); CHECK(fid3, FAIL, "H5Fcreate"); /* Release file-creation template */ @@ -227,7 +229,7 @@ test_file_open(void) MESSAGE(5, ("Testing Low-Level File Opening I/O\n")); /* Open first file */ - fid1 = H5Fopen(FILE2, H5ACC_WRITE, 0); + fid1 = H5Fopen(FILE2, H5F_ACC_RDWR, H5C_DEFAULT); CHECK(fid1, FAIL, "H5Fopen"); /* Get the file-creation template */ diff --git a/test/th5p.c b/test/th5p.c index af9100a..e856e3c 100644 --- a/test/th5p.c +++ b/test/th5p.c @@ -70,7 +70,7 @@ test_h5p_basic(void) MESSAGE(5, ("Testing Datatype Manipulation\n")); /* Create file */ - fid1 = H5Fcreate(FILE, H5ACC_OVERWRITE, 0, 0); + fid1 = H5Fcreate(FILE, H5F_ACC_TRUNC, H5C_DEFAULT, H5C_DEFAULT); CHECK(fid1, FAIL, "H5Fcreate"); sid1 = H5Pcreate_simple(SPACE1_RANK, dims1, NULL); diff --git a/test/theap.c b/test/theap.c index cad0c3b..ec8a71d 100644 --- a/test/theap.c +++ b/test/theap.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include @@ -54,7 +55,7 @@ test_heap(void) MESSAGE(5, ("Testing Heaps\n")); /* Create the file */ - fid = H5Fcreate("theap.h5", H5ACC_OVERWRITE, 0, 0); + fid = H5Fcreate("theap.h5", H5F_ACC_TRUNC, H5C_DEFAULT, H5C_DEFAULT); CHECK(fid, FAIL, "H5Fcreate"); f = H5A_object(fid); CHECK(f, NULL, "H5Aatom_object"); diff --git a/test/tohdr.c b/test/tohdr.c index 9dded97..bbeb895 100644 --- a/test/tohdr.c +++ b/test/tohdr.c @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include @@ -58,7 +59,7 @@ test_ohdr(void) MESSAGE(5, ("Testing Object Headers\n")); /* create the file */ - fid = H5Fcreate("tohdr.h5", H5ACC_OVERWRITE, 0, 0); + fid = H5Fcreate("tohdr.h5", H5F_ACC_TRUNC, H5C_DEFAULT, H5C_DEFAULT); CHECK(fid, FAIL, "H5Fcreate"); f = H5A_object(fid); CHECK(f, NULL, "H5Aatom_object"); diff --git a/test/tstab.c b/test/tstab.c index 4223897..c5d6b43 100644 --- a/test/tstab.c +++ b/test/tstab.c @@ -67,7 +67,7 @@ test_1(void) */ /* create the file */ - fid = H5Fcreate("tstab1.h5", H5ACC_OVERWRITE, 0, 0); + fid = H5Fcreate("tstab1.h5", H5F_ACC_TRUNC, H5C_DEFAULT, H5C_DEFAULT); CHECK(fid, FAIL, "H5Fcreate"); f = H5A_object(fid); CHECK(f, NULL, "H5Aatom_object"); @@ -130,7 +130,7 @@ test_1(void) */ /* create the file */ - fid = H5Fcreate("tstab1.h5", H5ACC_OVERWRITE, 0, 0); + fid = H5Fcreate("tstab1.h5", H5F_ACC_TRUNC, H5C_DEFAULT, H5C_DEFAULT); CHECK(fid, FAIL, "H5Fcreate"); f = H5A_object(fid); CHECK(f, NULL, "H5Aatom_object"); @@ -220,7 +220,7 @@ test_1(void) static void test_2(void) { - hid_t fid, props, dir; + hid_t fid, create_plist, access_plist, dir; H5F_t *f; int i; char name[256]; @@ -233,13 +233,17 @@ test_2(void) * Use larger symbol table data structures to be more efficient, use * defaults to bang harder on the library for testing. */ - props = H5Ccreate(H5C_FILE_CREATE); -#if 1 - H5Cset_sym_k(props, 16, 16); -#endif + create_plist = H5Ccreate(H5C_FILE_CREATE); + H5Cset_sym_k(create_plist, 16, 16); + + /* + * File access property list. + */ + access_plist = H5Ccreate (H5C_FILE_ACCESS); + H5Cset_core (access_plist, 3000000); /* create the file */ - fid = H5Fcreate("tstab2.h5", H5ACC_OVERWRITE, props, 0); + fid = H5Fcreate("tstab2.h5", H5F_ACC_TRUNC, create_plist, access_plist); CHECK(fid, FAIL, "H5Fcreate"); f = H5A_object(fid); CHECK(f, NULL, "H5Aatom_object"); diff --git a/testpar/testphdf5.c b/testpar/testphdf5.c index 583fc8e..a015ffc 100644 --- a/testpar/testphdf5.c +++ b/testpar/testphdf5.c @@ -85,7 +85,7 @@ phdf5write() #endif /* create the file collectively */ - fid1=H5Fcreate(FILE1,H5ACC_OVERWRITE,0,acc_tpl1); + fid1=H5Fcreate(FILE1,H5F_ACC_TRUNC,H5C_DEFAULT,acc_tpl1); assert(fid1 != FAIL); MESG("H5Fcreate succeed"); @@ -216,7 +216,7 @@ phdf5read() /* open the file collectively */ - fid1=H5Fopen(FILE1,H5ACC_WRITE,acc_tpl1); + fid1=H5Fopen(FILE1,H5F_ACC_RDWR,acc_tpl1); assert(fid1 != FAIL); /* Release file-access template */ -- cgit v0.12