From 6d61d2b0d017ebff61407a1816c5fcf7c0c8c7b9 Mon Sep 17 00:00:00 2001 From: Mohamad Chaarawi Date: Wed, 14 Mar 2012 08:52:19 -0500 Subject: [svn-r22064] -renmace a few VOL file routines - add a dummy VOL driver to make sure we can change drivers at runtime --- configure | 2 +- src/H5D.c | 10 +- src/H5F.c | 32 +++---- src/H5G.c | 10 +- src/H5I.c | 16 +++- src/H5Pfapl.c | 5 +- src/H5VL.c | 120 ++++++++++++++++++------ src/H5VLdummy.c | 282 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/H5VLdummy.h | 42 +++++++++ src/Makefile.am | 4 +- src/Makefile.in | 78 ++++++++-------- 11 files changed, 513 insertions(+), 88 deletions(-) create mode 100644 src/H5VLdummy.c create mode 100644 src/H5VLdummy.h diff --git a/configure b/configure index ec7f23c..4aba56f 100755 --- a/configure +++ b/configure @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.in Id: configure.in 21910 2012-02-05 15:51:01Z hdftest . +# From configure.in Id: configure.in 22034 2012-03-07 16:05:24Z chaarawi . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.68 for HDF5 1.9.110. # diff --git a/src/H5D.c b/src/H5D.c index 7cb0cc6..20a8b79 100644 --- a/src/H5D.c +++ b/src/H5D.c @@ -165,11 +165,19 @@ H5Dcreate2(hid_t loc_id, const char *name, hid_t type_id, hid_t space_id, if(TRUE != H5P_isa_class(dapl_id, H5P_DATASET_ACCESS)) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not dataset access property list") +#if 0 + /* Create the dataset through the VOL */ + if((ret_value = H5VL_dataset_create(loc_id, name, type_id, space_id, + lcpl_id, dcpl_id, dapl_id)) < 0) + HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to create dataset") +#endif + /* Create the new dataset & get its ID */ if(NULL == (dset = H5D__create_named(&loc, name, type_id, space, lcpl_id, dcpl_id, dapl_id, H5AC_dxpl_id))) HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to create dataset") if((ret_value = H5I_register(H5I_DATASET, dset, TRUE)) < 0) - HGOTO_ERROR(H5E_DATASET, H5E_CANTREGISTER, FAIL, "unable to register dataset") + HGOTO_ERROR(H5E_DATASET, H5E_CANTREGISTER, FAIL, "unable to register dataset")A + done: if(ret_value < 0) diff --git a/src/H5F.c b/src/H5F.c index 2c16c65..5a9889d 100644 --- a/src/H5F.c +++ b/src/H5F.c @@ -193,7 +193,7 @@ H5Fget_create_plist(hid_t uid) FUNC_ENTER_API(FAIL) H5TRACE1("i", "i", uid); - if(H5VL_get(uid, H5F_GET_FCPL, &ret_value, 0, NULL) < 0) + if(H5VL_file_get(uid, H5F_GET_FCPL, &ret_value, 0, NULL) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file creation properties") done: @@ -230,7 +230,7 @@ H5Fget_access_plist(hid_t uid) FUNC_ENTER_API(FAIL) H5TRACE1("i", "i", uid); - if(H5VL_get(uid, H5F_GET_FAPL, &ret_value, 0, NULL) < 0) + if(H5VL_file_get(uid, H5F_GET_FAPL, &ret_value, 0, NULL) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file creation properties") done: @@ -758,7 +758,7 @@ H5Fget_vfd_handle(hid_t uid, hid_t fapl, void **file_handle) if(!file_handle) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "invalid file handle pointer") - if((ret_value = H5VL_get(uid, H5F_GET_VFD_HANDLE, &fapl, 1, file_handle)) < 0) + if((ret_value = H5VL_file_get(uid, H5F_GET_VFD_HANDLE, &fapl, 1, file_handle)) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file handle") done: @@ -1446,7 +1446,7 @@ H5Fcreate(const char *filename, unsigned flags, hid_t fcpl_id, hid_t fapl_id) /* * Create a new file or truncate an existing file. */ - if((ret_value = H5VL_create(filename, flags, fcpl_id, fapl_id)) < 0) + if((ret_value = H5VL_file_create(filename, flags, fcpl_id, fapl_id)) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to create file") done: @@ -1516,7 +1516,7 @@ H5Fopen(const char *filename, unsigned flags, hid_t fapl_id) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not file access property list") /* Open the file */ - if((ret_value = H5VL_open(filename, flags, H5P_FILE_CREATE_DEFAULT, fapl_id, H5AC_dxpl_id))<0) + if((ret_value = H5VL_file_open(filename, flags, H5P_FILE_CREATE_DEFAULT, fapl_id, H5AC_dxpl_id))<0) HGOTO_ERROR(H5E_FILE, H5E_CANTOPENFILE, FAIL, "unable to open file") #if 0 @@ -1557,7 +1557,7 @@ H5Fflush(hid_t object_id, H5F_scope_t scope) FUNC_ENTER_API(FAIL) H5TRACE2("e", "iFs", object_id, scope); - if((ret_value = H5VL_flush(object_id, scope)) < 0) + if((ret_value = H5VL_file_flush(object_id, scope)) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTFLUSH, FAIL, "unable to flush file") done: @@ -1873,7 +1873,7 @@ H5Fclose(hid_t file_id) H5TRACE1("e", "i", file_id); /* Close the file */ - if((ret_value = H5VL_close(file_id)) < 0) + if((ret_value = H5VL_file_close(file_id)) < 0) HGOTO_ERROR(H5E_FILE, H5E_CANTCLOSEFILE, FAIL, "unable to close file") done: @@ -1985,7 +1985,7 @@ H5Fget_intent(hid_t uid, unsigned *intent_flags) /* If no intent flags were passed in, exit quietly */ if(intent_flags) { - if((ret_value = H5VL_get(uid, H5F_GET_INTENT, (void *)intent_flags, 0, NULL)) < 0) + if((ret_value = H5VL_file_get(uid, H5F_GET_INTENT, (void *)intent_flags, 0, NULL)) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file intent") } @@ -2403,7 +2403,7 @@ H5Fget_freespace(hid_t uid) FUNC_ENTER_API(FAIL) H5TRACE1("Hs", "i", uid); - if(H5VL_get(uid, H5F_GET_FREE_SPACE, &ret_value, 0, NULL) < 0) + if(H5VL_file_get(uid, H5F_GET_FREE_SPACE, &ret_value, 0, NULL) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file free space") done: @@ -2437,7 +2437,7 @@ H5Fget_filesize(hid_t uid, hsize_t *size) FUNC_ENTER_API(FAIL) H5TRACE2("e", "i*h", uid, size); - if((ret_value = H5VL_get(uid, H5F_GET_SIZE, (void *)size, 0, NULL)) < 0) + if((ret_value = H5VL_file_get(uid, H5F_GET_SIZE, (void *)size, 0, NULL)) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file size") done: @@ -2475,7 +2475,7 @@ H5Fget_mdc_config(hid_t uid, H5AC_cache_config_t *config_ptr) if((NULL == config_ptr) || (config_ptr->version != H5AC__CURR_CACHE_CONFIG_VERSION)) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Bad config_ptr") - if((ret_value = H5VL_get(uid, H5F_GET_MDC_CONF, (void *)config_ptr, 0, NULL)) < 0) + if((ret_value = H5VL_file_get(uid, H5F_GET_MDC_CONF, (void *)config_ptr, 0, NULL)) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get mdc config") done: @@ -2553,7 +2553,7 @@ H5Fget_mdc_hit_rate(hid_t uid, double *hit_rate_ptr) if(NULL == hit_rate_ptr) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "NULL hit rate pointer") - if((ret_value = H5VL_get(uid, H5F_GET_MDC_HR, (void *)hit_rate_ptr, 0, NULL)) < 0) + if((ret_value = H5VL_file_get(uid, H5F_GET_MDC_HR, (void *)hit_rate_ptr, 0, NULL)) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get MDC hit rate") done: @@ -2592,7 +2592,7 @@ H5Fget_mdc_size(hid_t uid, size_t *max_size_ptr, size_t *min_clean_size_ptr, argv[0] = (void *)max_size_ptr; argv[1] = (void *)min_clean_size_ptr; argv[2] = (void *)cur_size_ptr; - if((ret_value = H5VL_get(uid, H5F_GET_MDC_SIZE, (void *)cur_num_entries_ptr, 3, argv)) < 0) + if((ret_value = H5VL_file_get(uid, H5F_GET_MDC_SIZE, (void *)cur_num_entries_ptr, 3, argv)) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get MDC hit rate") done: @@ -2683,7 +2683,7 @@ H5Fget_name(hid_t uid, char *name/*out*/, size_t size) if (H5I_UID == H5I_get_type(uid)) { argv[0] = &ret_value; argv[1] = &size; - if(H5VL_get(uid, H5F_GET_NAME, (void *)name, 2, argv) < 0) + if(H5VL_file_get(uid, H5F_GET_NAME, (void *)name, 2, argv) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file name") } else { @@ -2751,7 +2751,7 @@ H5Fget_info2(hid_t uid, H5F_info2_t *finfo) if(!finfo) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no info struct") - if((ret_value = H5VL_get(uid, H5F_GET_INFO, (void *)finfo, 0, NULL)) < 0) + if((ret_value = H5VL_file_get(uid, H5F_GET_INFO, (void *)finfo, 0, NULL)) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file info") done: FUNC_LEAVE_API(ret_value) @@ -2791,7 +2791,7 @@ H5Fget_free_sections(hid_t uid, H5F_mem_t type, size_t nsects, argv[1] = &type; argv[2] = &nsects; - if(H5VL_get(uid, H5F_GET_FREE_SECTIONS, (void *)sect_info, 3, argv) < 0) + if(H5VL_file_get(uid, H5F_GET_FREE_SECTIONS, (void *)sect_info, 3, argv) < 0) HGOTO_ERROR(H5E_INTERNAL, H5E_CANTGET, FAIL, "unable to get file info") done: FUNC_LEAVE_API(ret_value) diff --git a/src/H5G.c b/src/H5G.c index 48d7f66..3531d04 100644 --- a/src/H5G.c +++ b/src/H5G.c @@ -261,8 +261,7 @@ H5G_term_interface(void) *------------------------------------------------------------------------- */ hid_t -H5Gcreate2(hid_t loc_id, const char *name, hid_t lcpl_id, hid_t gcpl_id, - hid_t gapl_id) +H5Gcreate2(hid_t loc_id, const char *name, hid_t lcpl_id, hid_t gcpl_id, hid_t gapl_id) { H5G_loc_t loc; /* Location to create group */ H5G_t *grp = NULL; /* New group created */ @@ -274,6 +273,7 @@ H5Gcreate2(hid_t loc_id, const char *name, hid_t lcpl_id, hid_t gcpl_id, /* Check arguments */ if(H5G_loc(loc_id, &loc) < 0) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not a location") + if(!name || !*name) HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "no name") @@ -298,6 +298,12 @@ H5Gcreate2(hid_t loc_id, const char *name, hid_t lcpl_id, hid_t gcpl_id, if(TRUE != H5P_isa_class(gapl_id, H5P_GROUP_ACCESS)) HGOTO_ERROR(H5E_ARGS, H5E_BADTYPE, FAIL, "not group access property list") +#if 0 + /* Create the group through the VOL */ + if((ret_value = H5VL_group_create(loc_id, name, lcpl_id, gcpl_id, gapl_id)) < 0) + HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to create group") +#endif + /* Create the new group & get its ID */ if(NULL == (grp = H5G__create_named(&loc, name, lcpl_id, gcpl_id, gapl_id, H5AC_dxpl_id))) HGOTO_ERROR(H5E_SYM, H5E_CANTINIT, FAIL, "unable to create group") diff --git a/src/H5I.c b/src/H5I.c index ffdb21e..560d0ef 100644 --- a/src/H5I.c +++ b/src/H5I.c @@ -151,9 +151,23 @@ H5I_init_interface(void) FUNC_ENTER_NOAPI_NOINIT + /* Register high level file user id */ if(H5I_register_type(H5I_UID, (size_t)H5I_UID_HASHSIZE, 0, (H5I_free_t)NULL)vol_id))) + HGOTO_ERROR(H5E_VOL, H5E_BADVALUE, FAIL, "invalid vol plugin ID in file") + + /* check if the corresponding VOL create callback exists */ + if(NULL == vol_plugin->object_cls.create) + HGOTO_ERROR(H5E_VOL, H5E_UNSUPPORTED, FAIL, "vol plugin has no `group create' method") + /* call the corresponding VOL create callback */ + if((group_id = (vol_plugin->object_cls.create) + (uid_info1->obj_id, name, lcpl_id, gcpl_id, gapl_id)) < 0) + HGOTO_ERROR(H5E_VOL, H5E_CANTINIT, FAIL, "create failed") + + /* Create a new id that points to a struct that holds the group id and the VOL id */ + /* Allocate new id structure */ + if(NULL == (uid_info2 = H5FL_MALLOC(H5I_t))) + HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "memory allocation failed") + uid_info2->obj_id = group_id; + uid_info2->vol_id = uid_info1->vol_id; + + /* increment ref count on the VOL id */ + if(H5I_inc_ref(uid_info2->vol_id, FALSE) < 0) + HGOTO_ERROR(H5E_FILE, H5E_CANTINC, FAIL, "unable to increment ref count on vol plugin") + + if((ret_value = H5I_register(H5I_UID, uid_info2, TRUE)) < 0) + HGOTO_ERROR(H5E_ATOM, H5E_CANTREGISTER, FAIL, "unable to atomize group handle") + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5VL_group_create() */ +#endif diff --git a/src/H5VLdummy.c b/src/H5VLdummy.c new file mode 100644 index 0000000..bddf87c --- /dev/null +++ b/src/H5VLdummy.c @@ -0,0 +1,282 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Mohamad Chaarawi + * January, 2012 + * + * Purpose: The dummy VOL plugin where access is to a single HDF5 file + * using HDF5 VFDs. + */ + +#define H5F_PACKAGE /*suppress error about including H5Fpkg */ + +/* Interface initialization */ +#define H5_INTERFACE_INIT_FUNC H5VL_dummy_init_interface + + +#include "H5private.h" /* Generic Functions */ +#include "H5Eprivate.h" /* Error handling */ +#include "H5Fprivate.h" /* File access */ +#include "H5Fpkg.h" /* File pkg */ +#include "H5VLprivate.h" /* VOL plugins */ +#include "H5VLdummy.h" /* Dummy VOL plugin */ +#include "H5Iprivate.h" /* IDs */ +#include "H5MMprivate.h" /* Memory management */ +#include "H5Pprivate.h" /* Property lists */ +#include "H5Dprivate.h" /* Datasets */ +#include "H5Aprivate.h" /* Attributes */ +#include "H5MFprivate.h" /* File memory management */ +#include "H5SMprivate.h" /* Shared Object Header Messages */ + +/* The driver identification number, initialized at runtime */ +static hid_t H5VL_DUMMY_g = 0; + + +/* Prototypes */ +static herr_t H5VL_dummy_get(hid_t file_id, H5VL_file_get_t get_type, + void *data, int argc, void **argv); +static herr_t H5VL_dummy_term(void); + +static const H5VL_class_t H5VL_dummy_g = { + "dummy", /* name */ + H5VL_dummy_term, /*terminate */ + 0, /*fapl_size */ + NULL, /*fapl_get */ + NULL, /*fapl_copy */ + NULL, /*fapl_free */ + { /* file_cls */ + H5VL_dummy_open, /* open */ + H5VL_dummy_close, /* close */ + H5VL_dummy_create, /* create */ + NULL, /* flush */ + NULL /* get */ + }, + { /* dataset_cls */ + NULL, /* open */ + NULL, /* close */ + NULL, /* create */ + NULL, /* read */ + NULL, /* write */ + NULL /* set_extent */ + }, + { /* attribute_cls */ + NULL, /* open */ + NULL, /* close */ + NULL, /* create */ + NULL, /* delete */ + NULL, /* read */ + NULL /* write */ + }, + { /* datatype_cls */ + NULL /* open */ + }, + { /* link_cls */ + NULL, /* create */ + NULL, /* delete */ + NULL, /* move */ + NULL /* copy */ + }, + { /* object_cls */ + NULL, /* create */ + NULL, /* open */ + NULL, /* close */ + NULL, /* move */ + NULL /* copy */ + } +}; + + +/*-------------------------------------------------------------------------- +NAME + H5VL_dummy_init_interface -- Initialize interface-specific information +USAGE + herr_t H5VL_dummy_init_interface() + +RETURNS + Non-negative on success/Negative on failure +DESCRIPTION + Initializes any interface-specific data or routines. (Just calls + H5VL_dummy_init currently). + +--------------------------------------------------------------------------*/ +static herr_t +H5VL_dummy_init_interface(void) +{ + FUNC_ENTER_NOAPI_NOINIT_NOERR + + FUNC_LEAVE_NOAPI(H5VL_dummy_init()) +} /* H5VL_dummy_init_interface() */ + + +/*------------------------------------------------------------------------- + * Function: H5VL_dummy_init + * + * Purpose: Initialize this vol plugin by registering the driver with the + * library. + * + * Return: Success: The ID for the dummy plugin. + * Failure: Negative. + * + * Programmer: Mohamad Chaarawi + * January, 2012 + * + *------------------------------------------------------------------------- + */ +hid_t +H5VL_dummy_init(void) +{ + hid_t ret_value; /* Return value */ + + FUNC_ENTER_NOAPI(FAIL) + + if(H5I_VOL != H5I_get_type(H5VL_DUMMY_g)) + H5VL_DUMMY_g = H5VL_register(&H5VL_dummy_g, sizeof(H5VL_class_t), FALSE); + + /* Set return value */ + ret_value = H5VL_DUMMY_g; + +done: + FUNC_LEAVE_NOAPI(ret_value) +} /* end H5VL_dummy_init() */ + + +/*--------------------------------------------------------------------------- + * Function: H5VL_dummy_term + * + * Purpose: Shut down the VOL plugin + * + * Returns: Non-negative on success or negative on failure + * + * Programmer: Mohamad Chaarawi + * January, 2012 + * + *--------------------------------------------------------------------------- + */ +static herr_t +H5VL_dummy_term(void) +{ + FUNC_ENTER_NOAPI_NOINIT_NOERR + + /* Reset VOL ID */ + H5VL_DUMMY_g = 0; + + FUNC_LEAVE_NOAPI(SUCCEED) +} /* end H5VL_dummy_term() */ + + +/*------------------------------------------------------------------------- + * Function: H5Pset_fapl_dummy + * + * Purpose: Modify the file access property list to use the H5VL_DUMMY + * plugin defined in this source file. + * + * Return: Non-negative on success/Negative on failure + * + * Programmer: Mohamad Chaarawi + * January, 2012 + * + *------------------------------------------------------------------------- + */ +herr_t +H5Pset_fapl_dummy(hid_t fapl_id) +{ + H5P_genplist_t *plist; /* Property list pointer */ + herr_t ret_value; + + FUNC_ENTER_API(FAIL) + H5TRACE1("e", "i", 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, NULL); + +done: + FUNC_LEAVE_API(ret_value) +} /* end H5Pset_fapl_dummy() */ + + +/*------------------------------------------------------------------------- + * Function: H5VL_dummy_open + * + * Purpose: Opens a file as a dummy HDF5 file. + * + * Return: Success: A pointer to a new file data structure. + * Failure: NULL + * + * Programmer: Mohamad Chaarawi + * January, 2012 + * + *------------------------------------------------------------------------- + */ +hid_t +H5VL_dummy_open(const char *name, unsigned flags, hid_t fcpl_id, + hid_t fapl_id, hid_t dxpl_id) +{ + FUNC_ENTER_NOAPI_NOINIT_NOERR + + printf ("DUMMY OPEN\n"); + + FUNC_LEAVE_NOAPI(1) +} /* end H5VL_dummy_open() */ + + +/*------------------------------------------------------------------------- + * Function: H5VL_dummy_create + * + * Purpose: Creates a file as a dummy HDF5 file. + * + * Return: Success: A pointer to a new file data structure. + * Failure: NULL + * + * Programmer: Mohamad Chaarawi + * January, 2012 + * + *------------------------------------------------------------------------- + */ +hid_t +H5VL_dummy_create(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id) +{ + FUNC_ENTER_NOAPI_NOINIT_NOERR + + printf ("DUMMY CREATE\n"); + + FUNC_LEAVE_NOAPI(2) +} /* end H5VL_dummy_create() */ + + +/*------------------------------------------------------------------------- + * Function: H5VL_dummy_close + * + * Purpose: Closes a file. + * + * Return: Success: 0 + * Failure: -1, file not closed. + * + * Programmer: Mohamad Chaarawi + * January, 2012 + * + *------------------------------------------------------------------------- + */ +herr_t +H5VL_dummy_close(hid_t file_id) +{ + FUNC_ENTER_NOAPI_NOINIT_NOERR + + printf ("DUMMY CLOSE\n"); + + FUNC_LEAVE_NOAPI(1) +} /* end H5VL_dummy_close() */ diff --git a/src/H5VLdummy.h b/src/H5VLdummy.h new file mode 100644 index 0000000..e95098d --- /dev/null +++ b/src/H5VLdummy.h @@ -0,0 +1,42 @@ +/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + * Copyright by The HDF Group. * + * Copyright by the Board of Trustees of the University of Illinois. * + * All rights reserved. * + * * + * This file is part of HDF5. The full HDF5 copyright notice, including * + * terms governing use, modification, and redistribution, is contained in * + * the files COPYING and Copyright.html. COPYING can be found at the root * + * of the source code distribution tree; Copyright.html can be found at the * + * root level of an installed copy of the electronic HDF5 document set and * + * is linked from the top-level documents page. It can also be found at * + * http://hdfgroup.org/HDF5/doc/Copyright.html. If you do not have * + * access to either file, you may request a copy from help@hdfgroup.org. * + * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ + +/* + * Programmer: Mohamad Chaarawi + * January, 2012 + * + * Purpose: The public header file for the Dummy VOL plugin. + */ +#ifndef H5VLdummy_H +#define H5VLdummy_H + +#define H5VL_DUMMY (H5VL_dummy_init()) + +#ifdef __cplusplus +extern "C" { +#endif + +H5_DLL hid_t H5VL_dummy_init(void); +H5_DLL herr_t H5Pset_fapl_dummy(hid_t fapl_id); +H5_DLL hid_t H5VL_dummy_open(const char *name, unsigned flags, hid_t fcpl_id, + hid_t fapl_id, hid_t dxpl_id); +H5_DLL hid_t H5VL_dummy_create(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id); +H5_DLL herr_t H5VL_dummy_close(hid_t fid); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/Makefile.am b/src/Makefile.am index c751699..fad0241 100755 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -59,7 +59,7 @@ libhdf5_la_SOURCES= H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \ H5Fsfile.c H5Fsuper.c H5Fsuper_cache.c H5Ftest.c \ H5FA.c H5FAcache.c H5FAdbg.c H5FAdblock.c H5FAdblkpage.c H5FAhdr.c \ H5FAstat.c H5FAtest.c \ - H5VL.c H5VLnative.c \ + H5VL.c H5VLnative.c H5VLdummy.c \ H5FD.c H5FDcore.c \ H5FDdirect.c H5FDfamily.c H5FDint.c H5FDlog.c H5FDmpi.c H5FDmpio.c \ H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \ @@ -116,7 +116,7 @@ include_HEADERS = hdf5.h H5api_adpt.h H5overflow.h H5pubconf.h H5public.h H5vers H5Epubgen.h H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDcore.h H5FDdirect.h \ H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \ H5FDmulti.h H5FDsec2.h H5FDstdio.h \ - H5VLpublic.h H5VLnative.h \ + H5VLpublic.h H5VLnative.h H5VLdummy.h \ H5Gpublic.h H5Ipublic.h H5Lpublic.h \ H5MMpublic.h H5Opublic.h H5Ppublic.h H5Rpublic.h H5Spublic.h \ H5Tpublic.h H5Zpublic.h diff --git a/src/Makefile.in b/src/Makefile.in index bdd42ea..1a763b2 100644 --- a/src/Makefile.in +++ b/src/Makefile.in @@ -111,42 +111,43 @@ am_libhdf5_la_OBJECTS = H5.lo H5checksum.lo H5dbg.lo H5system.lo \ H5Fsfile.lo H5Fsuper.lo H5Fsuper_cache.lo H5Ftest.lo H5FA.lo \ H5FAcache.lo H5FAdbg.lo H5FAdblock.lo H5FAdblkpage.lo \ H5FAhdr.lo H5FAstat.lo H5FAtest.lo H5VL.lo H5VLnative.lo \ - H5FD.lo H5FDcore.lo H5FDdirect.lo H5FDfamily.lo H5FDint.lo \ - H5FDlog.lo H5FDmpi.lo H5FDmpio.lo H5FDmpiposix.lo H5FDmulti.lo \ - H5FDsec2.lo H5FDspace.lo H5FDstdio.lo H5FL.lo H5FO.lo H5FS.lo \ - H5FScache.lo H5FSdbg.lo H5FSsection.lo H5FSstat.lo H5FStest.lo \ - H5G.lo H5Gbtree2.lo H5Gcache.lo H5Gcompact.lo H5Gdense.lo \ - H5Gdeprec.lo H5Gent.lo H5Gint.lo H5Glink.lo H5Gloc.lo \ - H5Gname.lo H5Gnode.lo H5Gobj.lo H5Goh.lo H5Groot.lo H5Gstab.lo \ - H5Gtest.lo H5Gtraverse.lo H5HF.lo H5HFbtree2.lo H5HFcache.lo \ - H5HFdbg.lo H5HFdblock.lo H5HFdtable.lo H5HFhdr.lo H5HFhuge.lo \ - H5HFiblock.lo H5HFiter.lo H5HFman.lo H5HFsection.lo \ - H5HFspace.lo H5HFstat.lo H5HFtest.lo H5HFtiny.lo H5HG.lo \ - H5HGcache.lo H5HGdbg.lo H5HGquery.lo H5HL.lo H5HLcache.lo \ - H5HLdbg.lo H5HLint.lo H5HP.lo H5I.lo H5Itest.lo H5L.lo \ - H5Lexternal.lo H5lib_settings.lo H5MF.lo H5MFaggr.lo \ - H5MFdbg.lo H5MFsection.lo H5MM.lo H5MP.lo H5MPtest.lo H5O.lo \ - H5Oainfo.lo H5Oalloc.lo H5Oattr.lo H5Oattribute.lo H5Obogus.lo \ - H5Obtreek.lo H5Ocache.lo H5Ochunk.lo H5Ocont.lo H5Ocopy.lo \ - H5Odbg.lo H5Odrvinfo.lo H5Odtype.lo H5Oefl.lo H5Ofill.lo \ - H5Ofsinfo.lo H5Oginfo.lo H5Olayout.lo H5Olinfo.lo H5Olink.lo \ - H5Omessage.lo H5Omtime.lo H5Oname.lo H5Onull.lo H5Opline.lo \ - H5Orefcount.lo H5Osdspace.lo H5Oshared.lo H5Ostab.lo \ - H5Oshmesg.lo H5Otest.lo H5Ounknown.lo H5P.lo H5Pacpl.lo \ - H5Pdapl.lo H5Pdcpl.lo H5Pdeprec.lo H5Pdxpl.lo H5Pfapl.lo \ - H5Pfcpl.lo H5Pfmpl.lo H5Pgcpl.lo H5Pint.lo H5Plapl.lo \ - H5Plcpl.lo H5Pocpl.lo H5Pocpypl.lo H5Pstrcpl.lo H5Ptest.lo \ - H5R.lo H5Rdeprec.lo H5RC.lo H5RS.lo H5S.lo H5Sall.lo H5Sdbg.lo \ - H5Shyper.lo H5Smpio.lo H5Snone.lo H5Spoint.lo H5Sselect.lo \ - H5Stest.lo H5SL.lo H5SM.lo H5SMbtree2.lo H5SMcache.lo \ - H5SMmessage.lo H5SMtest.lo H5ST.lo H5T.lo H5Tarray.lo \ - H5Tbit.lo H5Tcommit.lo H5Tcompound.lo H5Tconv.lo H5Tcset.lo \ - H5Tdbg.lo H5Tdeprec.lo H5Tenum.lo H5Tfields.lo H5Tfixed.lo \ - H5Tfloat.lo H5Tinit.lo H5Tnative.lo H5Toffset.lo H5Toh.lo \ - H5Topaque.lo H5Torder.lo H5Tpad.lo H5Tprecis.lo H5Tstrpad.lo \ - H5Tvisit.lo H5Tvlen.lo H5TS.lo H5V.lo H5WB.lo H5Z.lo \ - H5Zdeflate.lo H5Zfletcher32.lo H5Znbit.lo H5Zshuffle.lo \ - H5Zszip.lo H5Zscaleoffset.lo H5Ztrans.lo + H5VLdummy.lo H5FD.lo H5FDcore.lo H5FDdirect.lo H5FDfamily.lo \ + H5FDint.lo H5FDlog.lo H5FDmpi.lo H5FDmpio.lo H5FDmpiposix.lo \ + H5FDmulti.lo H5FDsec2.lo H5FDspace.lo H5FDstdio.lo H5FL.lo \ + H5FO.lo H5FS.lo H5FScache.lo H5FSdbg.lo H5FSsection.lo \ + H5FSstat.lo H5FStest.lo H5G.lo H5Gbtree2.lo H5Gcache.lo \ + H5Gcompact.lo H5Gdense.lo H5Gdeprec.lo H5Gent.lo H5Gint.lo \ + H5Glink.lo H5Gloc.lo H5Gname.lo H5Gnode.lo H5Gobj.lo H5Goh.lo \ + H5Groot.lo H5Gstab.lo H5Gtest.lo H5Gtraverse.lo H5HF.lo \ + H5HFbtree2.lo H5HFcache.lo H5HFdbg.lo H5HFdblock.lo \ + H5HFdtable.lo H5HFhdr.lo H5HFhuge.lo H5HFiblock.lo H5HFiter.lo \ + H5HFman.lo H5HFsection.lo H5HFspace.lo H5HFstat.lo H5HFtest.lo \ + H5HFtiny.lo H5HG.lo H5HGcache.lo H5HGdbg.lo H5HGquery.lo \ + H5HL.lo H5HLcache.lo H5HLdbg.lo H5HLint.lo H5HP.lo H5I.lo \ + H5Itest.lo H5L.lo H5Lexternal.lo H5lib_settings.lo H5MF.lo \ + H5MFaggr.lo H5MFdbg.lo H5MFsection.lo H5MM.lo H5MP.lo \ + H5MPtest.lo H5O.lo H5Oainfo.lo H5Oalloc.lo H5Oattr.lo \ + H5Oattribute.lo H5Obogus.lo H5Obtreek.lo H5Ocache.lo \ + H5Ochunk.lo H5Ocont.lo H5Ocopy.lo H5Odbg.lo H5Odrvinfo.lo \ + H5Odtype.lo H5Oefl.lo H5Ofill.lo H5Ofsinfo.lo H5Oginfo.lo \ + H5Olayout.lo H5Olinfo.lo H5Olink.lo H5Omessage.lo H5Omtime.lo \ + H5Oname.lo H5Onull.lo H5Opline.lo H5Orefcount.lo H5Osdspace.lo \ + H5Oshared.lo H5Ostab.lo H5Oshmesg.lo H5Otest.lo H5Ounknown.lo \ + H5P.lo H5Pacpl.lo H5Pdapl.lo H5Pdcpl.lo H5Pdeprec.lo \ + H5Pdxpl.lo H5Pfapl.lo H5Pfcpl.lo H5Pfmpl.lo H5Pgcpl.lo \ + H5Pint.lo H5Plapl.lo H5Plcpl.lo H5Pocpl.lo H5Pocpypl.lo \ + H5Pstrcpl.lo H5Ptest.lo H5R.lo H5Rdeprec.lo H5RC.lo H5RS.lo \ + H5S.lo H5Sall.lo H5Sdbg.lo H5Shyper.lo H5Smpio.lo H5Snone.lo \ + H5Spoint.lo H5Sselect.lo H5Stest.lo H5SL.lo H5SM.lo \ + H5SMbtree2.lo H5SMcache.lo H5SMmessage.lo H5SMtest.lo H5ST.lo \ + H5T.lo H5Tarray.lo H5Tbit.lo H5Tcommit.lo H5Tcompound.lo \ + H5Tconv.lo H5Tcset.lo H5Tdbg.lo H5Tdeprec.lo H5Tenum.lo \ + H5Tfields.lo H5Tfixed.lo H5Tfloat.lo H5Tinit.lo H5Tnative.lo \ + H5Toffset.lo H5Toh.lo H5Topaque.lo H5Torder.lo H5Tpad.lo \ + H5Tprecis.lo H5Tstrpad.lo H5Tvisit.lo H5Tvlen.lo H5TS.lo \ + H5V.lo H5WB.lo H5Z.lo H5Zdeflate.lo H5Zfletcher32.lo \ + H5Znbit.lo H5Zshuffle.lo H5Zszip.lo H5Zscaleoffset.lo \ + H5Ztrans.lo libhdf5_la_OBJECTS = $(am_libhdf5_la_OBJECTS) AM_V_lt = $(am__v_lt_$(V)) am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) @@ -518,7 +519,7 @@ libhdf5_la_SOURCES = H5.c H5checksum.c H5dbg.c H5system.c H5timer.c H5trace.c \ H5Fsfile.c H5Fsuper.c H5Fsuper_cache.c H5Ftest.c \ H5FA.c H5FAcache.c H5FAdbg.c H5FAdblock.c H5FAdblkpage.c H5FAhdr.c \ H5FAstat.c H5FAtest.c \ - H5VL.c H5VLnative.c \ + H5VL.c H5VLnative.c H5VLdummy.c \ H5FD.c H5FDcore.c \ H5FDdirect.c H5FDfamily.c H5FDint.c H5FDlog.c H5FDmpi.c H5FDmpio.c \ H5FDmpiposix.c H5FDmulti.c H5FDsec2.c H5FDspace.c H5FDstdio.c \ @@ -575,7 +576,7 @@ include_HEADERS = hdf5.h H5api_adpt.h H5overflow.h H5pubconf.h H5public.h H5vers H5Epubgen.h H5Epublic.h H5Fpublic.h H5FDpublic.h H5FDcore.h H5FDdirect.h \ H5FDfamily.h H5FDlog.h H5FDmpi.h H5FDmpio.h H5FDmpiposix.h \ H5FDmulti.h H5FDsec2.h H5FDstdio.h \ - H5VLpublic.h H5VLnative.h \ + H5VLpublic.h H5VLnative.h H5VLdummy.h \ H5Gpublic.h H5Ipublic.h H5Lpublic.h \ H5MMpublic.h H5Opublic.h H5Ppublic.h H5Rpublic.h H5Spublic.h \ H5Tpublic.h H5Zpublic.h @@ -955,6 +956,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Tvlen.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5V.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5VL.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5VLdummy.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5VLnative.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5WB.Plo@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/H5Z.Plo@am__quote@ -- cgit v0.12