[svn-r20588] Description:

Clean up code a bit, move new "terminate" VFD callback to new position
in H5FD_class_t struct.

Tested on:
    Mac OS X/32 10.6.7 (amazon) w/debug & production
    (h5committest not required on this branch)
This commit is contained in:
Quincey Koziol 2011-04-21 08:55:52 -05:00
parent 7c921910d0
commit 8a5e400fda
30 changed files with 98 additions and 129 deletions

View File

@ -485,7 +485,7 @@ H5AC_create(const H5F_t *f,
HGOTO_ERROR(H5E_ARGS, H5E_BADVALUE, FAIL, "Bad cache configuration")
#ifdef H5_HAVE_PARALLEL
if ( H5F_HAS_FEATURE(f,H5FD_FEAT_HAS_MPI) ) {
if(H5F_HAS_FEATURE(f, H5FD_FEAT_HAS_MPI)) {
MPI_Comm mpi_comm;
int mpi_rank;
int mpi_size;

View File

@ -8133,7 +8133,7 @@ H5C_flush_single_entry(H5F_t * f,
*/
if ( ( ! clear_only ) &&
( entry_ptr->is_dirty ) &&
( H5F_HAS_FEATURE(f,H5FD_FEAT_HAS_MPI) ) ) {
(H5F_HAS_FEATURE(f, H5FD_FEAT_HAS_MPI) ) ) {
H5P_genplist_t *dxpl; /* Dataset transfer property list */
H5FD_mpio_xfer_t xfer_mode; /* I/O xfer mode property value */

View File

@ -3164,7 +3164,7 @@ H5D_chunk_allocate(H5D_t *dset, hid_t dxpl_id, hbool_t full_overwrite,
#ifdef H5_HAVE_PARALLEL
/* Retrieve MPI parameters */
if(H5F_HAS_FEATURE(dset->oloc.file,H5FD_FEAT_HAS_MPI)) {
if(H5F_HAS_FEATURE(dset->oloc.file, H5FD_FEAT_HAS_MPI)) {
/* Get the MPI communicator */
if(MPI_COMM_NULL == (mpi_comm = H5F_mpi_get_comm(dset->oloc.file)))
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator")

View File

@ -225,7 +225,7 @@ H5D_contig_fill(H5D_t *dset, hid_t dxpl_id)
#ifdef H5_HAVE_PARALLEL
/* Retrieve MPI parameters */
if(H5F_HAS_FEATURE(dset->oloc.file,H5FD_FEAT_HAS_MPI)) {
if(H5F_HAS_FEATURE(dset->oloc.file, H5FD_FEAT_HAS_MPI)) {
/* Get the MPI communicator */
if(MPI_COMM_NULL == (mpi_comm = H5F_mpi_get_comm(dset->oloc.file)))
HGOTO_ERROR(H5E_INTERNAL, H5E_MPI, FAIL, "Can't retrieve MPI communicator")

View File

@ -1003,7 +1003,7 @@ H5D_create(H5F_t *file, hid_t type_id, const H5S_t *space, hid_t dcpl_id,
HGOTO_ERROR(H5E_DATASET, H5E_BADVALUE, NULL, "compact dataset must have early space allocation")
/* If MPI VFD is used, no filter support yet. */
if(H5F_HAS_FEATURE(file,H5FD_FEAT_HAS_MPI) && pline->nused > 0)
if(H5F_HAS_FEATURE(file, H5FD_FEAT_HAS_MPI) && pline->nused > 0)
HGOTO_ERROR(H5E_DATASET, H5E_UNSUPPORTED, NULL, "Parallel I/O does not support filters yet")
/* Get the dataset's external file list information */
@ -1023,7 +1023,7 @@ H5D_create(H5F_t *file, hid_t type_id, const H5S_t *space, hid_t dcpl_id,
} /* end if */
/* Check if this dataset is going into a parallel file and set space allocation time */
if(H5F_HAS_FEATURE(file,H5FD_FEAT_ALLOCATE_EARLY))
if(H5F_HAS_FEATURE(file, H5FD_FEAT_ALLOCATE_EARLY))
new_dset->shared->dcpl_cache.fill.alloc_time = H5D_ALLOC_TIME_EARLY;
/* Set the dataset's I/O operations */
@ -1305,7 +1305,7 @@ H5D_open_oid(H5D_t *dataset, hid_t dapl_id, hid_t dxpl_id)
*/
if((H5F_INTENT(dataset->oloc.file) & H5F_ACC_RDWR)
&& !(*dataset->shared->layout.ops->is_space_alloc)(&dataset->shared->layout.storage)
&& H5F_HAS_FEATURE(dataset->oloc.file,H5FD_FEAT_ALLOCATE_EARLY)) {
&& H5F_HAS_FEATURE(dataset->oloc.file, H5FD_FEAT_ALLOCATE_EARLY)) {
if(H5D_alloc_storage(dataset, dxpl_id, H5D_ALLOC_OPEN, FALSE, NULL) < 0)
HGOTO_ERROR(H5E_DATASET, H5E_CANTINIT, FAIL, "unable to initialize file storage")
} /* end if */

View File

@ -340,7 +340,7 @@ H5D_read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
#ifdef H5_HAVE_PARALLEL
/* Collective access is not permissible without a MPI based VFD */
if(dxpl_cache->xfer_mode == H5FD_MPIO_COLLECTIVE &&
!(H5F_HAS_FEATURE(dataset->oloc.file,H5FD_FEAT_HAS_MPI)))
!(H5F_HAS_FEATURE(dataset->oloc.file, H5FD_FEAT_HAS_MPI)))
HGOTO_ERROR(H5E_DATASET, H5E_UNSUPPORTED, FAIL, "collective access for MPI-based drivers only")
#endif /*H5_HAVE_PARALLEL*/
@ -544,7 +544,7 @@ H5D_write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space,
/* Various MPI based checks */
#ifdef H5_HAVE_PARALLEL
if H5F_HAS_FEATURE(dataset->oloc.file,H5FD_FEAT_HAS_MPI) {
if H5F_HAS_FEATURE(dataset->oloc.file, H5FD_FEAT_HAS_MPI) {
/* If MPI based VFD is used, no VL datatype support yet. */
/* This is because they use the global heap in the file and we don't */
/* support parallel access of that yet */
@ -769,7 +769,7 @@ H5D_ioinfo_init(H5D_t *dset, const H5D_dxpl_cache_t *dxpl_cache, hid_t dxpl_id,
#ifdef H5_HAVE_PARALLEL
/* Determine if the file was opened with an MPI VFD */
io_info->using_mpi_vfd = H5F_HAS_FEATURE(dset->oloc.file,H5FD_FEAT_HAS_MPI);
io_info->using_mpi_vfd = H5F_HAS_FEATURE(dset->oloc.file, H5FD_FEAT_HAS_MPI);
#endif /* H5_HAVE_PARALLEL */
FUNC_LEAVE_NOAPI(SUCCEED)

View File

@ -35,19 +35,6 @@
#include "H5SMprivate.h" /* Shared Object Header Messages */
#include "H5Tprivate.h" /* Datatypes */
/* Predefined file drivers */
#include "H5FDcore.h" /*temporary in-memory files */
#include "H5FDfamily.h" /*family of files */
#include "H5FDlog.h" /* sec2 driver with logging, for debugging */
#include "H5FDmpi.h" /* MPI-based file drivers */
#include "H5FDmulti.h" /*multiple files partitioned by mem usage */
#include "H5FDsec2.h" /*Posix unbuffered I/O */
#include "H5FDstdio.h" /* Standard C buffered I/O */
#ifdef H5_HAVE_WINDOWS
#include "H5FDwindows.h" /* Windows buffered I/O */
#endif
#include "H5FDdirect.h" /*Linux direct I/O */
/* Struct only used by functions H5F_get_objects and H5F_get_objects_cb */
typedef struct H5F_olist_t {
H5I_type_t obj_type; /* Type of object to look for */
@ -934,7 +921,7 @@ H5F_new(H5F_file_t *shared, hid_t fcpl_id, hid_t fapl_id, H5FD_t *lf)
* merged into the trunk and journaling is enabled, at least until
* we make it work. - QAK)
*/
f->shared->use_tmp_space = !H5F_HAS_FEATURE(f,H5FD_FEAT_HAS_MPI);
f->shared->use_tmp_space = !H5F_HAS_FEATURE(f, H5FD_FEAT_HAS_MPI);
/*
* Create a metadata cache with the specified number of elements.

View File

@ -97,7 +97,7 @@ static herr_t H5FD_free_cls(H5FD_class_t *cls);
* object and the file is closed and re-opened, the 'fileno' value will
* be different.
*/
static unsigned long file_serial_no;
static unsigned long H5FD_file_serial_no_g;
/*-------------------------------------------------------------------------
@ -153,7 +153,7 @@ H5FD_init_interface(void)
HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, FAIL, "unable to initialize interface")
/* Reset the file serial numbers */
file_serial_no = 0;
H5FD_file_serial_no_g = 0;
done:
FUNC_LEAVE_NOAPI(ret_value)
@ -221,15 +221,24 @@ H5FD_term_interface(void)
static herr_t
H5FD_free_cls(H5FD_class_t *cls)
{
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_free_cls)
herr_t ret_value = SUCCEED;
// Give the File driver a chance to free singletons or other objects
// which will become invalid once the class structure is freed
if (cls && cls->terminate) cls->terminate();
FUNC_ENTER_NOAPI_NOINIT(H5FD_free_cls)
/* Sanity check */
HDassert(cls);
/* If the file driver has a terminate callback, call it to give the file
* driver a chance to free singletons or other resources which will become
* invalid once the class structure is freed.
*/
if(cls->terminate && cls->terminate() < 0)
HGOTO_ERROR(H5E_VFL, H5E_CANTCLOSEOBJ, FAIL, "virtual file driver '%s' did not terminate cleanly", cls->name)
H5MM_xfree(cls);
FUNC_LEAVE_NOAPI(SUCCEED)
done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5FD_free_cls() */
@ -1077,11 +1086,11 @@ H5FD_open(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, NULL, "unable to query file driver")
/* Increment the global serial number & assign it to this H5FD_t object */
if(++file_serial_no == 0) {
if(++H5FD_file_serial_no_g == 0) {
/* (Just error out if we wrap around for now...) */
HGOTO_ERROR(H5E_VFL, H5E_CANTINIT, NULL, "unable to get file serial number")
} /* end if */
file->fileno = file_serial_no;
file->fileno = H5FD_file_serial_no_g;
/* Start with base address set to 0 */
/* (This will be changed later, when the superblock is located) */

View File

@ -111,6 +111,7 @@ typedef struct H5FD_core_fapl_t {
(size_t)((A)+(Z))<(size_t)(A))
/* Prototypes */
static herr_t H5FD_core_term(void);
static void *H5FD_core_fapl_get(H5FD_t *_file);
static H5FD_t *H5FD_core_open(const char *name, unsigned flags, hid_t fapl_id,
haddr_t maxaddr);
@ -132,6 +133,7 @@ static const H5FD_class_t H5FD_core_g = {
"core", /*name */
MAXADDR, /*maxaddr */
H5F_CLOSE_WEAK, /*fc_degree */
H5FD_core_term, /*terminate */
NULL, /*sb_size */
NULL, /*sb_encode */
NULL, /*sb_decode */
@ -149,7 +151,6 @@ static const H5FD_class_t H5FD_core_g = {
NULL, /*get_type_map */
NULL, /*alloc */
NULL, /*free */
H5FD_core_term, /*terminate */
H5FD_core_get_eoa, /*get_eoa */
H5FD_core_set_eoa, /*set_eoa */
H5FD_core_get_eof, /*get_eof */
@ -226,16 +227,14 @@ done:
*
* Purpose: Shut down the VFD
*
* Return: <none>
* Returns: Non-negative on success or negative on failure
*
* Programmer: Quincey Koziol
* Friday, Jan 30, 2004
*
* Modification:
*
*---------------------------------------------------------------------------
*/
void
static herr_t
H5FD_core_term(void)
{
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_core_term)
@ -243,7 +242,7 @@ H5FD_core_term(void)
/* Reset VFL ID */
H5FD_CORE_g=0;
FUNC_LEAVE_NOAPI_VOID
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5FD_core_term() */

View File

@ -22,15 +22,12 @@
#ifndef H5FDcore_H
#define H5FDcore_H
#include "H5Ipublic.h"
#define H5FD_CORE (H5FD_core_init())
#ifdef __cplusplus
extern "C" {
#endif
H5_DLL hid_t H5FD_core_init(void);
H5_DLL void H5FD_core_term(void);
H5_DLL herr_t H5Pset_fapl_core(hid_t fapl_id, size_t increment,
hbool_t backing_store);
H5_DLL herr_t H5Pget_fapl_core(hid_t fapl_id, size_t *increment/*out*/,
@ -40,3 +37,4 @@ H5_DLL herr_t H5Pget_fapl_core(hid_t fapl_id, size_t *increment/*out*/,
#endif
#endif

View File

@ -155,6 +155,7 @@ typedef struct H5FD_direct_t {
(file_offset_t)((A)+(Z))<(file_offset_t)(A))
/* Prototypes */
static herr_t H5FD_direct_term(void);
static void *H5FD_direct_fapl_get(H5FD_t *file);
static void *H5FD_direct_fapl_copy(const void *_old_fa);
static H5FD_t *H5FD_direct_open(const char *name, unsigned flags, hid_t fapl_id,
@ -176,6 +177,7 @@ static const H5FD_class_t H5FD_direct_g = {
"direct", /*name */
MAXADDR, /*maxaddr */
H5F_CLOSE_WEAK, /* fc_degree */
H5FD_direct_term, /*terminate */
NULL, /*sb_size */
NULL, /*sb_encode */
NULL, /*sb_decode */
@ -272,16 +274,14 @@ done:
*
* Purpose: Shut down the VFD
*
* Return: <none>
* Returns: Non-negative on success or negative on failure
*
* Programmer: Raymond Lu
* Wednesday, 20 September 2006
*
* Modification:
*
*---------------------------------------------------------------------------
*/
void
static herr_t
H5FD_direct_term(void)
{
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_direct_term)
@ -289,7 +289,7 @@ H5FD_direct_term(void)
/* Reset VFL ID */
H5FD_DIRECT_g=0;
FUNC_LEAVE_NOAPI_VOID
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5FD_direct_term() */
@ -677,7 +677,7 @@ H5FD_direct_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
const H5FD_direct_t *f2 = (const H5FD_direct_t*)_f2;
int ret_value=0;
FUNC_ENTER_NOAPI(H5FD_direct_cmp, H5FD_VFD_DEFAULT)
FUNC_ENTER_NOAPI_NOFUNC_NONIT(H5FD_direct_cmp)
#ifdef _WIN32
if (f1->fileindexhi < f2->fileindexhi) HGOTO_DONE(-1)

View File

@ -22,8 +22,6 @@
#ifndef H5FDdirect_H
#define H5FDdirect_H
#include "H5Ipublic.h"
#ifdef H5_HAVE_DIRECT
# define H5FD_DIRECT (H5FD_direct_init())
#else
@ -42,7 +40,6 @@ extern "C" {
#define CBSIZE_DEF 16*1024*1024
H5_DLL hid_t H5FD_direct_init(void);
H5_DLL void H5FD_direct_term(void);
H5_DLL herr_t H5Pset_fapl_direct(hid_t fapl_id, size_t alignment, size_t block_size,
size_t cbuf_size);
H5_DLL herr_t H5Pget_fapl_direct(hid_t fapl_id, size_t *boundary/*out*/,
@ -55,3 +52,4 @@ H5_DLL herr_t H5Pget_fapl_direct(hid_t fapl_id, size_t *boundary/*out*/,
#endif /* H5_HAVE_DIRECT */
#endif

View File

@ -88,6 +88,7 @@ typedef struct H5FD_family_dxpl_t {
} H5FD_family_dxpl_t;
/* Callback prototypes */
static herr_t H5FD_family_term(void);
static void *H5FD_family_fapl_get(H5FD_t *_file);
static void *H5FD_family_fapl_copy(const void *_old_fa);
static herr_t H5FD_family_fapl_free(void *_fa);
@ -119,6 +120,7 @@ static const H5FD_class_t H5FD_family_g = {
"family", /*name */
HADDR_MAX, /*maxaddr */
H5F_CLOSE_WEAK, /*fc_degree */
H5FD_family_term, /*terminate */
H5FD_family_sb_size, /*sb_size */
H5FD_family_sb_encode, /*sb_encode */
H5FD_family_sb_decode, /*sb_decode */
@ -136,7 +138,6 @@ static const H5FD_class_t H5FD_family_g = {
NULL, /*get_type_map */
NULL, /*alloc */
NULL, /*free */
H5FD_family_term, /*terminate */
H5FD_family_get_eoa, /*get_eoa */
H5FD_family_set_eoa, /*set_eoa */
H5FD_family_get_eof, /*get_eof */
@ -213,16 +214,14 @@ done:
*
* Purpose: Shut down the VFD
*
* Return: <none>
* Returns: Non-negative on success or negative on failure
*
* Programmer: Quincey Koziol
* Friday, Jan 30, 2004
*
* Modification:
*
*---------------------------------------------------------------------------
*/
void
static herr_t
H5FD_family_term(void)
{
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_family_term)
@ -230,7 +229,7 @@ H5FD_family_term(void)
/* Reset VFL ID */
H5FD_FAMILY_g=0;
FUNC_LEAVE_NOAPI_VOID
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5FD_family_term() */
@ -958,18 +957,18 @@ H5FD_family_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
{
const H5FD_family_t *f1 = (const H5FD_family_t*)_f1;
const H5FD_family_t *f2 = (const H5FD_family_t*)_f2;
int ret_value=(H5FD_VFD_DEFAULT);
int ret_value = 0;
FUNC_ENTER_NOAPI(H5FD_family_cmp, H5FD_VFD_DEFAULT)
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_family_cmp)
assert(f1->nmembs>=1 && f1->memb[0]);
assert(f2->nmembs>=1 && f2->memb[0]);
HDassert(f1->nmembs >= 1 && f1->memb[0]);
HDassert(f2->nmembs >= 1 && f2->memb[0]);
ret_value= H5FDcmp(f1->memb[0], f2->memb[0]);
ret_value = H5FDcmp(f1->memb[0], f2->memb[0]);
done:
FUNC_LEAVE_NOAPI(ret_value)
}
} /* end H5FD_family_cmp() */
/*-------------------------------------------------------------------------

View File

@ -22,8 +22,6 @@
#ifndef H5FDfamily_H
#define H5FDfamily_H
#include "H5Ipublic.h"
#define H5FD_FAMILY (H5FD_family_init())
#ifdef __cplusplus
@ -31,7 +29,6 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_family_init(void);
H5_DLL void H5FD_family_term(void);
H5_DLL herr_t H5Pset_fapl_family(hid_t fapl_id, hsize_t memb_size,
hid_t memb_fapl_id);
H5_DLL herr_t H5Pget_fapl_family(hid_t fapl_id, hsize_t *memb_size/*out*/,
@ -42,3 +39,4 @@ H5_DLL herr_t H5Pget_fapl_family(hid_t fapl_id, hsize_t *memb_size/*out*/,
#endif
#endif

View File

@ -161,6 +161,7 @@ typedef struct H5FD_log_t {
(HDoff_t)((A)+(Z))<(HDoff_t)(A))
/* Prototypes */
static herr_t H5FD_log_term(void);
static void *H5FD_log_fapl_get(H5FD_t *file);
static void *H5FD_log_fapl_copy(const void *_old_fa);
static herr_t H5FD_log_fapl_free(void *_fa);
@ -184,6 +185,7 @@ static const H5FD_class_t H5FD_log_g = {
"log", /*name */
MAXADDR, /*maxaddr */
H5F_CLOSE_WEAK, /* fc_degree */
H5FD_log_term, /*terminate */
NULL, /*sb_size */
NULL, /*sb_encode */
NULL, /*sb_decode */
@ -201,7 +203,6 @@ static const H5FD_class_t H5FD_log_g = {
NULL, /*get_type_map */
H5FD_log_alloc, /*alloc */
NULL, /*free */
H5FD_log_term, /*terminate */
H5FD_log_get_eoa, /*get_eoa */
H5FD_log_set_eoa, /*set_eoa */
H5FD_log_get_eof, /*get_eof */
@ -278,14 +279,14 @@ done:
*
* Purpose: Shut down the VFD
*
* Return: <none>
* Returns: Non-negative on success or negative on failure
*
* Programmer: Quincey Koziol
* Friday, Jan 30, 2004
*
*---------------------------------------------------------------------------
*/
void
static herr_t
H5FD_log_term(void)
{
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_log_term)
@ -293,7 +294,7 @@ H5FD_log_term(void)
/* Reset VFL ID */
H5FD_LOG_g = 0;
FUNC_LEAVE_NOAPI_VOID
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5FD_log_term() */

View File

@ -22,8 +22,6 @@
#ifndef H5FDlog_H
#define H5FDlog_H
#include "H5Ipublic.h"
#define H5FD_LOG (H5FD_log_init())
/* Flags for H5Pset_fapl_log() */
@ -61,7 +59,6 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_log_init(void);
H5_DLL void H5FD_log_term(void);
H5_DLL herr_t H5Pset_fapl_log(hid_t fapl_id, const char *logfile, unsigned long long flags, size_t buf_size);
#ifdef __cplusplus

View File

@ -65,6 +65,7 @@ typedef struct H5FD_mpio_t {
/* Private Prototypes */
/* Callbacks */
static herr_t H5FD_mpio_term(void);
static void *H5FD_mpio_fapl_get(H5FD_t *_file);
static void *H5FD_mpio_fapl_copy(const void *_old_fa);
static herr_t H5FD_mpio_fapl_free(void *_fa);
@ -98,6 +99,7 @@ static const H5FD_class_mpi_t H5FD_mpio_g = {
"mpio", /*name */
HADDR_MAX, /*maxaddr */
H5F_CLOSE_SEMI, /* fc_degree */
H5FD_mpio_term, /*terminate */
NULL, /*sb_size */
NULL, /*sb_encode */
NULL, /*sb_decode */
@ -115,7 +117,6 @@ static const H5FD_class_mpi_t H5FD_mpio_g = {
NULL, /*get_type_map */
NULL, /*alloc */
NULL, /*free */
H5FD_mpio_term, /*terminate */
H5FD_mpio_get_eoa, /*get_eoa */
H5FD_mpio_set_eoa, /*set_eoa */
H5FD_mpio_get_eof, /*get_eof */
@ -235,16 +236,14 @@ done:
*
* Purpose: Shut down the VFD
*
* Return: <none>
* Returns: Non-negative on success or negative on failure
*
* Programmer: Quincey Koziol
* Friday, Jan 30, 2004
*
* Modification:
*
*---------------------------------------------------------------------------
*/
void
static herr_t
H5FD_mpio_term(void)
{
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_mpio_term)
@ -252,7 +251,7 @@ H5FD_mpio_term(void)
/* Reset VFL ID */
H5FD_MPIO_g=0;
FUNC_LEAVE_NOAPI_VOID
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5FD_mpio_term() */

View File

@ -46,7 +46,6 @@
extern "C" {
#endif
H5_DLL hid_t H5FD_mpio_init(void);
H5_DLL void H5FD_mpio_term(void);
H5_DLL herr_t H5Pset_fapl_mpio(hid_t fapl_id, MPI_Comm comm, MPI_Info info);
H5_DLL herr_t H5Pget_fapl_mpio(hid_t fapl_id, MPI_Comm *comm/*out*/,
MPI_Info *info/*out*/);
@ -63,3 +62,4 @@ H5_DLL herr_t H5Pset_dxpl_mpio_chunk_opt_ratio(hid_t dxpl_id, unsigned percent_n
#endif /* H5_HAVE_PARALLEL */
#endif

View File

@ -174,6 +174,7 @@ typedef struct H5FD_mpiposix_t {
(file_offset_t)((A)+(Z))<(file_offset_t)(A))
/* Callbacks */
static herr_t H5FD_mpiposix_term(void);
static void *H5FD_mpiposix_fapl_get(H5FD_t *_file);
static void *H5FD_mpiposix_fapl_copy(const void *_old_fa);
static herr_t H5FD_mpiposix_fapl_free(void *_fa);
@ -207,6 +208,7 @@ static const H5FD_class_mpi_t H5FD_mpiposix_g = {
"mpiposix", /*name */
MAXADDR, /*maxaddr */
H5F_CLOSE_SEMI, /* fc_degree */
H5FD_mpiposix_term, /*terminate */
NULL, /*sb_size */
NULL, /*sb_encode */
NULL, /*sb_decode */
@ -224,7 +226,6 @@ static const H5FD_class_mpi_t H5FD_mpiposix_g = {
NULL, /*get_type_map */
NULL, /*alloc */
NULL, /*free */
H5FD_mpiposix_term, /*terminate */
H5FD_mpiposix_get_eoa, /*get_eoa */
H5FD_mpiposix_set_eoa, /*set_eoa */
H5FD_mpiposix_get_eof, /*get_eof */
@ -305,16 +306,14 @@ done:
*
* Purpose: Shut down the VFD
*
* Return: <none>
* Returns: Non-negative on success or negative on failure
*
* Programmer: Quincey Koziol
* Friday, Jan 30, 2004
*
* Modification:
*
*---------------------------------------------------------------------------
*/
void
static herr_t
H5FD_mpiposix_term(void)
{
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_mpiposix_term)
@ -322,7 +321,7 @@ H5FD_mpiposix_term(void)
/* Reset VFL ID */
H5FD_MPIPOSIX_g=0;
FUNC_LEAVE_NOAPI_VOID
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5FD_mpiposix_term() */
@ -869,7 +868,7 @@ H5FD_mpiposix_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
const H5FD_mpiposix_t *f2 = (const H5FD_mpiposix_t*)_f2;
int ret_value=0;
FUNC_ENTER_NOAPI(H5FD_mpiposix_cmp, H5FD_VFD_DEFAULT)
FUNC_ENTER_NOAPI_NOFUNC_NOINIT(H5FD_mpiposix_cmp)
#ifdef _WIN32
if (f1->fileindexhi < f2->fileindexhi) HGOTO_DONE(-1)

View File

@ -42,7 +42,6 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_mpiposix_init(void);
H5_DLL void H5FD_mpiposix_term(void);
H5_DLL herr_t H5Pset_fapl_mpiposix(hid_t fapl_id, MPI_Comm comm, hbool_t use_gpfs);
H5_DLL herr_t H5Pget_fapl_mpiposix(hid_t fapl_id, MPI_Comm *comm/*out*/, hbool_t *use_gpfs/*out*/);

View File

@ -115,6 +115,7 @@ static int compute_next(H5FD_multi_t *file);
static int open_members(H5FD_multi_t *file);
/* Callback prototypes */
static herr_t H5FD_multi_term(void);
static hsize_t H5FD_multi_sb_size(H5FD_t *file);
static herr_t H5FD_multi_sb_encode(H5FD_t *file, char *name/*out*/,
unsigned char *buf/*out*/);
@ -150,6 +151,7 @@ static const H5FD_class_t H5FD_multi_g = {
"multi", /*name */
HADDR_MAX, /*maxaddr */
H5F_CLOSE_WEAK, /* fc_degree */
H5FD_multi_term, /*terminate */
H5FD_multi_sb_size, /*sb_size */
H5FD_multi_sb_encode, /*sb_encode */
H5FD_multi_sb_decode, /*sb_decode */
@ -167,7 +169,6 @@ static const H5FD_class_t H5FD_multi_g = {
H5FD_multi_get_type_map, /*get_type_map */
H5FD_multi_alloc, /*alloc */
H5FD_multi_free, /*free */
H5FD_multi_term, /*terminate */
H5FD_multi_get_eoa, /*get_eoa */
H5FD_multi_set_eoa, /*set_eoa */
H5FD_multi_get_eof, /*get_eof */
@ -248,21 +249,20 @@ H5FD_multi_init(void)
*
* Purpose: Shut down the VFD
*
* Return: <none>
* Returns: Non-negative on success or negative on failure
*
* Programmer: Quincey Koziol
* Friday, Jan 30, 2004
*
* Modification:
*
*---------------------------------------------------------------------------
*/
void
static herr_t
H5FD_multi_term(void)
{
/* Reset VFL ID */
H5FD_MULTI_g=0;
return 0;
} /* end H5FD_multi_term() */

View File

@ -22,17 +22,12 @@
#ifndef H5FDmulti_H
#define H5FDmulti_H
#include "H5Ipublic.h"
#include "H5Ppublic.h" /* Property lists */
#include "H5Fpublic.h"
#define H5FD_MULTI (H5FD_multi_init())
#ifdef __cplusplus
extern "C" {
#endif
H5_DLL hid_t H5FD_multi_init(void);
H5_DLL void H5FD_multi_term(void);
H5_DLL herr_t H5Pset_fapl_multi(hid_t fapl_id, const H5FD_mem_t *memb_map,
const hid_t *memb_fapl, const char * const *memb_name,
const haddr_t *memb_addr, hbool_t relax);
@ -50,3 +45,4 @@ H5_DLL herr_t H5Pset_fapl_split(hid_t fapl, const char *meta_ext,
#endif
#endif

View File

@ -25,7 +25,6 @@
#define H5_HAVE_VFL 1 /*define a convenient app feature test*/
#define H5FD_VFD_DEFAULT 0 /* Default VFL driver value */
#define H5_HAVE_VFD_EXTENSIONS 1 /*Extensions to VFD to allow external VFD linking */
/* Types of allocation requests: see H5Fpublic.h */
typedef enum H5F_mem_t H5FD_mem_t;
@ -232,6 +231,7 @@ typedef struct H5FD_class_t {
const char *name;
haddr_t maxaddr;
H5F_close_degree_t fc_degree;
herr_t (*terminate)(void);
hsize_t (*sb_size)(H5FD_t *file);
herr_t (*sb_encode)(H5FD_t *file, char *name/*out*/,
unsigned char *p/*out*/);
@ -252,9 +252,6 @@ typedef struct H5FD_class_t {
haddr_t (*alloc)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size);
herr_t (*free)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id,
haddr_t addr, hsize_t size);
#ifdef H5_HAVE_VFD_EXTENSIONS
void (*terminate)();
#endif
haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type);
herr_t (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr);
haddr_t (*get_eof)(const H5FD_t *file);

View File

@ -127,6 +127,7 @@ typedef struct H5FD_sec2_t {
(HDoff_t)((A)+(Z))<(HDoff_t)(A))
/* Prototypes */
static herr_t H5FD_sec2_term(void);
static H5FD_t *H5FD_sec2_open(const char *name, unsigned flags, hid_t fapl_id,
haddr_t maxaddr);
static herr_t H5FD_sec2_close(H5FD_t *_file);
@ -146,6 +147,7 @@ static const H5FD_class_t H5FD_sec2_g = {
"sec2", /*name */
MAXADDR, /*maxaddr */
H5F_CLOSE_WEAK, /* fc_degree */
H5FD_sec2_term, /*terminate */
NULL, /*sb_size */
NULL, /*sb_encode */
NULL, /*sb_decode */
@ -163,7 +165,6 @@ static const H5FD_class_t H5FD_sec2_g = {
NULL, /*get_type_map */
NULL, /*alloc */
NULL, /*free */
H5FD_sec2_term, /*terminate */
H5FD_sec2_get_eoa, /*get_eoa */
H5FD_sec2_set_eoa, /*set_eoa */
H5FD_sec2_get_eof, /*get_eof */
@ -240,14 +241,14 @@ done:
*
* Purpose: Shut down the VFD
*
* Return: <none>
* Returns: Non-negative on success or negative on failure
*
* Programmer: Quincey Koziol
* Friday, Jan 30, 2004
*
*---------------------------------------------------------------------------
*/
void
static herr_t
H5FD_sec2_term(void)
{
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_sec2_term)
@ -255,7 +256,7 @@ H5FD_sec2_term(void)
/* Reset VFL ID */
H5FD_SEC2_g = 0;
FUNC_LEAVE_NOAPI_VOID
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5FD_sec2_term() */

View File

@ -22,8 +22,6 @@
#ifndef H5FDsec2_H
#define H5FDsec2_H
#include "H5Ipublic.h"
#define H5FD_SEC2 (H5FD_sec2_init())
#ifdef __cplusplus
@ -31,7 +29,6 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_sec2_init(void);
H5_DLL void H5FD_sec2_term(void);
H5_DLL herr_t H5Pset_fapl_sec2(hid_t fapl_id);
#ifdef __cplusplus

View File

@ -170,6 +170,7 @@ typedef struct H5FD_stdio_t {
HADDR_UNDEF==(A)+(Z) || (file_offset_t)((A)+(Z))<(file_offset_t)(A))
/* Prototypes */
static herr_t H5FD_stdio_term(void);
static H5FD_t *H5FD_stdio_open(const char *name, unsigned flags,
hid_t fapl_id, haddr_t maxaddr);
static herr_t H5FD_stdio_close(H5FD_t *lf);
@ -191,6 +192,7 @@ static const H5FD_class_t H5FD_stdio_g = {
"stdio", /*name */
MAXADDR, /*maxaddr */
H5F_CLOSE_WEAK, /* fc_degree */
H5FD_stdio_term, /*terminate */
NULL, /*sb_size */
NULL, /*sb_encode */
NULL, /*sb_decode */
@ -208,7 +210,6 @@ static const H5FD_class_t H5FD_stdio_g = {
NULL, /*get_type_map */
H5FD_stdio_alloc, /*alloc */
NULL, /*free */
H5FD_stdio_term, /*terminate */
H5FD_stdio_get_eoa, /*get_eoa */
H5FD_stdio_set_eoa, /*set_eoa */
H5FD_stdio_get_eof, /*get_eof */
@ -258,21 +259,20 @@ H5FD_stdio_init(void)
*
* Purpose: Shut down the VFD
*
* Return: <none>
* Returns: Non-negative on success or negative on failure
*
* Programmer: Quincey Koziol
* Friday, Jan 30, 2004
*
* Modification:
*
*---------------------------------------------------------------------------
*/
void
static herr_t
H5FD_stdio_term(void)
{
/* Reset VFL ID */
H5FD_STDIO_g=0;
return 0;
} /* end H5FD_stdio_term() */

View File

@ -31,7 +31,6 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_stdio_init(void);
H5_DLL void H5FD_stdio_term(void);
H5_DLL herr_t H5Pset_fapl_stdio(hid_t fapl_id);
#ifdef __cplusplus

View File

@ -127,6 +127,7 @@ typedef struct H5FD_windows_t {
(fseek_offset_t)((A)+(Z))<(fseek_offset_t)(A))
/* Prototypes */
static herr_t H5FD_windows_term(void);
static H5FD_t *H5FD_windows_open(const char *name, unsigned flags, hid_t fapl_id,
haddr_t maxaddr);
static herr_t H5FD_windows_close(H5FD_t *_file);
@ -149,6 +150,7 @@ static const H5FD_class_t H5FD_windows_g = {
"windows", /*name */
MAXADDR, /*maxaddr */
H5F_CLOSE_WEAK, /* fc_degree */
H5FD_windows_term, /*terminate */
NULL, /*sb_size */
NULL, /*sb_encode */
NULL, /*sb_decode */
@ -166,7 +168,6 @@ static const H5FD_class_t H5FD_windows_g = {
NULL, /*get_type_map */
NULL, /*alloc */
NULL, /*free */
H5FD_windows_term, /*terminate */
H5FD_windows_get_eoa, /*get_eoa */
H5FD_windows_set_eoa, /*set_eoa */
H5FD_windows_get_eof, /*get_eof */
@ -241,17 +242,14 @@ done:
*
* Purpose: Shut down the VFD
*
* Return: <none>
* Returns: Non-negative on success or negative on failure
*
* Programmer: Scott Wegner
* Based on code by Quincey Koziol
* Thursday, May 24 2007
*
* Modification:
*
*---------------------------------------------------------------------------
*/
void
static herr_t
H5FD_windows_term(void)
{
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_windows_term)
@ -259,7 +257,7 @@ H5FD_windows_term(void)
/* Reset VFL ID */
H5FD_WINDOWS_g=0;
FUNC_LEAVE_NOAPI_VOID
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5FD_windows_term() */
/*-------------------------------------------------------------------------
@ -513,10 +511,10 @@ H5FD_windows_cmp(const H5FD_t *_f1, const H5FD_t *_f2)
const H5FD_windows_t *f2 = (const H5FD_windows_t*)_f2;
int ret_value=0;
FUNC_ENTER_NOAPI(H5FD_windows_cmp, H5FD_VFD_DEFAULT)
FUNC_ENTER_NOAPI_NOINIT_NOFUNC(H5FD_windows_cmp)
if (f1->volumeserialnumber < f2->volumeserialnumber) HGOTO_DONE(-1)
if (f1->volumeserialnumber > f2->volumeserialnumber) HGOTO_DONE(1)
if (f1->volumeserialnumber < f2->volumeserialnumber) HGOTO_DONE(-1)
if (f1->volumeserialnumber > f2->volumeserialnumber) HGOTO_DONE(1)
if (f1->fileindexhi < f2->fileindexhi) HGOTO_DONE(-1)
if (f1->fileindexhi > f2->fileindexhi) HGOTO_DONE(1)

View File

@ -23,8 +23,6 @@
#ifndef H5FDwindows_H
#define H5FDwindows_H
#include "H5Ipublic.h"
#define H5FD_WINDOWS (H5FD_windows_init())
#ifdef __cplusplus
@ -32,7 +30,6 @@ extern "C" {
#endif
H5_DLL hid_t H5FD_windows_init(void);
H5_DLL void H5FD_windows_term(void);
H5_DLL herr_t H5Pset_fapl_windows(hid_t fapl_id);
#ifdef __cplusplus
@ -40,3 +37,4 @@ H5_DLL herr_t H5Pset_fapl_windows(hid_t fapl_id);
#endif
#endif

View File

@ -41,6 +41,7 @@
/* Predefined file drivers */
#include "H5FDcore.h" /* Files stored entirely in memory */
#include "H5FDdirect.h" /* Linux direct I/O */
#include "H5FDfamily.h" /* File families */
#include "H5FDlog.h" /* sec2 driver with I/O logging (for debugging) */
#include "H5FDmpi.h" /* MPI-based file drivers */
@ -50,6 +51,5 @@
#ifdef H5_HAVE_WINDOWS
#include "H5FDwindows.h" /* Windows buffered I/O */
#endif
#include "H5FDdirect.h" /* Linux direct I/O */
#endif