/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * Copyright by The HDF Group. * * 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 COPYING file, which can be found at the root of the source code * * distribution tree, or in https://www.hdfgroup.org/licenses. * * If you do not have access to either file, you may request a copy from * * help@hdfgroup.org. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* * Purpose: The public header file for the multi virtual file driver (VFD) */ #ifndef H5FDmulti_H #define H5FDmulti_H /** Initializer for the multi VFD */ #define H5FD_MULTI (H5FDperform_init(H5FD_multi_init)) #ifdef __cplusplus extern "C" { #endif /** @private * * \brief Private initializer for the multi VFD */ H5_DLL hid_t H5FD_multi_init(void); /** * \ingroup FAPL * * \brief Sets up use of the multi-file driver * * \fapl_id * \param[in] memb_map Maps memory usage types to other memory usage types * \param[in] memb_fapl Property list for each memory usage type * \param[in] memb_name Name generator for names of member files * \param[in] memb_addr The offsets within the virtual address space, from 0 * (zero) to #HADDR_MAX, at which each type of data storage begins * \param[in] relax Allows read-only access to incomplete file sets when \c true * \returns \herr_t * * \details H5Pset_fapl_multi() sets the file access property list \p fapl_id to * use the multi-file driver. * * The multi-file driver enables different types of HDF5 data and * metadata to be written to separate files. These files are viewed by * the HDF5 library and the application as a single virtual HDF5 file * with a single HDF5 file address space. The types of data that can be * broken out into separate files include raw data, the superblock, * B-tree data, global heap data, local heap data, and object * headers. At the programmer's discretion, two or more types of data * can be written to the same file while other types of data are * written to separate files. * * The array \p memb_map maps memory usage types to other memory usage * types and is the mechanism that allows the caller to specify how * many files are created. The array contains #H5FD_MEM_NTYPES entries, * which are either the value #H5FD_MEM_DEFAULT or a memory usage * type. The number of unique values determines the number of files * that are opened. * * The array \p memb_fapl contains a property list for each memory * usage type that will be associated with a file. * * The array \p memb_name should be a name generator (a * \Code{printf}-style format with a \Code{%s} which will be replaced * with the name passed to H5FDopen(), usually from H5Fcreate() or * H5Fopen()). * * The array \p memb_addr specifies the offsets within the virtual * address space, from 0 (zero) to #HADDR_MAX, at which each type of * data storage begins. * * If \p relax is set to 1 (true), then opening an existing file for * read-only access will not fail if some file members are * missing. This allows a file to be accessed in a limited sense if * just the meta data is available. * * Default values for each of the optional arguments are as follows: *
\p memb_map | *The default member map contains the value #H5FD_MEM_DEFAULT for each element. | *
* \p memb_fapl * | ** The default value is #H5P_DEFAULT for each element. * | *
* \p memb_name * | ** The default string is \Code{%s-X.h5} where \c X is one of the following letters: * - \c s for #H5FD_MEM_SUPER * - \c b for #H5FD_MEM_BTREE * - \c r for #H5FD_MEM_DRAW * - \c g for #H5FD_MEM_GHEAP * - \c l for #H5FD_MEM_LHEAP * - \c o for #H5FD_MEM_OHDR * | *
* \p memb_addr * | ** The default setting is that the address space is equally divided * among all of the elements: * - #H5FD_MEM_SUPER \Code{-> 0 * (HADDR_MAX/6)} * - #H5FD_MEM_BTREE \Code{-> 1 * (HADDR_MAX/6)} * - #H5FD_MEM_DRAW \Code{-> 2 * (HADDR_MAX/6)} * - #H5FD_MEM_GHEAP \Code{-> 3 * (HADDR_MAX/6)} * - #H5FD_MEM_LHEAP \Code{-> 4 * (HADDR_MAX/6)} * - #H5FD_MEM_OHDR \Code{-> 5 * (HADDR_MAX/6)} * | *