diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2001-08-06 16:01:44 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2001-08-06 16:01:44 (GMT) |
commit | 41529d180ebc129f831d9bfea162e377d598fe92 (patch) | |
tree | 8df90e91eecd382f91c7b6e81aff192db208bc31 /src/H5P.c | |
parent | 2a39beb49bed12fa0385fbae4c2f118f5809e842 (diff) | |
download | hdf5-41529d180ebc129f831d9bfea162e377d598fe92.zip hdf5-41529d180ebc129f831d9bfea162e377d598fe92.tar.gz hdf5-41529d180ebc129f831d9bfea162e377d598fe92.tar.bz2 |
[svn-r4312] Purpose:
Feature shift
Description:
Take out the v1.2.x compatibility stubs and put in the hooks for v1.4.x
compatibility when needed.
Platforms tested:
FreeBSD 4.3 (hawkwind)
Diffstat (limited to 'src/H5P.c')
-rw-r--r-- | src/H5P.c | 805 |
1 files changed, 0 insertions, 805 deletions
@@ -27,20 +27,6 @@ /* Default file driver - see H5Pget_driver() */ #include "H5FDsec2.h" /* Posix unbuffered I/O file driver */ -#ifdef WANT_H5_V1_2_COMPAT -/* Other predefined file drivers */ -#include "H5FDcore.h" /* Files stored entirely in memory */ -#include "H5FDfamily.h" /* File families */ -#include "H5FDmpio.h" /* Parallel files using MPI-2 I/O */ -#include "H5FDstdio.h" /* Standard C buffered I/O */ -#include "H5FDsrb.h" /* Remote access using SRB */ -#include "H5FDgass.h" /* Remote files using GASS I/O */ -#include "H5FDdpss.h" /* Remote access using Storage Client API */ -#include "H5FDstream.h" /* in-memory files streamed via sockets */ -#include "H5FDmulti.h" /* Usage-partitioned file family */ -#include "H5FDlog.h" /* sec2 driver with I/O logging (for debugging) */ -#endif /* WANT_H5_V1_2_COMPAT */ - #define PABLO_MASK H5P_mask /* Is the interface initialized? */ @@ -1717,97 +1703,6 @@ H5Pset_driver(hid_t plist_id, hid_t driver_id, const void *driver_info) FUNC_LEAVE(SUCCEED); } -#ifdef WANT_H5_V1_2_COMPAT - -/*------------------------------------------------------------------------- - * Function: H5Pget_driver - * - * Purpose: Return the ID of the low-level file driver. PLIST_ID should - * be a file access property list. - * - * Return: Success: A low-level driver ID - * - * Failure: H5F_LOW_ERROR (a negative value) - * - * Programmer: Robb Matzke - * Thursday, February 26, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -H5F_driver_t -H5Pget_driver(hid_t plist_id) -{ - H5F_access_t *plist = NULL; - H5F_driver_t ret_value=H5F_LOW_ERROR; - - FUNC_ENTER (H5Pget_driver, H5F_LOW_ERROR); - H5TRACE1("Fd","i",plist_id); - - /* Check arguments */ - if (H5P_FILE_ACCESS != H5P_get_class (plist_id) || - NULL == (plist=H5I_object (plist_id))) { - HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, H5F_LOW_ERROR, - "not a file access property list"); - } - - if(plist->driver_id==H5FD_SEC2 || plist->driver_id==H5P_DEFAULT) - ret_value=H5F_LOW_SEC2; - else if(plist->driver_id==H5FD_STDIO) - ret_value=H5F_LOW_STDIO; - else if(plist->driver_id==H5FD_MPIO) - ret_value=H5F_LOW_MPIO; - else if(plist->driver_id==H5FD_CORE) - ret_value=H5F_LOW_CORE; - else if(plist->driver_id==H5FD_FAMILY) - ret_value=H5F_LOW_FAMILY; - else if(plist->driver_id==H5FD_MULTI) { /* Need to check if it's a split or multi file */ - H5FD_mem_t mt; - H5FD_mem_t memb_map[H5FD_MEM_NTYPES]; - haddr_t memb_addr[H5FD_MEM_NTYPES]; - uintn multi=0; - - /* Get the information from the multi file driver */ - if (H5Pget_fapl_multi(plist_id,memb_map,NULL,NULL,memb_addr,NULL)<0) { - HRETURN_ERROR (H5E_PLIST, H5E_NOTFOUND, H5F_LOW_ERROR, - "can't get multi file information"); - } - - /* Check whether all of the meta data is in one file & the raw data in another */ - for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt++) { - if(mt==H5FD_MEM_DRAW) { - if(memb_map[mt]!=H5FD_MEM_DRAW) { - multi=1; - break; - } /* end if */ - } /* end if */ - else { - if(memb_map[mt]!=H5FD_MEM_SUPER) { - multi=1; - break; - } /* end if */ - } /* end else */ - } /* end for */ - - /* Check further if things look like a split file currently */ - if(!multi) { - if(memb_addr[H5FD_MEM_SUPER]!=0 || memb_addr[H5FD_MEM_DRAW] != HADDR_MAX/2) - multi=1; - } /* end if */ - - if(multi) - ret_value=H5F_LOW_ERROR; /* v1.2 didn't have multi-file driver */ - else - ret_value=H5F_LOW_SPLIT; - } /* end if */ - else - ret_value=H5F_LOW_ERROR; /* error, or driver unknown to v1.2 */ - - FUNC_LEAVE (ret_value); -} - -#else /* WANT_H5_V1_2_COMPAT */ /*------------------------------------------------------------------------- * Function: H5Pget_driver @@ -1849,7 +1744,6 @@ H5Pget_driver(hid_t plist_id) FUNC_LEAVE(ret_value); } -#endif /* WANT_H5_V1_2_COMPAT */ /*------------------------------------------------------------------------- @@ -1955,705 +1849,6 @@ H5Pget_driver_info(hid_t plist_id) FUNC_LEAVE(ret_value); } -#ifdef WANT_H5_V1_2_COMPAT - -/*------------------------------------------------------------------------- - * Function: H5Pset_stdio - * - * Purpose: Set the low level file driver to use the functions declared - * in the stdio.h file: fopen(), fseek() or fseek64(), fread(), - * fwrite(), and fclose(). - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Thursday, February 19, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pset_stdio(hid_t plist_id) -{ - FUNC_ENTER (H5Pset_stdio, FAIL); - H5TRACE1("e","i",plist_id); - - /* Check arguments */ - if (H5P_FILE_ACCESS != H5P_get_class(plist_id) || - NULL == H5I_object(plist_id)) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - - FUNC_LEAVE(H5Pset_fapl_stdio(plist_id)); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pget_stdio - * - * Purpose: If the file access property list is set to the stdio driver - * then this function returns zero; otherwise it returns a - * negative value. In the future, additional arguments may be - * added to this function to match those added to H5Pset_stdio(). - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Thursday, February 26, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pget_stdio(hid_t plist_id) -{ - herr_t ret_value=FAIL; - - FUNC_ENTER (H5Pget_stdio, FAIL); - H5TRACE1("e","i",plist_id); - - /* Check arguments and test driver */ - if (H5P_FILE_ACCESS==H5P_get_class(plist_id) && - (H5FD_STDIO == H5P_get_driver(plist_id))) { - ret_value=SUCCEED; - } - else { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - - FUNC_LEAVE (ret_value); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pset_sec2 - * - * Purpose: Set the low-level file driver to use the functions declared - * in the unistd.h file: open(), lseek() or lseek64(), read(), - * write(), and close(). - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Thursday, February 19, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pset_sec2(hid_t plist_id) -{ - FUNC_ENTER (H5Pset_sec2, FAIL); - H5TRACE1("e","i",plist_id); - - /* Check arguments */ - if (H5P_FILE_ACCESS != H5P_get_class(plist_id) || - NULL == H5I_object(plist_id)) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - - FUNC_LEAVE(H5Pset_fapl_sec2(plist_id)); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pget_sec2 - * - * Purpose: If the file access property list is set to the sec2 driver - * then this function returns zero; otherwise it returns a - * negative value. In the future, additional arguments may be - * added to this function to match those added to H5Pset_sec2(). - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Thursday, February 26, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pget_sec2(hid_t plist_id) -{ - herr_t ret_value=FAIL; - - FUNC_ENTER (H5Pget_sec2, FAIL); - H5TRACE1("e","i",plist_id); - - /* Check arguments and test driver */ - if (H5P_FILE_ACCESS==H5P_get_class(plist_id) && - (H5FD_SEC2 == H5P_get_driver(plist_id))) { - ret_value=SUCCEED; - } - else { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - - FUNC_LEAVE (ret_value); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pset_core - * - * Purpose: Set the low-level file driver to use malloc() and free(). - * This driver is restricted to temporary files which are not - * larger than the amount of virtual memory available. The - * INCREMENT argument determines the file block size and memory - * will be allocated in multiples of INCREMENT bytes. A liberal - * INCREMENT results in fewer calls to realloc() and probably - * less memory fragmentation. - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Thursday, February 19, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pset_core(hid_t plist_id, size_t increment) -{ - FUNC_ENTER (H5Pset_core, FAIL); - H5TRACE2("e","iz",plist_id,increment); - - /* Check arguments */ - if (H5P_FILE_ACCESS != H5P_get_class(plist_id) || - NULL == H5I_object(plist_id)) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - if (increment<1) { - HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, - "increment must be positive"); - } - - FUNC_LEAVE(H5Pset_fapl_core(plist_id,increment,0)); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pget_core - * - * Purpose: If the file access property list is set to the core driver - * then this function returns zero; otherwise it returns a - * negative value. On success, the block size is returned - * through the INCREMENT argument if it isn't the null pointer. - * In the future, additional arguments may be added to this - * function to match those added to H5Pset_core(). - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Thursday, February 26, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pget_core(hid_t plist_id, size_t *increment/*out*/) -{ - herr_t ret_value=FAIL; - - FUNC_ENTER (H5Pget_core, FAIL); - H5TRACE2("e","ix",plist_id,increment); - - /* Check arguments */ - if (H5P_FILE_ACCESS==H5P_get_class(plist_id) && - (H5FD_CORE == H5P_get_driver(plist_id)) && - H5Pget_fapl_core(plist_id,increment,NULL)>=0) { - ret_value=SUCCEED; - } - else { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - - FUNC_LEAVE (ret_value); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pset_split - * - * Purpose: Set the low-level driver to split meta data from raw data, - * storing meta data in one file and raw data in another file. - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Thursday, February 19, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pset_split(hid_t plist_id, const char *meta_ext, hid_t meta_plist_id, - const char *raw_ext, hid_t raw_plist_id) -{ - FUNC_ENTER (H5Pset_split, FAIL); - H5TRACE5("e","isisi",plist_id,meta_ext,meta_plist_id,raw_ext,raw_plist_id); - - /* Check arguments */ - if (H5P_FILE_ACCESS != H5P_get_class(plist_id) || - NULL == H5I_object(plist_id)) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - if (H5P_DEFAULT!=meta_plist_id && - (H5P_FILE_ACCESS != H5P_get_class(meta_plist_id) || - NULL == H5I_object(meta_plist_id))) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - if (H5P_DEFAULT!=raw_plist_id && - (H5P_FILE_ACCESS != H5P_get_class(raw_plist_id) || - NULL == H5I_object(raw_plist_id))) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - - /* Set driver */ - FUNC_LEAVE (H5Pset_fapl_split(plist_id,meta_ext,meta_plist_id,raw_ext,raw_plist_id)); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pget_split - * - * Purpose: If the file access property list is set to the sec2 driver - * then this function returns zero; otherwise it returns a - * negative value. On success, at most META_EXT_SIZE characters - * are copied to the META_EXT buffer if non-null and at most - * RAW_EXT_SIZE characters are copied to the RAW_EXT buffer if - * non-null. If the actual extension is larger than the number - * of characters requested then the buffer will not be null - * terminated (that is, behavior like strncpy()). In addition, - * if META_PROPERTIES and/or RAW_PROPERTIES are non-null then - * the file access property list of the meta file and/or raw - * file is copied and its OID returned through these arguments. - * In the future, additional arguments may be added to this - * function to match those added to H5Pset_sec2(). - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Thursday, February 26, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pget_split(hid_t plist_id, size_t meta_ext_size, char *meta_ext/*out*/, - hid_t *meta_properties/*out*/, size_t raw_ext_size, - char *raw_ext/*out*/, hid_t *raw_properties/*out*/) -{ - H5FD_mem_t mt; - H5FD_mem_t _memb_map[H5FD_MEM_NTYPES]; - hid_t _memb_fapl[H5FD_MEM_NTYPES]; - char _memb_name[H5FD_MEM_NTYPES][16]; - char *_memb_name_ptrs[H5FD_MEM_NTYPES]; - haddr_t _memb_addr[H5FD_MEM_NTYPES]; - - FUNC_ENTER (H5Pget_split, FAIL); - H5TRACE7("e","izxxzxx",plist_id,meta_ext_size,meta_ext,meta_properties, - raw_ext_size,raw_ext,raw_properties); - - /* Check arguments */ - if (H5P_FILE_ACCESS != H5P_get_class (plist_id) || - NULL == H5I_object (plist_id)) { - HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - if (H5FD_MULTI != H5P_get_driver(plist_id)) { - HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, - "the split driver is not set"); - } - - /* Reset output args for error handling */ - if (meta_ext && meta_ext_size>0) - *meta_ext = '\0'; - if (raw_ext && raw_ext_size>0) - *raw_ext = '\0'; - if (meta_properties) - *meta_properties = FAIL; - if (raw_properties) - *raw_properties = FAIL; - - /* Set up the member extention pointers */ - for (mt=H5FD_MEM_DEFAULT; mt<H5FD_MEM_NTYPES; mt++) - _memb_name_ptrs[mt] = &_memb_name[mt][0]; - - /* Get the information from the multi file driver */ - if (H5Pget_fapl_multi(plist_id,_memb_map,_memb_fapl,_memb_name_ptrs,_memb_addr,NULL)<0) { - HRETURN_ERROR (H5E_PLIST, H5E_NOTFOUND, FAIL, - "can't get split file information"); - } - - /* Output arguments */ - if (meta_ext && meta_ext_size>0) { - if (_memb_name[H5FD_MEM_SUPER]) { - HDstrncpy (meta_ext, _memb_name[H5FD_MEM_SUPER], meta_ext_size); - } else { - HDstrncpy (meta_ext, ".meta", meta_ext_size); - } - } - if (raw_ext && raw_ext_size>0) { - if (_memb_name[H5FD_MEM_DRAW]) { - HDstrncpy (raw_ext, _memb_name[H5FD_MEM_DRAW], raw_ext_size); - } else { - HDstrncpy (raw_ext, ".raw", raw_ext_size); - } - } - if (meta_properties) { - *meta_properties = _memb_fapl[H5FD_MEM_SUPER]; - } - if (raw_properties) { - *raw_properties = _memb_fapl[H5FD_MEM_DRAW]; - } - - FUNC_LEAVE (SUCCEED); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pset_family - * - * Purpose: Sets the low-level driver to stripe the hdf5 address space - * across a family of files. The MEMB_SIZE argument indicates - * the size in bytes of each family member and is only - * meaningful when creating new files or opening families that - * have only one member. - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Thursday, February 19, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pset_family(hid_t plist_id, hsize_t memb_size, hid_t memb_plist_id) -{ - FUNC_ENTER (H5Pset_family, FAIL); - H5TRACE3("e","ihi",plist_id,memb_size,memb_plist_id); - - /* Check arguments */ - if (H5P_FILE_ACCESS != H5P_get_class(plist_id) || - NULL == H5I_object(plist_id)) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - if (memb_size && memb_size<1024) { - HRETURN_ERROR (H5E_ARGS, H5E_BADRANGE, FAIL, - "family member size is too small"); - } - if (H5P_DEFAULT!=memb_plist_id && - (H5P_FILE_ACCESS != H5P_get_class(memb_plist_id) || - NULL == H5I_object(memb_plist_id))) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - - /* Set driver */ - FUNC_LEAVE(H5Pset_fapl_family(plist_id,memb_size,memb_plist_id)); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pget_family - * - * Purpose: If the file access property list is set to the family driver - * then this function returns zero; otherwise it returns a - * negative value. On success, if MEMB_PLIST_ID is a non-null - * pointer it will be initialized with the id of an open - * property list: the file access property list for the family - * members. In the future, additional arguments may be added to - * this function to match those added to H5Pset_family(). - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Thursday, February 26, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pget_family(hid_t plist_id, hsize_t *memb_size/*out*/, - hid_t *memb_plist_id/*out*/) -{ - FUNC_ENTER (H5Pget_family, FAIL); - H5TRACE3("e","ixx",plist_id,memb_size,memb_plist_id); - - /* Check arguments */ - if (H5P_FILE_ACCESS != H5P_get_class (plist_id) || - NULL == H5I_object (plist_id)) { - HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - if (H5FD_FAMILY == H5P_get_driver(plist_id)) { - HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, - "the family driver is not set"); - } - - /* Retrieve args */ - FUNC_LEAVE (H5Pget_fapl_family(plist_id,memb_size,memb_plist_id)); -} - - -#ifdef HAVE_PARALLEL -/*------------------------------------------------------------------------- - * Function: H5Pset_mpi - * - * Signature: herr_t H5Pset_mpi(hid_t plist_id, MPI_Comm comm, MPI_Info info) - * - * Purpose: Store the access mode for MPIO call and the user supplied - * communicator and info in the access property list which can - * then be used to open file. This function is available only - * in the parallel HDF5 library and is not a collective - * function. - * - * Parameters: - * hid_t plist_id - * ID of property list to modify - * MPI_Comm comm - * 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 undetermined effect - * to the access property list. Users should call this - * function again to setup the property list. - * MPI_Info info - * 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 undetermined effect - * to the access property list. Users should call this - * function again to setup the property list. - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Albert Cheng - * Feb 3, 1998 - * - * Modifications: - * - * Robb Matzke, 18 Feb 1998 - * Check all arguments before the property list is updated so we don't - * leave the property list in a bad state if something goes wrong. Also, - * the property list data type changed to allow more generality so all - * the mpi-related stuff is in the `u.mpi' member. The `access_mode' - * will contain only mpi-related flags defined in H5Fpublic.h. - * - * Albert Cheng, Apr 16, 1998 - * Removed the access_mode argument. The access_mode is changed - * to be controlled by data transfer property list during data - * read/write calls. - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pset_mpi(hid_t plist_id, MPI_Comm comm, MPI_Info info) -{ - FUNC_ENTER(H5Pset_mpi, FAIL); - H5TRACE3("e","iMcMi",plist_id,comm,info); - - /* Check arguments */ - if (H5P_FILE_ACCESS != H5P_get_class(plist_id) || - NULL == H5I_object(plist_id)) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - - /* Set driver */ - FUNC_LEAVE(H5Pset_fapl_mpio(plist_id,comm,info)); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pget_mpi - * - * Purpose: If the file access property list is set to the mpi driver - * then this function returns zero; otherwise it returns a - * negative value. In the future, additional arguments may be - * added to this function to match those added to H5Pset_mpi(). - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Robb Matzke - * Thursday, February 26, 1998 - * - * Modifications: - * - * Albert Cheng, Apr 16, 1998 - * Removed the access_mode argument. The access_mode is changed - * to be controlled by data transfer property list during data - * read/write calls. - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pget_mpi(hid_t plist_id, MPI_Comm *comm, MPI_Info *info) -{ - FUNC_ENTER (H5Pget_mpi, FAIL); - H5TRACE3("e","i*Mc*Mi",plist_id,comm,info); - - /* Check arguments */ - if (H5P_FILE_ACCESS != H5P_get_class (plist_id) || - NULL == H5I_object (plist_id)) { - HRETURN_ERROR (H5E_ARGS, H5E_BADTYPE, FAIL, - "not a file access property list"); - } - if (H5FD_MPIO == H5P_get_driver(plist_id)) { - HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, - "the mpi driver is not set"); - } - - /* Retrieve args */ - FUNC_LEAVE (H5Pget_fapl_mpio(plist_id,comm,info)); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pset_xfer - * - * Signature: herr_t H5Pset_xfer(hid_t plist_id, - * H5D_transfer_t data_xfer_mode) - * - * Purpose: Set the transfer mode of the dataset transfer property list. - * The list can then be used to control the I/O transfer mode - * during dataset accesses. This function is available only - * in the parallel HDF5 library and is not a collective function. - * - * Parameters: - * hid_t plist_id - * ID of a dataset transfer property list - * H5D_transfer_t data_xfer_mode - * Data transfer modes: - * H5D_XFER_INDEPENDENT - * Use independent I/O access. - * H5D_XFER_COLLECTIVE - * Use MPI collective I/O access. - * H5D_XFER_DFLT - * Use default I/O access. Currently, - * independent is the default mode. - * - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Albert Cheng - * April 2, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pset_xfer(hid_t plist_id, H5D_transfer_t data_xfer_mode) -{ - H5FD_mpio_xfer_t dx_xfer_mode; - - FUNC_ENTER(H5Pset_xfer, FAIL); - H5TRACE2("e","iDt",plist_id,data_xfer_mode); - - /* Check arguments */ - if (H5P_DATASET_XFER != H5P_get_class(plist_id) || - NULL == H5I_object(plist_id)) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a dataset transfer property list"); - } - - switch (data_xfer_mode) { - case H5D_XFER_COLLECTIVE: - dx_xfer_mode = H5FD_MPIO_COLLECTIVE; - break; - - case H5D_XFER_INDEPENDENT: - case H5D_XFER_DFLT: - dx_xfer_mode = H5FD_MPIO_INDEPENDENT; - break; - - default: - HRETURN_ERROR (H5E_ARGS, H5E_BADVALUE, FAIL, - "invalid dataset transfer mode"); - } - - FUNC_LEAVE(H5Pset_dxpl_mpio(plist_id,dx_xfer_mode)); -} - - -/*------------------------------------------------------------------------- - * Function: H5Pget_xfer - * - * Purpose: Reads the transfer mode current set in the property list. - * This function is available only in the parallel HDF5 library - * and is not a collective function. - * - * Return: Non-negative on success/Negative on failure - * - * Programmer: Albert Cheng - * April 2, 1998 - * - * Modifications: - * - *------------------------------------------------------------------------- - */ -herr_t -H5Pget_xfer(hid_t plist_id, H5D_transfer_t *data_xfer_mode) -{ - H5FD_mpio_xfer_t dx_xfer_mode; - - FUNC_ENTER (H5Pget_xfer, FAIL); - H5TRACE2("e","i*Dt",plist_id,data_xfer_mode); - - /* Check arguments */ - if (H5P_DATASET_XFER != H5P_get_class(plist_id) || - NULL == H5I_object(plist_id)) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a dataset transfer property list"); - } - - if(data_xfer_mode) { - if(H5Pget_dxpl_mpio(plist_id,&dx_xfer_mode)<0) { - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "not a dataset transfer property list"); - } - switch(dx_xfer_mode) { - H5FD_MPIO_INDEPENDENT: - *data_xfer_mode = H5D_XFER_INDEPENDENT; - break; - - H5FD_MPIO_COLLECTIVE: - *data_xfer_mode = H5D_XFER_COLLECTIVE; - break; - default: - HRETURN_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, - "unknown transfer mode"); - } /* end switch */ - } /* end if */ - - FUNC_LEAVE (SUCCEED); -} -#endif /* HAVE_PARALLEL */ -#endif /* WANT_H5_V1_2_COMPAT */ - /*------------------------------------------------------------------------- * Function: H5Pset_cache |