summaryrefslogtreecommitdiffstats
path: root/src/H5Dseq.c
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2001-08-10 20:47:05 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2001-08-10 20:47:05 (GMT)
commit95862451f78960cab031031011e5c6a131e0d026 (patch)
tree391101ca102fbecbfe9cee1f608b90bb87d49b1a /src/H5Dseq.c
parent4049965d1337bc54a21a4d3af71aa793e4baf029 (diff)
downloadhdf5-95862451f78960cab031031011e5c6a131e0d026.zip
hdf5-95862451f78960cab031031011e5c6a131e0d026.tar.gz
hdf5-95862451f78960cab031031011e5c6a131e0d026.tar.bz2
[svn-r4324] Purpose:
New Features! Description: Start migrating the internal use of property lists in the library from the older implementation to the new generic property lists. Currently, only the dataset transfer property lists are migrated to the new architecture, all the rest of the property list types are still using the older architecture. Also, the backward compatibility features are not implemented yet, so applications which use dataset transfer properties may need to make the following changes: H5Pcreate(H5P_DATASET_XFER) -> H5Pcreate_list(H5P_DATASET_XFER_NEW) and H5Pclose(<a dataset transfer property list>) -> H5Pclose_list(id) This still may have some bugs in it, especially with Fortran, but I should be wrapping up those later today. Platforms tested: FreeBSD 4.4 (hawkwind)
Diffstat (limited to 'src/H5Dseq.c')
-rw-r--r--src/H5Dseq.c60
1 files changed, 42 insertions, 18 deletions
diff --git a/src/H5Dseq.c b/src/H5Dseq.c
index 1c05dcf..f33005a 100644
--- a/src/H5Dseq.c
+++ b/src/H5Dseq.c
@@ -172,18 +172,30 @@ H5F_seq_readv(H5F_t *f, hid_t dxpl_id, const struct H5O_layout_t *layout,
assert(f);
assert(layout);
assert(real_buf);
+ /* Make certain we have the correct type of property list */
+ assert(H5I_GENPROP_LST==H5I_get_type(dxpl_id));
+ assert(TRUE==H5Pisa_class(dxpl_id,H5P_DATASET_XFER_NEW));
#ifdef H5_HAVE_PARALLEL
{
- /* Get the transfer mode */
- H5D_xfer_t *dxpl;
- H5FD_mpio_dxpl_t *dx;
-
- if (H5P_DEFAULT!=dxpl_id && (dxpl=H5I_object(dxpl_id)) &&
- H5FD_MPIO==dxpl->driver_id && (dx=dxpl->driver_info) &&
- H5FD_MPIO_INDEPENDENT!=dx->xfer_mode) {
- xfer_mode = dx->xfer_mode;
- }
+ /* Get the transfer mode */
+ H5FD_mpio_dxpl_t *dx;
+ hid_t driver_id; /* VFL driver ID */
+
+ /* Get the driver ID */
+ if(H5P_get(dxpl_id, H5D_XFER_VFL_ID_NAME, &driver_id)<0)
+ HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver ID");
+
+ /* Check if we are using the MPIO driver */
+ if(H5FD_MPIO==driver_id) {
+ /* Get the driver information */
+ if(H5P_get(dxpl_id, H5D_XFER_VFL_INFO_NAME, &dx)<0)
+ HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver info");
+
+ /* Check if we are not using independent I/O */
+ if(H5FD_MPIO_INDEPENDENT!=dx->xfer_mode)
+ xfer_mode = dx->xfer_mode;
+ } /* end if */
}
/* Collective MPIO access is unsupported for non-contiguous datasets */
@@ -534,18 +546,30 @@ H5F_seq_writev(H5F_t *f, hid_t dxpl_id, const struct H5O_layout_t *layout,
assert(f);
assert(layout);
assert(real_buf);
+ /* Make certain we have the correct type of property list */
+ assert(H5I_GENPROP_LST==H5I_get_type(dxpl_id));
+ assert(TRUE==H5Pisa_class(dxpl_id,H5P_DATASET_XFER_NEW));
#ifdef H5_HAVE_PARALLEL
{
- /* Get the transfer mode */
- H5D_xfer_t *dxpl;
- H5FD_mpio_dxpl_t *dx;
-
- if (H5P_DEFAULT!=dxpl_id && (dxpl=H5I_object(dxpl_id)) &&
- H5FD_MPIO==dxpl->driver_id && (dx=dxpl->driver_info) &&
- H5FD_MPIO_INDEPENDENT!=dx->xfer_mode) {
- xfer_mode = dx->xfer_mode;
- }
+ /* Get the transfer mode */
+ H5FD_mpio_dxpl_t *dx;
+ hid_t driver_id; /* VFL driver ID */
+
+ /* Get the driver ID */
+ if(H5P_get(dxpl_id, H5D_XFER_VFL_ID_NAME, &driver_id)<0)
+ HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver ID");
+
+ /* Check if we are using the MPIO driver */
+ if(H5FD_MPIO==driver_id) {
+ /* Get the driver information */
+ if(H5P_get(dxpl_id, H5D_XFER_VFL_INFO_NAME, &dx)<0)
+ HGOTO_ERROR (H5E_PLIST, H5E_CANTGET, FAIL, "Can't retrieve VFL driver info");
+
+ /* Check if we are not using independent I/O */
+ if(H5FD_MPIO_INDEPENDENT!=dx->xfer_mode)
+ xfer_mode = dx->xfer_mode;
+ } /* end if */
}
/* Collective MPIO access is unsupported for non-contiguous datasets */