diff options
author | Robb Matzke <matzke@llnl.gov> | 1999-08-17 19:12:59 (GMT) |
---|---|---|
committer | Robb Matzke <matzke@llnl.gov> | 1999-08-17 19:12:59 (GMT) |
commit | cc89b8a605dfc7370cb760e6c3d7339cbf1e9884 (patch) | |
tree | 82e0552ea6a80a2e362fdc77960a3483648aae75 /src/H5FD.c | |
parent | 5ef0237e2fe5ac6aee0d97fdc6bcf22f72d47162 (diff) | |
download | hdf5-cc89b8a605dfc7370cb760e6c3d7339cbf1e9884.zip hdf5-cc89b8a605dfc7370cb760e6c3d7339cbf1e9884.tar.gz hdf5-cc89b8a605dfc7370cb760e6c3d7339cbf1e9884.tar.bz2 |
[svn-r1572] Changes since 19990810
----------------------
./MANIFEST
./src/H5FDmulti.c [NEW]
./src/H5FDmulti.h [NEW]
./src/Makefile.in
./src/hdf5.h
The split driver was reimplemented as a more general "multi"
driver which is capable of splitting data into multiple files
like the family driver except the partioning is done by memory
usage type instead of address. The H5Pset_fapl_split()
function just calls H5Pset_fapl_multi() with arguments which
prepare to split the address space into two files: meta and
raw data.
This is the first version. I plan to allow the open() call to
relax a bit which would allow one to open an hdf5 file when
only the meta-data file is present. This would allow a very
large file to be split and stored on tape and the relatively
small meta file to be mirrored on disk to allow limited
browsing of the file (any request for raw data would fail).
./src/H5private.h
./src/H5F.c
./src/H5FD.c
./src/H5FDprivate.h
./src/H5FDpublic.h
./src/H5FDcore.c
./src/H5FDfamily.c
./src/H5FDmpio.c
./src/H5FDsec2.c
Added the ability for a file driver to store information in
the superblock which would be needed if the file were opened
again later for reading. The format is driver-defined which
allows users to extend it however they like.
./doc/html/H5.format.html
Added information about the new driver information block of
the superblock. This is where file drivers store information
they need in order to reopen the file later.
./src/H5F.c
./src/H5Fprivate.h
./src/H5FD.c
./src/H5FDprivate.h
./src/H5FDpublic.h
./src/H5FDcore.c
./src/H5FDfamily.c
./src/H5FDmpio.c
./src/H5FDsec2.c
./src/H5Fistore.c
./src/H5R.c
The file access properties and the file access property list
were decoupled, which allows the property list to more cleanly
contain properties for various levels of the file and which
allows the property list to be modified more cleanly when
opening files.
./src/H5.c
./src/H5FDpublic.h
Removed H5FD_MEM_META and H5FD_MEM_GROUP since they're never
used.
./src/H5D.c
Changed the way we detect the MPIO driver in all these special
cases.
./src/H5F.c
./src/H5Rpublic.h
./test/tfile.c
The default file sizeof(offset) was changed to be a function
of haddr_t instead of hsize_t.
THE H5RPUBLIC.H DEFINITIONS WILL HAVE PROBLEMS IF THE USER
CREATES A FILE WITH NON-DEFAULT OFFSET AND SIZE SIZES!
./src/H5F.c
Fixed an uninitialized memory access bug in file closing
related to the VFL.
./src/H5T.c
./src/H5Tpublic.h
Added an H5T_NATIVE_HADDR predefined datatype which
corresponds to the `haddr_t' type.
./test/Makefile.in
Reformatted long lines.
./test/big.c
./test/cmpd_dset.c
./test/dsets.c
./test/dtypes.c
./test/extend.c
./test/external.c
Removed the H5F_ACC_DEBUG flag from file creation/open calls.
./test/big.c
Plugged a memory leak.
./test/h5test.c
Added support for the `multi' driver.
Removed #warning about not having the stdio driver. Plans are
to not implement it since the sec2 driver serves the same
purpose and testing didn't show any difference in execution
times between the two.
Diffstat (limited to 'src/H5FD.c')
-rw-r--r-- | src/H5FD.c | 145 |
1 files changed, 145 insertions, 0 deletions
@@ -247,6 +247,151 @@ H5FDunregister(hid_t driver_id) /*------------------------------------------------------------------------- + * Function: H5FD_sb_size + * + * Purpose: Obtains the number of bytes required to store the driver file + * access data in the HDF5 superblock. + * + * Return: Success: Number of bytes required. + * + * Failure: 0 if an error occurs or if the driver has no + * data to store in the superblock. + * + * Programmer: Robb Matzke + * Monday, August 16, 1999 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +hsize_t +H5FD_sb_size(H5FD_t *file) +{ + hsize_t ret_value=0; + + FUNC_ENTER(H5FD_sb_size, 0); + + assert(file && file->cls); + if (file->cls->sb_size) { + ret_value = (file->cls->sb_size)(file); + } + + FUNC_LEAVE(ret_value); +} + + +/*------------------------------------------------------------------------- + * Function: H5FD_sb_encode + * + * Purpose: Encode driver-specific data into the output arguments. The + * NAME is a nine-byte buffer which should get an + * eight-character driver name and/or version followed by a null + * terminator. The BUF argument is a buffer to receive the + * encoded driver-specific data. The size of the BUF array is + * the size returned by the H5FD_sb_size() call. + * + * Return: Success: Non-negative + * + * Failure: Negative + * + * Programmer: Robb Matzke + * Monday, August 16, 1999 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +herr_t +H5FD_sb_encode(H5FD_t *file, char *name/*out*/, uint8_t *buf) +{ + FUNC_ENTER(H5FD_sb_encode, FAIL); + + assert(file && file->cls); + if (file->cls->sb_encode && + (file->cls->sb_encode)(file, name/*out*/, buf/*out*/)<0) { + HRETURN_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, + "driver sb_encode request failed"); + } + + FUNC_LEAVE(SUCCEED); +} + + +/*------------------------------------------------------------------------- + * Function: H5FD_sb_decode + * + * Purpose: Decodes the driver information block. + * + * Return: Success: Non-negative + * + * Failure: Negative + * + * Programmer: Robb Matzke + * Monday, August 16, 1999 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +herr_t +H5FD_sb_decode(H5FD_t *file, const char *name, const uint8_t *buf) +{ + FUNC_ENTER(H5FD_sb_decode, FAIL); + + assert(file && file->cls); + if (file->cls->sb_decode && + (file->cls->sb_decode)(file, name, buf)<0) { + HRETURN_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, + "driver sb_decode request failed"); + } + + FUNC_LEAVE(SUCCEED); +} + + +/*------------------------------------------------------------------------- + * Function: H5FD_fapl_get + * + * Purpose: Gets the file access property list associated with a file. + * Usually the file will copy what it needs from the original + * file access property list when the file is created. The + * purpose of this function is to create a new file access + * property list based on the settings in the file, which may + * have been modified from the original file access property + * list. + * + * Return: Success: Pointer to a new file access property list + * with all members copied. If the file is + * closed then this property list lives on, and + * vice versa. + * + * Failure: NULL, including when the file has no + * properties. + * + * Programmer: Robb Matzke + * Friday, August 13, 1999 + * + * Modifications: + * + *------------------------------------------------------------------------- + */ +void * +H5FD_fapl_get(H5FD_t *file) +{ + void *ret_value=NULL; + + FUNC_ENTER(H5FD_fapl_get, NULL); + assert(file); + + if (file->cls->fapl_get) { + ret_value = (file->cls->fapl_get)(file); + } + + FUNC_LEAVE(ret_value); +} + + +/*------------------------------------------------------------------------- * Function: H5FD_fapl_copy * * Purpose: Copies the driver-specific part of the file access property |