summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2000-10-10 19:55:09 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2000-10-10 19:55:09 (GMT)
commit46434499668593bb2421a58365700e53c128cb10 (patch)
tree4288cb29b1ab6b31aa2e0a9cf6c814d54373b044
parent4f5328967e20f41f26b6f88901fdc79e80496ceb (diff)
downloadhdf5-46434499668593bb2421a58365700e53c128cb10.zip
hdf5-46434499668593bb2421a58365700e53c128cb10.tar.gz
hdf5-46434499668593bb2421a58365700e53c128cb10.tar.bz2
[svn-r2656] Purpose:
Bug Fix Description: When parallel I/O is turned on, there were some macros used in the H5D routines which poked around in the H5F_t structure. This breaks the privacy of that structure and ties the H5D code too tightly to the H5F_t struct. Solution: Added a small function to retrieve the the value (driver_id) needed from the H5F_t function. Platforms tested: Eyeballed only, Albert needs this right away...
-rw-r--r--src/H5F.c27
-rw-r--r--src/H5FDmpio.h2
-rw-r--r--src/H5Fprivate.h1
3 files changed, 29 insertions, 1 deletions
diff --git a/src/H5F.c b/src/H5F.c
index db39416..06cd4e7 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -2507,6 +2507,33 @@ H5F_sizeof_size(H5F_t *f)
/*-------------------------------------------------------------------------
+ * Function: H5F_get_intent
+ *
+ * Purpose: Quick and dirty routine to retrieve the file's 'driver_id' value
+ * (Mainly added to stop non-file routines from poking about in the
+ * H5F_t data structure)
+ *
+ * Return: 'driver_id' on success/abort on failure (shouldn't fail)
+ *
+ * Programmer: Quincey Koziol <koziol@ncsa.uiuc.edu>
+ * October 10, 2000
+ *
+ * Modifications:
+ *
+ *-------------------------------------------------------------------------
+ */
+hid_t
+H5F_get_driver_id(H5F_t *f)
+{
+ FUNC_ENTER(H5F_get_driver_id, 0);
+
+ assert(f);
+
+ FUNC_LEAVE(f->shared->lf->driver_id);
+}
+
+
+/*-------------------------------------------------------------------------
* Function: H5F_block_read
*
* Purpose: Reads some data from a file/server/etc into a buffer.
diff --git a/src/H5FDmpio.h b/src/H5FDmpio.h
index e7df072..c0f8068 100644
--- a/src/H5FDmpio.h
+++ b/src/H5FDmpio.h
@@ -44,7 +44,7 @@ typedef struct H5FD_mpio_dxpl_t {
#endif
#define IS_H5FD_MPIO(f) /* (H5F_t *f) */ \
- (H5FD_MPIO==f->shared->lf->driver_id)
+ (H5FD_MPIO==H5F_get_driver_id(f))
/* Function prototypes */
__DLL__ hid_t H5FD_mpio_init(void);
diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h
index d643f9e..d007614 100644
--- a/src/H5Fprivate.h
+++ b/src/H5Fprivate.h
@@ -307,6 +307,7 @@ struct H5S_t;
/* Private functions, not part of the publicly documented API */
__DLL__ herr_t H5F_init(void);
__DLL__ uintn H5F_get_intent(H5F_t *f);
+__DLL__ hid_t H5F_get_driver_id(H5F_t *f);
/* Functions that operate on array storage */
__DLL__ herr_t H5F_arr_create(H5F_t *f,