HDF5  1.12.0
H5CXprivate.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group. *
3  * All rights reserved. *
4  * *
5  * This file is part of HDF5. The full HDF5 copyright notice, including *
6  * terms governing use, modification, and redistribution, is contained in *
7  * the COPYING file, which can be found at the root of the source code *
8  * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
9  * If you do not have access to either file, you may request a copy from *
10  * help@hdfgroup.org. *
11  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
12 
13 /*
14  * Header file for API contexts, etc.
15  */
16 #ifndef _H5CXprivate_H
17 #define _H5CXprivate_H
18 
19 /* Include package's public header */
20 #ifdef NOT_YET
21 #include "H5CXpublic.h"
22 #endif /* NOT_YET */
23 
24 /* Private headers needed by this file */
25 #include "H5private.h" /* Generic Functions */
26 #include "H5ACprivate.h" /* Metadata cache */
27 #ifdef H5_HAVE_PARALLEL
28 #include "H5FDprivate.h" /* File drivers */
29 #endif /* H5_HAVE_PARALLEL */
30 #include "H5Zprivate.h" /* Data filters */
31 
32 
33 /**************************/
34 /* Library Private Macros */
35 /**************************/
36 
37 
38 /****************************/
39 /* Library Private Typedefs */
40 /****************************/
41 
42 /* API context state */
43 typedef struct H5CX_state_t {
44  hid_t dcpl_id; /* DCPL for operation */
45  hid_t dxpl_id; /* DXPL for operation */
46  hid_t lapl_id; /* LAPL for operation */
47  hid_t lcpl_id; /* LCPL for operation */
48  void *vol_wrap_ctx; /* VOL connector's "wrap context" for creating IDs */
49  H5VL_connector_prop_t vol_connector_prop; /* VOL connector property */
50 
51 #ifdef H5_HAVE_PARALLEL
52  /* Internal: Parallel I/O settings */
53  hbool_t coll_metadata_read; /* Whether to use collective I/O for metadata read */
54 #endif /* H5_HAVE_PARALLEL */
56 
57 
58 /*****************************/
59 /* Library-private Variables */
60 /*****************************/
61 
62 
63 /***************************************/
64 /* Library-private Function Prototypes */
65 /***************************************/
66 
67 /* Library private routines */
68 #ifndef _H5private_H
69 H5_DLL herr_t H5CX_push(void);
70 H5_DLL herr_t H5CX_pop(void);
71 #endif /* _H5private_H */
72 H5_DLL void H5CX_push_special(void);
74 
75 /* API context state routines */
79 
80 /* "Setter" routines for API context info */
81 H5_DLL void H5CX_set_dxpl(hid_t dxpl_id);
82 H5_DLL void H5CX_set_lcpl(hid_t lcpl_id);
83 H5_DLL void H5CX_set_lapl(hid_t lapl_id);
84 H5_DLL void H5CX_set_dcpl(hid_t dcpl_id);
86 H5_DLL herr_t H5CX_set_apl(hid_t *acspl_id, const H5P_libclass_t *libclass,
87  hid_t loc_id, hbool_t is_collective);
89 H5_DLL herr_t H5CX_set_vol_wrap_ctx(void *wrap_ctx);
91 
92 /* "Getter" routines for API context info */
95 H5_DLL herr_t H5CX_get_vol_wrap_ctx(void **wrap_ctx);
99 #ifdef H5_HAVE_PARALLEL
100 H5_DLL hbool_t H5CX_get_coll_metadata_read(void);
101 H5_DLL herr_t H5CX_get_mpi_coll_datatypes(MPI_Datatype *btype, MPI_Datatype *ftype);
102 H5_DLL hbool_t H5CX_get_mpi_file_flushing(void);
103 H5_DLL hbool_t H5CX_get_mpio_rank0_bcast(void);
104 #endif /* H5_HAVE_PARALLEL */
105 
106 /* "Getter" routines for DXPL properties cached in API context */
107 H5_DLL herr_t H5CX_get_btree_split_ratios(double split_ratio[3]);
108 H5_DLL herr_t H5CX_get_max_temp_buf(size_t *max_temp_buf);
109 H5_DLL herr_t H5CX_get_tconv_buf(void **tconv_buf);
110 H5_DLL herr_t H5CX_get_bkgr_buf(void **bkgr_buf);
112 H5_DLL herr_t H5CX_get_vec_size(size_t *vec_size);
113 #ifdef H5_HAVE_PARALLEL
114 H5_DLL herr_t H5CX_get_io_xfer_mode(H5FD_mpio_xfer_t *io_xfer_mode);
115 H5_DLL herr_t H5CX_get_mpio_coll_opt(H5FD_mpio_collective_opt_t *mpio_coll_opt);
116 H5_DLL herr_t H5CX_get_mpio_local_no_coll_cause(uint32_t *mpio_local_no_coll_cause);
117 H5_DLL herr_t H5CX_get_mpio_global_no_coll_cause(uint32_t *mpio_global_no_coll_cause);
118 H5_DLL herr_t H5CX_get_mpio_chunk_opt_mode(H5FD_mpio_chunk_opt_t *mpio_chunk_opt_mode);
119 H5_DLL herr_t H5CX_get_mpio_chunk_opt_num(unsigned *mpio_chunk_opt_num);
120 H5_DLL herr_t H5CX_get_mpio_chunk_opt_ratio(unsigned *mpio_chunk_opt_ratio);
121 #endif /* H5_HAVE_PARALLEL */
127 
128 /* "Getter" routines for LCPL properties cached in API context */
130 H5_DLL herr_t H5CX_get_intermediate_group(unsigned* crt_intermed_group);
131 
132 /* "Getter" routines for LAPL properties cached in API context */
133 H5_DLL herr_t H5CX_get_nlinks(size_t *nlinks);
134 
135 /* "Getter" routines for DCPL properties cached in API context */
136 H5_DLL herr_t H5CX_get_dset_min_ohdr_flag(hbool_t *dset_min_ohdr_flag);
138 
139 /* "Getter" routines for DAPL properties cached in API context */
140 H5_DLL herr_t H5CX_get_ext_file_prefix(const char **prefix_extfile);
141 H5_DLL herr_t H5CX_get_vds_prefix(const char **prefix_vds);
142 
143 /* "Getter" routines for FAPL properties cached in API context */
145 
146 /* "Setter" routines for API context info */
147 H5_DLL void H5CX_set_tag(haddr_t tag);
148 H5_DLL void H5CX_set_ring(H5AC_ring_t ring);
149 #ifdef H5_HAVE_PARALLEL
150 H5_DLL void H5CX_set_coll_metadata_read(hbool_t cmdr);
151 H5_DLL herr_t H5CX_set_mpi_coll_datatypes(MPI_Datatype btype, MPI_Datatype ftype);
152 H5_DLL herr_t H5CX_set_mpio_coll_opt(H5FD_mpio_collective_opt_t mpio_coll_opt);
153 H5_DLL void H5CX_set_mpi_file_flushing(hbool_t flushing);
154 H5_DLL void H5CX_set_mpio_rank0_bcast(hbool_t rank0_bcast);
155 #endif /* H5_HAVE_PARALLEL */
156 
157 /* "Setter" routines for DXPL properties cached in API context */
158 #ifdef H5_HAVE_PARALLEL
159 H5_DLL herr_t H5CX_set_io_xfer_mode(H5FD_mpio_xfer_t io_xfer_mode);
160 #endif /* H5_HAVE_PARALLEL */
162  void *alloc_info, H5MM_free_t free_func, void *free_info);
163 
164 /* "Setter" routines for LAPL properties cached in API context */
165 H5_DLL herr_t H5CX_set_nlinks(size_t nlinks);
166 
167 /* "Setter" routines for cached DXPL properties that must be returned to application */
168 #ifdef H5_HAVE_PARALLEL
169 H5_DLL void H5CX_set_mpio_actual_chunk_opt(H5D_mpio_actual_chunk_opt_mode_t chunk_opt);
170 H5_DLL void H5CX_set_mpio_actual_io_mode(H5D_mpio_actual_io_mode_t actual_io_mode);
171 H5_DLL void H5CX_set_mpio_local_no_coll_cause(uint32_t mpio_local_no_coll_cause);
172 H5_DLL void H5CX_set_mpio_global_no_coll_cause(uint32_t mpio_global_no_coll_cause);
173 #ifdef H5_HAVE_INSTRUMENTED_LIBRARY
174 H5_DLL herr_t H5CX_test_set_mpio_coll_chunk_link_hard(int mpio_coll_chunk_link_hard);
175 H5_DLL herr_t H5CX_test_set_mpio_coll_chunk_multi_hard(int mpio_coll_chunk_multi_hard);
176 H5_DLL herr_t H5CX_test_set_mpio_coll_chunk_link_num_true(int mpio_coll_chunk_link_num_true);
177 H5_DLL herr_t H5CX_test_set_mpio_coll_chunk_link_num_false(int mpio_coll_chunk_link_num_false);
178 H5_DLL herr_t H5CX_test_set_mpio_coll_chunk_multi_ratio_coll(int mpio_coll_chunk_multi_ratio_coll);
179 H5_DLL herr_t H5CX_test_set_mpio_coll_chunk_multi_ratio_ind(int mpio_coll_chunk_multi_ratio_ind);
180 H5_DLL herr_t H5CX_test_set_mpio_coll_rank0_bcast(hbool_t rank0_bcast);
181 #endif /* H5_HAVE_INSTRUMENTED_LIBRARY */
182 #endif /* H5_HAVE_PARALLEL */
183 
184 #endif /* _H5CXprivate_H */
185 
H5CX_pop
H5_DLL herr_t H5CX_pop(void)
Definition: H5CX.c:3578
H5CX_get_data_transform
H5_DLL herr_t H5CX_get_data_transform(H5Z_data_xform_t **data_transform)
Definition: H5CX.c:2353
H5CX_restore_state
H5_DLL herr_t H5CX_restore_state(const H5CX_state_t *api_state)
Definition: H5CX.c:981
H5VL_connector_prop_t
Definition: H5VLprivate.h:45
H5CX_get_vol_connector_prop
H5_DLL herr_t H5CX_get_vol_connector_prop(H5VL_connector_prop_t *vol_connector_prop)
Definition: H5CX.c:1622
f
hdr f
Definition: H5EA.c:755
H5CX_get_btree_split_ratios
H5_DLL herr_t H5CX_get_btree_split_ratios(double split_ratio[3])
Definition: H5CX.c:1826
H5CX_set_vol_connector_prop
H5_DLL herr_t H5CX_set_vol_connector_prop(const H5VL_connector_prop_t *vol_connector_prop)
Definition: H5CX.c:1500
H5CX_get_libver_bounds
H5_DLL herr_t H5CX_get_libver_bounds(H5F_libver_t *low_bound, H5F_libver_t *high_bound)
Definition: H5CX.c:2609
H5T_conv_cb_t
Definition: H5Tprivate.h:81
H5FD_mpio_chunk_opt_t
H5FD_mpio_chunk_opt_t
Definition: H5FDmpi.h:44
H5CX_set_vlen_alloc_info
H5_DLL herr_t H5CX_set_vlen_alloc_info(H5MM_allocate_t alloc_func, void *alloc_info, H5MM_free_t free_func, void *free_info)
Definition: H5CX.c:3042
H5CX_get_vds_prefix
H5_DLL herr_t H5CX_get_vds_prefix(const char **prefix_vds)
Definition: H5CX.c:2740
uint32_t
uint32_t
Definition: H5overflow.txt:38
haddr_t
CATCH haddr_t
Definition: H5EAdblock.c:162
H5T_vlen_alloc_info_t
Definition: H5Tprivate.h:73
H5FD_mpio_collective_opt_t
H5FD_mpio_collective_opt_t
Definition: H5FDmpi.h:51
H5CX_get_bkgr_buf_type
H5_DLL herr_t H5CX_get_bkgr_buf_type(H5T_bkg_t *bkgr_buf_type)
Definition: H5CX.c:1966
H5CX_state_t::lapl_id
hid_t lapl_id
Definition: H5CXprivate.h:46
H5MM_free_t
void(* H5MM_free_t)(void *mem, void *free_info)
Definition: H5MMpublic.h:35
H5CX_set_lcpl
H5_DLL void H5CX_set_lcpl(hid_t lcpl_id)
Definition: H5CX.c:1224
uint8_t
unsigned char uint8_t
Definition: H5private.h:429
H5CX_get_lapl
H5_DLL hid_t H5CX_get_lapl(void)
Definition: H5CX.c:1560
H5CX_set_nlinks
H5_DLL herr_t H5CX_set_nlinks(size_t nlinks)
Definition: H5CX.c:3080
H5CX_state_t::dcpl_id
hid_t dcpl_id
Definition: H5CXprivate.h:44
H5CX_state_t::dxpl_id
hid_t dxpl_id
Definition: H5CXprivate.h:45
H5CX_state_t::vol_wrap_ctx
void * vol_wrap_ctx
Definition: H5CXprivate.h:48
H5CX_set_libver_bounds
H5_DLL herr_t H5CX_set_libver_bounds(H5F_t *f)
Definition: H5CX.c:1188
hid_t
int64_t hid_t
Definition: H5Ipublic.h:55
H5CX_get_tconv_buf
H5_DLL herr_t H5CX_get_tconv_buf(void **tconv_buf)
Definition: H5CX.c:1896
H5CX_retrieve_state
H5_DLL herr_t H5CX_retrieve_state(H5CX_state_t **api_state)
Definition: H5CX.c:856
H5CX_get_intermediate_group
H5_DLL herr_t H5CX_get_intermediate_group(unsigned *crt_intermed_group)
Definition: H5CX.c:2540
H5ACprivate.h
H5CX_set_ring
H5_DLL void H5CX_set_ring(H5AC_ring_t ring)
Definition: H5CX.c:2825
H5CX_get_dset_min_ohdr_flag
H5_DLL herr_t H5CX_get_dset_min_ohdr_flag(hbool_t *dset_min_ohdr_flag)
Definition: H5CX.c:2648
H5T_cset_t
H5T_cset_t
Definition: H5Tpublic.h:78
H5CX_get_vec_size
H5_DLL herr_t H5CX_get_vec_size(size_t *vec_size)
Definition: H5CX.c:2001
H5CX_get_filter_cb
H5_DLL herr_t H5CX_get_filter_cb(H5Z_cb_t *filter_cb)
Definition: H5CX.c:2318
H5CX_get_nlinks
H5_DLL herr_t H5CX_get_nlinks(size_t *nlinks)
Definition: H5CX.c:2575
H5CX_get_err_detect
H5_DLL herr_t H5CX_get_err_detect(H5Z_EDC_t *err_detect)
Definition: H5CX.c:2283
H5CX_get_ext_file_prefix
H5_DLL herr_t H5CX_get_ext_file_prefix(const char **prefix_extfile)
Definition: H5CX.c:2683
H5D_mpio_actual_chunk_opt_mode_t
H5D_mpio_actual_chunk_opt_mode_t
Definition: H5Ppublic.h:138
H5CX_get_tag
H5_DLL haddr_t H5CX_get_tag(void)
Definition: H5CX.c:1658
H5CX_set_dxpl
H5_DLL void H5CX_set_dxpl(hid_t dxpl_id)
Definition: H5CX.c:1130
H5CX_get_max_temp_buf
H5_DLL herr_t H5CX_get_max_temp_buf(size_t *max_temp_buf)
Definition: H5CX.c:1861
H5CX_set_apl
H5_DLL herr_t H5CX_set_apl(hid_t *acspl_id, const H5P_libclass_t *libclass, hid_t loc_id, hbool_t is_collective)
H5FDprivate.h
H5CX_get_encoding
H5_DLL herr_t H5CX_get_encoding(H5T_cset_t *encoding)
Definition: H5CX.c:2505
H5F_libver_t
H5F_libver_t
Definition: H5Fpublic.h:162
H5CX_set_tag
H5_DLL void H5CX_set_tag(haddr_t tag)
Definition: H5CX.c:2797
H5CX_set_dcpl
H5_DLL void H5CX_set_dcpl(hid_t dcpl_id)
Definition: H5CX.c:1159
H5AC_ring_t
H5C_ring_t H5AC_ring_t
Definition: H5ACprivate.h:149
H5CX_set_loc
H5_DLL herr_t H5CX_set_loc(hid_t loc_id)
H5_DLL
#define H5_DLL
Definition: H5api_adpt.h:234
H5CX_get_vol_wrap_ctx
H5_DLL herr_t H5CX_get_vol_wrap_ctx(void **wrap_ctx)
Definition: H5CX.c:1586
H5FD_mpio_xfer_t
H5FD_mpio_xfer_t
Definition: H5FDmpi.h:38
H5CX_get_dxpl
H5_DLL hid_t H5CX_get_dxpl(void)
Definition: H5CX.c:1534
H5Zprivate.h
H5CX_state_t::lcpl_id
hid_t lcpl_id
Definition: H5CXprivate.h:47
H5CX_get_dt_conv_cb
H5_DLL herr_t H5CX_get_dt_conv_cb(H5T_conv_cb_t *cb_struct)
Definition: H5CX.c:2470
H5CX_get_bkgr_buf
H5_DLL herr_t H5CX_get_bkgr_buf(void **bkgr_buf)
Definition: H5CX.c:1931
H5T_bkg_t
H5T_bkg_t
Definition: H5Tpublic.h:142
H5F_t
Definition: H5Fpkg.h:374
H5P_libclass_t
Definition: H5Pprivate.h:95
H5D_mpio_actual_io_mode_t
H5D_mpio_actual_io_mode_t
Definition: H5Ppublic.h:148
H5CX_get_ohdr_flags
H5_DLL herr_t H5CX_get_ohdr_flags(uint8_t *ohdr_flags)
Definition: H5CX.c:3488
H5CX_state_t
Definition: H5CXprivate.h:43
herr_t
int herr_t
Definition: H5public.h:128
H5CX_set_vol_wrap_ctx
H5_DLL herr_t H5CX_set_vol_wrap_ctx(void *wrap_ctx)
Definition: H5CX.c:1466
H5CX_get_ring
H5_DLL H5AC_ring_t H5CX_get_ring(void)
Definition: H5CX.c:1684
H5Z_EDC_t
H5Z_EDC_t
Definition: H5Zpublic.h:107
H5CX_is_def_dxpl
H5_DLL hbool_t H5CX_is_def_dxpl(void)
Definition: H5CX.c:1104
hbool_t
bool hbool_t
Definition: H5public.h:159
H5CX_state_t
struct H5CX_state_t H5CX_state_t
H5CX_push_special
H5_DLL void H5CX_push_special(void)
Definition: H5CX.c:821
H5CX_get_vlen_alloc_info
H5_DLL herr_t H5CX_get_vlen_alloc_info(H5T_vlen_alloc_info_t *vl_alloc_info)
Definition: H5CX.c:2410
H5CX_state_t::vol_connector_prop
H5VL_connector_prop_t vol_connector_prop
Definition: H5CXprivate.h:49
H5CX_free_state
H5_DLL herr_t H5CX_free_state(H5CX_state_t *api_state)
Definition: H5CX.c:1038
H5Z_cb_t
Definition: H5Zpublic.h:131
H5CX_set_lapl
H5_DLL void H5CX_set_lapl(hid_t lapl_id)
Definition: H5CX.c:1253
H5Z_data_xform_t
Definition: H5Ztrans.c:61
H5CX_push
H5_DLL herr_t H5CX_push(void)
Definition: H5CX.c:787
H5MM_allocate_t
void *(* H5MM_allocate_t)(size_t size, void *alloc_info)
Definition: H5MMpublic.h:34
H5private.h