mirror of
https://github.com/HDFGroup/hdf5.git
synced 2026-09-25 04:09:44 +03:00
- Reverts PR#1024, which (unnecessarily) switched from deferred package initialization to centralized initialization of all packages and introduced H5FDperform_init() to wrap an internal routine to initialize VFD plugins. - Went back to deferred package initialization (primarily), to eliminate unnecessary resource use. (Performance has been verified to be the same either way) - Switched VFD plugins to use “#define (H5OPEN, )” pattern, with registration of internal VFD plugins at library initialization time. Eliminates calling API routine (H5FDperform_init) from within the library, which was deadlocking threadsafe concurrency. And also eliminates exposing internal library routines in a public header file. - Removed copy-and-paste replicas of the H5OPEN macro and put a (better) single definition in H5public.h - Separated API and internal routine calls in stdio and multi VFD plugins into separate source files, so that the library doesn’t invoke API routines internally (also a deadlock problem for threadsafe concurrency). Also needed a “private” header for these plugins. - Separated registering/unregistering a VFD plugin from initializing /finalizing the plugin, instead of blurring those ideas together. Defers the VFD plugin init to when it’s actually used, which reduces resource usage, especially for the MPI-based plugins like the subfiling, etc. - Refactored the copy-and-pasted check for locking into a central location in the H5FD.c code. - Fixed a bunch of compiler warnings, especially ones that trigger CI failures with -Werror
54 lines
2.0 KiB
C
54 lines
2.0 KiB
C
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
|
* Copyright by The HDF Group. *
|
|
* 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 LICENSE file, which can be found at the root of the source code *
|
|
* distribution tree, or in https://www.hdfgroup.org/licenses. *
|
|
* If you do not have access to either file, you may request a copy from *
|
|
* help@hdfgroup.org. *
|
|
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
|
|
|
/*-------------------------------------------------------------------------
|
|
*
|
|
* Created: H5ESprivate.h
|
|
*
|
|
* Purpose: Private header for library accessible event set routines.
|
|
*
|
|
*-------------------------------------------------------------------------
|
|
*/
|
|
|
|
#ifndef H5ESprivate_H
|
|
#define H5ESprivate_H
|
|
|
|
/* Include package's public headers */
|
|
#include "H5ESpublic.h"
|
|
#include "H5ESdevelop.h"
|
|
|
|
/* Private headers needed by this file */
|
|
#include "H5VLprivate.h" /* Virtual Object Layer */
|
|
|
|
/**************************/
|
|
/* Library Private Macros */
|
|
/**************************/
|
|
|
|
/****************************/
|
|
/* Library Private Typedefs */
|
|
/****************************/
|
|
|
|
/* Typedef for event set objects */
|
|
typedef struct H5ES_t H5ES_t;
|
|
|
|
/*****************************/
|
|
/* Library-private Variables */
|
|
/*****************************/
|
|
|
|
/***************************************/
|
|
/* Library-private Function Prototypes */
|
|
/***************************************/
|
|
herr_t H5ES_insert(hid_t es_id, H5VL_connector_t *connector, void *token, const char *caller,
|
|
const char *caller_args, ...);
|
|
|
|
#endif /* H5ESprivate_H */
|