summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMohamad Chaarawi <chaarawi@hdfgroup.org>2012-06-15 13:39:46 (GMT)
committerMohamad Chaarawi <chaarawi@hdfgroup.org>2012-06-15 13:39:46 (GMT)
commit7484f2e9cae4c7e4471aa691c58a3b8a0e1cddff (patch)
tree514b2bd227109c8df3709dfb1672cd376edd0073
parent87a81eb5afd4d24b2ba42ef78d8aee433c8e8639 (diff)
downloadhdf5-7484f2e9cae4c7e4471aa691c58a3b8a0e1cddff.zip
hdf5-7484f2e9cae4c7e4471aa691c58a3b8a0e1cddff.tar.gz
hdf5-7484f2e9cae4c7e4471aa691c58a3b8a0e1cddff.tar.bz2
[svn-r22465] add a vol_info parameter to the fapl and update some of the routines accordingly
insert (commented out though for now) public version of the VOL callback
-rw-r--r--src/H5F.c9
-rw-r--r--src/H5Fprivate.h3
-rw-r--r--src/H5Pfapl.c52
-rw-r--r--src/H5Pprivate.h2
-rw-r--r--src/H5Ppublic.h2
-rw-r--r--src/H5VLdummy.c2
-rw-r--r--src/H5VLint.c7
-rw-r--r--src/H5VLnative.c2
-rw-r--r--src/H5VLprivate.h4
-rw-r--r--src/H5VLpublic.h68
10 files changed, 125 insertions, 26 deletions
diff --git a/src/H5F.c b/src/H5F.c
index 9c3ff8f..add0480 100644
--- a/src/H5F.c
+++ b/src/H5F.c
@@ -337,10 +337,6 @@ H5F_get_access_plist(H5F_t *f, hbool_t app_ref)
if(H5P_set(new_plist, H5F_ACS_FILE_DRV_ID_NAME, &(f->shared->lf->driver_id)) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set file driver ID")
- /* Increment the reference count on the VOL struct and insert it into the property list */
- if(H5P_set(new_plist, H5F_ACS_VOL_NAME, &(f->vol_cls)) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set file VOL plugin")
-
/* Set the driver "info" in the property list */
driver_info = H5FD_fapl_get(f->shared->lf);
if(driver_info != NULL && H5P_set(new_plist, H5F_ACS_FILE_DRV_INFO_NAME, &driver_info) < 0)
@@ -353,6 +349,11 @@ H5F_get_access_plist(H5F_t *f, hbool_t app_ref)
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set file close degree")
}
+ /* MSC TODO move this to the upper VOL get routine & set the vol info too*/
+ /* Set the VOL class in the property list */
+ if(H5P_set(new_plist, H5F_ACS_VOL_NAME, &(f->vol_cls)) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set file VOL plugin")
+
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5F_get_access_plist() */
diff --git a/src/H5Fprivate.h b/src/H5Fprivate.h
index 26ef19e..f65a791 100644
--- a/src/H5Fprivate.h
+++ b/src/H5Fprivate.h
@@ -406,8 +406,9 @@ typedef struct H5F_blk_aggr_t H5F_blk_aggr_t;
#define H5F_ACS_SDATA_BLOCK_SIZE_NAME "sdata_block_size" /* Minimum "small data" allocation block size (when aggregating "small" raw data allocations) */
#define H5F_ACS_GARBG_COLCT_REF_NAME "gc_ref" /* Garbage-collect references */
#define H5F_ACS_FILE_DRV_ID_NAME "driver_id" /* File driver ID */
-#define H5F_ACS_VOL_NAME "vol_cls" /* File VOL plugin */
#define H5F_ACS_FILE_DRV_INFO_NAME "driver_info" /* File driver info */
+#define H5F_ACS_VOL_NAME "vol_cls" /* File VOL plugin */
+#define H5F_ACS_VOL_INFO_NAME "vol_info" /* FILE VOL info */
#define H5F_ACS_CLOSE_DEGREE_NAME "close_degree" /* File close degree */
#define H5F_ACS_FAMILY_OFFSET_NAME "family_offset" /* Offset position in file for family file driver */
#define H5F_ACS_FAMILY_NEWSIZE_NAME "family_newsize" /* New member size of family driver. (private property only used by h5repart) */
diff --git a/src/H5Pfapl.c b/src/H5Pfapl.c
index 37f6869..b572350 100644
--- a/src/H5Pfapl.c
+++ b/src/H5Pfapl.c
@@ -131,6 +131,10 @@
#define H5F_ACS_VOL_SIZE sizeof(void *)
#define H5F_ACS_VOL_DEF H5VL_NATIVE
+/* Definition for vol info */
+#define H5F_ACS_VOL_INFO_SIZE sizeof(void*)
+#define H5F_ACS_VOL_INFO_DEF NULL
+
/* Definition of pointer to initial file image info */
#define H5F_ACS_FILE_IMAGE_INFO_SIZE sizeof(H5FD_file_image_info_t)
#define H5F_ACS_FILE_IMAGE_INFO_DEF H5FD_DEFAULT_FILE_IMAGE_INFO
@@ -234,6 +238,7 @@ H5P_facc_reg_prop(H5P_genclass_t *pclass)
hbool_t want_posix_fd = H5F_ACS_WANT_POSIX_FD_DEF; /* Default setting for retrieving 'handle' from core VFD */
unsigned efc_size = H5F_ACS_EFC_SIZE_DEF; /* Default external file cache size */
H5VL_class_t *vol_cls = H5F_ACS_VOL_DEF; /* Default VOL plugin */
+ void *vol_info = H5F_ACS_VOL_INFO_DEF; /* Default VOL plugin */
H5FD_file_image_info_t file_image_info = H5F_ACS_FILE_IMAGE_INFO_DEF; /* Default file image info and callbacks */
herr_t ret_value = SUCCEED; /* Return value */
@@ -324,6 +329,10 @@ H5P_facc_reg_prop(H5P_genclass_t *pclass)
if(H5P_register_real(pclass, H5F_ACS_VOL_NAME, H5F_ACS_VOL_SIZE, &vol_cls, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+ /* Register the file VOL INFO */
+ if(H5P_register_real(pclass, H5F_ACS_VOL_INFO_NAME, H5F_ACS_VOL_INFO_SIZE, &vol_info, NULL, NULL, NULL, NULL, NULL, NULL, NULL) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
+
/* Register the initial file image info */
if(H5P_register_real(pclass, H5F_ACS_FILE_IMAGE_INFO_NAME, H5F_ACS_FILE_IMAGE_INFO_SIZE, &file_image_info, NULL, NULL, NULL, H5F_ACS_FILE_IMAGE_INFO_DEL, H5F_ACS_FILE_IMAGE_INFO_COPY, NULL, H5F_ACS_FILE_IMAGE_INFO_CLOSE) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTINSERT, FAIL, "can't insert property into class")
@@ -368,9 +377,16 @@ H5P_facc_create(hid_t fapl_id, void UNUSED *copy_data)
if(H5P_get(plist, H5F_ACS_VOL_NAME, &vol_cls) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get vol plugin")
- /* Set the vol for the property list */
- if(H5VL_fapl_open(plist, vol_cls) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set vol")
+ if(NULL != vol_cls) {
+ void *vol_info;
+
+ /* Retrieve VOL plugin info property */
+ if(H5P_get(plist, H5F_ACS_VOL_INFO_NAME, &vol_info) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get vol info")
+ /* Set the vol for the property list */
+ if(H5VL_fapl_open(plist, vol_cls, vol_info) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set vol")
+ }
/* Retrieve driver ID property */
if(H5P_get(plist, H5F_ACS_FILE_DRV_ID_NAME, &driver_id) < 0)
@@ -430,8 +446,14 @@ H5P_facc_copy(hid_t dst_fapl_id, hid_t src_fapl_id, void UNUSED *copy_data)
if(H5P_get(src_plist, H5F_ACS_VOL_NAME, &vol_cls) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get vol ID")
if(NULL != vol_cls) {
+ void *vol_info;
+
+ /* Retrieve VOL plugin property */
+ if(H5P_get(dst_plist, H5F_ACS_VOL_INFO_NAME, &vol_info) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get vol info")
+
/* Set the vp; for the destination property list */
- if(H5VL_fapl_open(dst_plist, vol_cls) < 0)
+ if(H5VL_fapl_open(dst_plist, vol_cls, vol_info) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set vol")
} /* end if */
@@ -488,8 +510,12 @@ H5P_facc_close(hid_t fapl_id, void UNUSED *close_data)
if(H5P_get(plist, H5F_ACS_VOL_NAME, &vol_cls) < 0)
HGOTO_DONE(FAIL) /* Can't return errors when library is shutting down */
if(NULL != vol_cls) {
+ void *vol_info;
+ /* Retrieve VOL plugin info property */
+ if(H5P_get(plist, H5F_ACS_VOL_INFO_NAME, &vol_info) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get vol info")
/* Close the driver for the property list */
- if(H5VL_fapl_close(vol_cls) < 0)
+ if(H5VL_fapl_close(vol_cls, vol_info) < 0)
HGOTO_DONE(FAIL) /* Can't return errors when library is shutting down */
} /* end if */
@@ -2176,25 +2202,27 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5P_set_vol(H5P_genplist_t *plist, H5VL_class_t *vol_cls)
+H5P_set_vol(H5P_genplist_t *plist, H5VL_class_t *vol_cls, const void *vol_info)
{
H5VL_class_t *old_vol_cls;
+ const void *old_vol_info;
herr_t ret_value=SUCCEED; /* Return value */
FUNC_ENTER_NOAPI(FAIL)
/* Get the current vol information */
if(H5P_get(plist, H5F_ACS_VOL_NAME, &old_vol_cls) < 0)
- HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get vol ID")
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get vol class")
+ if(H5P_get(plist, H5F_ACS_VOL_INFO_NAME, &old_vol_info) < 0)
+ HGOTO_ERROR(H5E_PLIST, H5E_CANTGET, FAIL, "can't get vol info")
/* Close the vol for the property list */
- if(H5VL_fapl_close(old_vol_cls)<0)
+ if(H5VL_fapl_close(old_vol_cls, old_vol_info)<0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't reset vol")
/* Set the vol for the property list */
- if(H5VL_fapl_open(plist, vol_cls)<0)
+ if(H5VL_fapl_open(plist, vol_cls, vol_info)<0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set vol")
-
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5P_set_vol() */
@@ -2216,7 +2244,7 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5Pset_vol(hid_t plist_id, hid_t new_vol_id)
+H5Pset_vol(hid_t plist_id, hid_t new_vol_id, const void *new_vol_info)
{
H5P_genplist_t *plist; /* Property list pointer */
H5VL_class_t *vol_cls;
@@ -2232,7 +2260,7 @@ H5Pset_vol(hid_t plist_id, hid_t new_vol_id)
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file vol ID")
/* Set the vol */
- if(H5P_set_vol(plist, vol_cls) < 0)
+ if(H5P_set_vol(plist, vol_cls, new_vol_info) < 0)
HGOTO_ERROR(H5E_PLIST, H5E_CANTSET, FAIL, "can't set vol")
done:
diff --git a/src/H5Pprivate.h b/src/H5Pprivate.h
index bd7e690..fb26eee 100644
--- a/src/H5Pprivate.h
+++ b/src/H5Pprivate.h
@@ -75,7 +75,7 @@ H5_DLL hid_t H5P_get_driver(H5P_genplist_t *plist);
H5_DLL void * H5P_get_driver_info(H5P_genplist_t *plist);
H5_DLL herr_t H5P_set_driver(H5P_genplist_t *plist, hid_t new_driver_id,
const void *new_driver_info);
-H5_DLL herr_t H5P_set_vol(H5P_genplist_t *plist, H5VL_class_t *vol_cls);
+H5_DLL herr_t H5P_set_vol(H5P_genplist_t *plist, H5VL_class_t *vol_cls, const void *vol_info);
H5_DLL herr_t H5P_set_vlen_mem_manager(H5P_genplist_t *plist,
H5MM_allocate_t alloc_func, void *alloc_info, H5MM_free_t free_func,
void *free_info);
diff --git a/src/H5Ppublic.h b/src/H5Ppublic.h
index fc42339..3986c79 100644
--- a/src/H5Ppublic.h
+++ b/src/H5Ppublic.h
@@ -291,7 +291,7 @@ H5_DLL herr_t H5Pset_driver(hid_t plist_id, hid_t driver_id,
const void *driver_info);
H5_DLL hid_t H5Pget_driver(hid_t plist_id);
H5_DLL void *H5Pget_driver_info(hid_t plist_id);
-H5_DLL herr_t H5Pset_vol(hid_t plist_id, hid_t new_vol_id);
+H5_DLL herr_t H5Pset_vol(hid_t plist_id, hid_t new_vol_id, const void *new_vol_info);
/*
H5_DLL herr_t H5Pset_vol(hid_t plist_id, hid_t vol_id, const void *vol_info);
diff --git a/src/H5VLdummy.c b/src/H5VLdummy.c
index 22d2500..eea2263 100644
--- a/src/H5VLdummy.c
+++ b/src/H5VLdummy.c
@@ -221,7 +221,7 @@ H5Pset_fapl_dummy(hid_t fapl_id)
if(NULL == (plist = H5P_object_verify(fapl_id, H5P_FILE_ACCESS)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
- ret_value = H5P_set_vol(plist, &H5VL_dummy_g);
+ ret_value = H5P_set_vol(plist, &H5VL_dummy_g, NULL);
done:
FUNC_LEAVE_API(ret_value)
diff --git a/src/H5VLint.c b/src/H5VLint.c
index 3edb813..57df1ce 100644
--- a/src/H5VLint.c
+++ b/src/H5VLint.c
@@ -183,7 +183,7 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5VL_fapl_open(H5P_genplist_t *plist, H5VL_class_t *vol_cls)
+H5VL_fapl_open(H5P_genplist_t *plist, H5VL_class_t *vol_cls, const void *vol_info)
{
herr_t ret_value = SUCCEED; /* Return value */
@@ -192,6 +192,9 @@ H5VL_fapl_open(H5P_genplist_t *plist, H5VL_class_t *vol_cls)
/* Set the vol properties for the list */
if(H5P_set(plist, H5F_ACS_VOL_NAME, &vol_cls) < 0)
HGOTO_ERROR(H5E_FILE, H5E_CANTSET, FAIL, "can't set vol ID")
+ /* Set the vol properties for the list */
+ if(H5P_set(plist, H5F_ACS_VOL_INFO_NAME, &vol_info) < 0)
+ HGOTO_ERROR(H5E_FILE, H5E_CANTSET, FAIL, "can't set vol info")
done:
FUNC_LEAVE_NOAPI(ret_value)
@@ -214,7 +217,7 @@ done:
*-------------------------------------------------------------------------
*/
herr_t
-H5VL_fapl_close(H5VL_class_t *vol_cls)
+H5VL_fapl_close(H5VL_class_t *vol_cls, const void *vol_info)
{
herr_t ret_value = SUCCEED; /* Return value */
diff --git a/src/H5VLnative.c b/src/H5VLnative.c
index bd003bc..7a97c1b 100644
--- a/src/H5VLnative.c
+++ b/src/H5VLnative.c
@@ -284,7 +284,7 @@ H5Pset_fapl_native(hid_t fapl_id)
if(NULL == (plist = H5P_object_verify(fapl_id, H5P_FILE_ACCESS)))
HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a file access property list")
- ret_value = H5P_set_vol(plist, &H5VL_native_g);
+ ret_value = H5P_set_vol(plist, &H5VL_native_g, NULL);
done:
FUNC_LEAVE_API(ret_value)
diff --git a/src/H5VLprivate.h b/src/H5VLprivate.h
index ecb464f..814901c 100644
--- a/src/H5VLprivate.h
+++ b/src/H5VLprivate.h
@@ -104,7 +104,7 @@ H5_DLL herr_t H5VL_object_lookup(hid_t uid, H5VL_loc_type_t lookup_type, void **
H5_DLL herr_t H5VL_object_free_loc(hid_t loc_id, void *location, hid_t req);
H5_DLL herr_t H5VL_object_close(hid_t uid, hid_t req);
-H5_DLL herr_t H5VL_fapl_open(struct H5P_genplist_t *plist, H5VL_class_t *vol_cls);
-H5_DLL herr_t H5VL_fapl_close(H5VL_class_t *vol_cls);
+H5_DLL herr_t H5VL_fapl_open(struct H5P_genplist_t *plist, H5VL_class_t *vol_cls, const void *vol_info);
+H5_DLL herr_t H5VL_fapl_close(H5VL_class_t *vol_cls, const void *vol_info);
#endif /* _H5VLprivate_H */
diff --git a/src/H5VLpublic.h b/src/H5VLpublic.h
index ba15f67..1a68f97 100644
--- a/src/H5VLpublic.h
+++ b/src/H5VLpublic.h
@@ -36,7 +36,7 @@
/* Attribute creation property names */
#define H5VL_ATTR_TYPE_ID "attr_type_id"
#define H5VL_ATTR_SPACE_ID "attr_space_id"
-#define H5VL_ATTR_LOC_PARAMS "attr_location"
+#define H5VL_ATTR_LOC_PARAMS "attr_location"
/* Link creation property names */
#define H5VL_LINK_TARGET_ID "target location id"
@@ -200,6 +200,9 @@ typedef struct H5VL_loc_params_t {
#define H5VL_VOL_DEFAULT 0 /* Default VOL plugin value */
+/* Forward declaration */
+typedef struct H5VL_t H5VL_t;
+
/* H5A routines */
typedef struct H5VL_attr_class_t {
hid_t (*create)(hid_t loc_id, const char *attr_name, hid_t acpl_id, hid_t aapl_id, hid_t req);
@@ -292,6 +295,69 @@ typedef struct H5VL_class_t {
H5VL_link_class_t link_cls;
H5VL_object_class_t object_cls;
} H5VL_class_t;
+#if 0
+/*
+ * The main datatype for each plugin. Public fields common to all
+ * plugins are declared here and the plugin appends private fields in
+ * memory.
+ */
+struct H5VL_t {
+ const H5VL_class_t *cls; /*constant class info */
+ const char *container_name; /* name of the underlying storage container */
+ unsigned long feature_flags; /* VOL Driver feature Flags */
+ void *object; /* actual object that the underlying plugin creates/uses */
+};
+
+H5_DLL H5VL_t *H5VLattr_create(H5VL_t *obj, const char *attr_name, hid_t acpl, hid_t aapl, hid_t req);
+H5_DLL H5VL_t *H5VLattr_open(H5VL_t *obj, H5VL_loc_params_t loc_params, const char *name, hid_t aapl, hid_t req);
+H5_DLL herr_t H5VLattr_read(H5VL_t *obj, hid_t dtype_id, void *buf, hid_t req);
+H5_DLL herr_t H5VLattr_write(H5VL_t *obj, hid_t dtype_id, const void *buf, hid_t req);
+H5_DLL herr_t H5VLattr_get(H5VL_t *obj, H5VL_attr_get_t get_type, hid_t req, ...);
+H5_DLL herr_t H5VLattr_remove(H5VL_t *obj, H5VL_loc_params_t loc_params, const char *attr_name, hid_t req);
+H5_DLL herr_t H5VLattr_close(H5VL_t *obj, hid_t req);
+
+H5_DLL H5VL_t *H5VLdataset_create(H5VL_t *obj, const char *name, hid_t dcpl_id, hid_t dapl_id, hid_t req);
+H5_DLL H5VL_t *H5VLdataset_open(H5VL_t *obj, const char *name, hid_t dapl_id, hid_t req);
+H5_DLL herr_t H5VLdataset_read(H5VL_t *obj, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, void *buf, hid_t req);
+H5_DLL herr_t H5VLdataset_write(H5VL_t *obj, hid_t mem_type_id, hid_t mem_space_id, hid_t file_space_id, hid_t plist_id, const void *buf, hid_t req);
+H5_DLL herr_t H5VLdataset_set_extent(H5VL_t *obj, const hsize_t size[], hid_t req);
+H5_DLL herr_t H5VLdataset_get(H5VL_t *obj, H5VL_dataset_get_t get_type, hid_t req, ...);
+H5_DLL herr_t H5VLdataset_close(H5VL_t *obj, hid_t req);
+
+H5_DLL herr_t H5VLdatatype_commit(H5VL_t *obj, const char *name, hid_t type_id, hid_t lcpl_id, hid_t tcpl_id, hid_t tapl_id, hid_t req);
+H5_DLL H5VL_t *H5VLdatatype_open(H5VL_t *obj, const char *name, hid_t tapl_id, hid_t req);
+H5_DLL herr_t H5VLdatatype_close(H5VL_t *obj, hid_t req);
+
+H5_DLL H5VL_t *H5VLfile_open(const char *name, unsigned flags, hid_t fapl_id, hid_t req);
+H5_DLL H5VL_t *H5VLfile_create(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id, hid_t req);
+H5_DLL herr_t H5VLfile_flush(H5VL_t *obj, H5F_scope_t scope, hid_t req);
+H5_DLL herr_t H5VLfile_misc(H5VL_t *obj, H5VL_file_misc_t misc_type, hid_t req, ...);
+H5_DLL herr_t H5VLfile_optional(H5VL_t *obj, H5VL_file_optional_t optional_type, hid_t req, ...);
+H5_DLL herr_t H5VLfile_get(H5VL_t *obj, H5VL_file_get_t get_type, hid_t req, ...);
+H5_DLL herr_t H5VLfile_close(H5VL_t *obj, hid_t req);
+
+H5_DLL H5VL_t *H5VLgroup_create(H5VL_t *obj, const char *name, hid_t gcpl_id, hid_t gapl_id, hid_t req);
+H5_DLL H5VL_t *H5VLgroup_open(H5VL_t *obj, const char *name, hid_t gapl_id, hid_t req);
+H5_DLL herr_t H5VLgroup_get(H5VL_t *obj, H5VL_group_get_t get_type, hid_t req, ...);
+H5_DLL herr_t H5VLgroup_close(H5VL_t *obj, hid_t req);
+
+H5_DLL herr_t H5VLlink_create(H5VL_link_create_type_t create_type, H5VL_t *obj, const char *link_name, hid_t lcpl_id, hid_t lapl_id, hid_t req);
+H5_DLL herr_t H5VLlink_move(H5VL_t *src_obj, const char *src_name, H5VL_t *dst_obj, const char *dst_name, hbool_t copy_flag, hid_t lcpl_id, hid_t lapl_id, hid_t req);
+H5_DLL herr_t H5VLlink_iterate(H5VL_t *obj, const char *name, hbool_t recursive, H5_index_t idx_type, H5_iter_order_t order, hsize_t *idx, H5L_iterate_t op, void *op_data, hid_t lapl_id);
+H5_DLL herr_t H5VLlink_get(H5VL_t *obj, H5VL_link_get_t get_type, hid_t req, ...);
+H5_DLL herr_t H5VLlink_remove(H5VL_t *obj, const char *name, void *udata, hid_t lapl_id, hid_t req);
+
+H5_DLL H5VL_t *H5VLobject_open(H5VL_t *obj, H5VL_loc_params_t params, hid_t req);
+H5_DLL herr_t H5VLobject_copy(H5VL_t *src_obj, const char *src_name, H5VL_t *dst_obj, const char *dst_name, hid_t ocpypl_id, hid_t lcpl_id, hid_t req);
+H5_DLL herr_t H5VLobject_visit(H5VL_t *obj, const char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate_t op, void *op_data, hid_t lapl_id);
+H5_DLL herr_t H5VLobject_get(H5VL_t *obj, H5VL_object_get_t get_type, hid_t req, ...);
+H5_DLL herr_t H5VLobject_misc(H5VL_t *obj, H5VL_object_misc_t misc_type, hid_t req, ...);
+H5_DLL herr_t H5VLobject_optional(H5VL_t *obj, H5VL_object_misc_t optional_type, hid_t req, ...);
+H5_DLL herr_t H5VLobject_lookup(H5VL_t *obj, H5VL_loc_type_t lookup_type, void **location, hid_t req, ...);
+H5_DLL herr_t H5VLobject_free_loc(H5VL_t *obj, void *location, hid_t req);
+H5_DLL herr_t H5VLobject_close(H5VL_t *obj, hid_t req);
+
+#endif
#ifdef __cplusplus
extern "C" {