diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2001-08-10 20:47:05 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2001-08-10 20:47:05 (GMT) |
commit | 95862451f78960cab031031011e5c6a131e0d026 (patch) | |
tree | 391101ca102fbecbfe9cee1f608b90bb87d49b1a /src/H5Smpio.c | |
parent | 4049965d1337bc54a21a4d3af71aa793e4baf029 (diff) | |
download | hdf5-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/H5Smpio.c')
-rw-r--r-- | src/H5Smpio.c | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/H5Smpio.c b/src/H5Smpio.c index 63a1347..16bbda7 100644 --- a/src/H5Smpio.c +++ b/src/H5Smpio.c @@ -575,6 +575,9 @@ H5S_mpio_spaces_xfer(H5F_t *f, const struct H5O_layout_t *layout, assert (mem_space); assert (buf); assert (IS_H5FD_MPIO(f)); + /* 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)); /* INCOMPLETE!!! rky 980816 */ /* Currently can only handle H5D_CONTIGUOUS layout */ @@ -601,18 +604,24 @@ H5S_mpio_spaces_xfer(H5F_t *f, const struct H5O_layout_t *layout, * the following block of code, though with the right idea, is not * correct yet. */ - { /* 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_COLLECTIVE==dx->xfer_mode) { - /* let it fall through */ - }else{ + { + /* 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"); + + /* 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 using the MPIO driver */ + if(H5FD_MPIO!=driver_id || H5FD_MPIO_COLLECTIVE!=dx->xfer_mode) { *must_convert = 1; /* can't do optimized xfer; do the old way */ HGOTO_DONE(SUCCEED); - } + } /* end if */ } #endif |