HDF5  1.12.0
H5Fprivate.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
2  * Copyright by The HDF Group. *
3  * Copyright by the Board of Trustees of the University of Illinois. *
4  * All rights reserved. *
5  * *
6  * This file is part of HDF5. The full HDF5 copyright notice, including *
7  * terms governing use, modification, and redistribution, is contained in *
8  * the COPYING file, which can be found at the root of the source code *
9  * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
10  * If you do not have access to either file, you may request a copy from *
11  * help@hdfgroup.org. *
12  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
13 
14 /*
15  * This file contains macros & information for file access
16  */
17 
18 #ifndef _H5Fprivate_H
19 #define _H5Fprivate_H
20 
21 /* Early typedefs to avoid circular dependencies */
22 typedef struct H5F_t H5F_t;
23 
24 /* Include package's public header */
25 #include "H5Fpublic.h"
26 
27 /* Public headers needed by this file */
28 #include "H5FDpublic.h" /* File drivers */
29 
30 /* Private headers needed by this file */
31 #include "H5MMprivate.h" /* Memory management */
32 #ifdef H5_HAVE_PARALLEL
33 #include "H5Pprivate.h" /* Property lists */
34 #endif /* H5_HAVE_PARALLEL */
35 #include "H5VMprivate.h" /* Vectors and arrays */
36 #include "H5VLprivate.h" /* Virtual Object Layer */
37 
38 
39 /**************************/
40 /* Library Private Macros */
41 /**************************/
42 
43 /*
44  * Encode and decode macros for file meta-data.
45  * Currently, all file meta-data is little-endian.
46  */
47 
48 # define INT16ENCODE(p, i) { \
49  *(p) = (uint8_t)( (unsigned)(i) & 0xff); (p)++; \
50  *(p) = (uint8_t)(((unsigned)(i) >> 8) & 0xff); (p)++; \
51 }
52 
53 # define UINT16ENCODE(p, i) { \
54  *(p) = (uint8_t)( (unsigned)(i) & 0xff); (p)++; \
55  *(p) = (uint8_t)(((unsigned)(i) >> 8) & 0xff); (p)++; \
56 }
57 
58 # define INT32ENCODE(p, i) { \
59  *(p) = (uint8_t)( (uint32_t)(i) & 0xff); (p)++; \
60  *(p) = (uint8_t)(((uint32_t)(i) >> 8) & 0xff); (p)++; \
61  *(p) = (uint8_t)(((uint32_t)(i) >> 16) & 0xff); (p)++; \
62  *(p) = (uint8_t)(((uint32_t)(i) >> 24) & 0xff); (p)++; \
63 }
64 
65 # define UINT32ENCODE(p, i) { \
66  *(p) = (uint8_t)( (i) & 0xff); (p)++; \
67  *(p) = (uint8_t)(((i) >> 8) & 0xff); (p)++; \
68  *(p) = (uint8_t)(((i) >> 16) & 0xff); (p)++; \
69  *(p) = (uint8_t)(((i) >> 24) & 0xff); (p)++; \
70 }
71 
72 /* Encode an unsigned integer into a variable-sized buffer */
73 /* (Assumes that the high bits of the integer are zero) */
74 # define ENCODE_VAR(p, typ, n, l) { \
75  typ _n = (n); \
76  size_t _i; \
77  uint8_t *_p = (uint8_t*)(p); \
78  \
79  for(_i = 0; _i < l; _i++, _n >>= 8) \
80  *_p++ = (uint8_t)(_n & 0xff); \
81  (p) = (uint8_t*)(p) + l; \
82 }
83 
84 /* Encode a 32-bit unsigned integer into a variable-sized buffer */
85 /* (Assumes that the high bits of the integer are zero) */
86 # define UINT32ENCODE_VAR(p, n, l) ENCODE_VAR(p, uint32_t, n, l)
87 
88 # define INT64ENCODE(p, n) { \
89  int64_t _n = (n); \
90  size_t _i; \
91  uint8_t *_p = (uint8_t*)(p); \
92  \
93  for (_i = 0; _i < sizeof(int64_t); _i++, _n >>= 8) \
94  *_p++ = (uint8_t)(_n & 0xff); \
95  for (/*void*/; _i < 8; _i++) \
96  *_p++ = (uint8_t)((n) < 0 ? 0xff : 0); \
97  (p) = (uint8_t*)(p)+8; \
98 }
99 
100 # define UINT64ENCODE(p, n) { \
101  uint64_t _n = (n); \
102  size_t _i; \
103  uint8_t *_p = (uint8_t*)(p); \
104  \
105  for (_i = 0; _i < sizeof(uint64_t); _i++, _n >>= 8) \
106  *_p++ = (uint8_t)(_n & 0xff); \
107  for (/*void*/; _i < 8; _i++) \
108  *_p++ = 0; \
109  (p) = (uint8_t*)(p) + 8; \
110 }
111 
112 /* Encode a 64-bit unsigned integer into a variable-sized buffer */
113 /* (Assumes that the high bits of the integer are zero) */
114 # define UINT64ENCODE_VAR(p, n, l) ENCODE_VAR(p, uint64_t, n, l)
115 
116 /* Encode a 64-bit unsigned integer and its length into a variable-sized buffer */
117 /* (Assumes that the high bits of the integer are zero) */
118 # define UINT64ENCODE_VARLEN(p, n) { \
119  uint64_t __n = (uint64_t)(n); \
120  unsigned _s = H5VM_limit_enc_size(__n); \
121  \
122  *(p)++ = (uint8_t)_s; \
123  UINT64ENCODE_VAR(p, __n, _s); \
124 }
125 
126 # define H5_ENCODE_UNSIGNED(p, n) { \
127  HDcompile_assert(sizeof(unsigned) == sizeof(uint32_t)); \
128  UINT32ENCODE(p, n) \
129 }
130 
131 /* Assumes the endianness of uint64_t is the same as double */
132 # define H5_ENCODE_DOUBLE(p, n) { \
133  uint64_t _n; \
134  size_t _u; \
135  uint8_t *_p = (uint8_t*)(p); \
136  \
137  HDcompile_assert(sizeof(double) == 8); \
138  HDcompile_assert(sizeof(double) == sizeof(uint64_t)); \
139  H5MM_memcpy(&_n, &n, sizeof(double)); \
140  for(_u = 0; _u < sizeof(uint64_t); _u++, _n >>= 8) \
141  *_p++ = (uint8_t)(_n & 0xff); \
142  (p) = (uint8_t *)(p) + 8; \
143 }
144 
145 /* DECODE converts little endian bytes pointed by p to integer values and store
146  * it in i. For signed values, need to do sign-extension when converting
147  * the last byte which carries the sign bit.
148  * The macros does not require i be of a certain byte sizes. It just requires
149  * i be big enough to hold the intended value range. E.g. INT16DECODE works
150  * correctly even if i is actually a 64bit int like in a Cray.
151  */
152 
153 # define INT16DECODE(p, i) { \
154  (i) = (int16_t)((*(p) & 0xff)); (p)++; \
155  (i) |= (int16_t)(((*(p) & 0xff) << 8) | \
156  ((*(p) & 0x80) ? ~0xffff : 0x0)); (p)++; \
157 }
158 
159 # define UINT16DECODE(p, i) { \
160  (i) = (uint16_t) (*(p) & 0xff); (p)++; \
161  (i) |= (uint16_t)((*(p) & 0xff) << 8); (p)++; \
162 }
163 
164 # define INT32DECODE(p, i) { \
165  (i) = ((int32_t)(*(p) & 0xff)); (p)++; \
166  (i) |= ((int32_t)(*(p) & 0xff) << 8); (p)++; \
167  (i) |= ((int32_t)(*(p) & 0xff) << 16); (p)++; \
168  (i) |= ((int32_t)(((*(p) & (unsigned)0xff) << 24) | \
169  ((*(p) & 0x80) ? ~0xffffffffULL : 0x0ULL))); (p)++; \
170 }
171 
172 # define UINT32DECODE(p, i) { \
173  (i) = (uint32_t)(*(p) & 0xff); (p)++; \
174  (i) |= ((uint32_t)(*(p) & 0xff) << 8); (p)++; \
175  (i) |= ((uint32_t)(*(p) & 0xff) << 16); (p)++; \
176  (i) |= ((uint32_t)(*(p) & 0xff) << 24); (p)++; \
177 }
178 
179 /* Decode a variable-sized buffer */
180 /* (Assumes that the high bits of the integer will be zero) */
181 # define DECODE_VAR(p, n, l) { \
182  size_t _i; \
183  \
184  n = 0; \
185  (p) += l; \
186  for (_i = 0; _i < l; _i++) \
187  n = (n << 8) | *(--p); \
188  (p) += l; \
189 }
190 
191 /* Decode a variable-sized buffer into a 32-bit unsigned integer */
192 /* (Assumes that the high bits of the integer will be zero) */
193 # define UINT32DECODE_VAR(p, n, l) DECODE_VAR(p, n, l)
194 
195 # define INT64DECODE(p, n) { \
196  /* WE DON'T CHECK FOR OVERFLOW! */ \
197  size_t _i; \
198  \
199  n = 0; \
200  (p) += 8; \
201  for (_i = 0; _i < sizeof(int64_t); _i++) \
202  n = (n << 8) | *(--p); \
203  (p) += 8; \
204 }
205 
206 # define UINT64DECODE(p, n) { \
207  /* WE DON'T CHECK FOR OVERFLOW! */ \
208  size_t _i; \
209  \
210  n = 0; \
211  (p) += 8; \
212  for (_i = 0; _i < sizeof(uint64_t); _i++) \
213  n = (n << 8) | *(--p); \
214  (p) += 8; \
215 }
216 
217 /* Decode a variable-sized buffer into a 64-bit unsigned integer */
218 /* (Assumes that the high bits of the integer will be zero) */
219 # define UINT64DECODE_VAR(p, n, l) DECODE_VAR(p, n, l)
220 
221 /* Decode a 64-bit unsigned integer and its length from a variable-sized buffer */
222 /* (Assumes that the high bits of the integer will be zero) */
223 # define UINT64DECODE_VARLEN(p, n) { \
224  unsigned _s = *(p)++; \
225  \
226  UINT64DECODE_VAR(p, n, _s); \
227 }
228 
229 # define H5_DECODE_UNSIGNED(p, n) { \
230  HDcompile_assert(sizeof(unsigned) == sizeof(uint32_t)); \
231  UINT32DECODE(p, n) \
232 }
233 
234 /* Assumes the endianness of uint64_t is the same as double */
235 # define H5_DECODE_DOUBLE(p, n) { \
236  uint64_t _n; \
237  size_t _u; \
238  \
239  HDcompile_assert(sizeof(double) == 8); \
240  HDcompile_assert(sizeof(double) == sizeof(uint64_t)); \
241  _n = 0; \
242  (p) += 8; \
243  for(_u = 0; _u < sizeof(uint64_t); _u++) \
244  _n = (_n << 8) | *(--p); \
245  H5MM_memcpy(&(n), &_n, sizeof(double)); \
246  (p) += 8; \
247 }
248 
249 /* Address-related macros */
250 #define H5F_addr_overflow(X,Z) (HADDR_UNDEF==(X) || \
251  HADDR_UNDEF==(X)+(haddr_t)(Z) || \
252  (X)+(haddr_t)(Z)<(X))
253 #define H5F_addr_defined(X) ((X)!=HADDR_UNDEF)
254 /* The H5F_addr_eq() macro guarantees that Y is not HADDR_UNDEF by making
255  * certain that X is not HADDR_UNDEF and then checking that X equals Y
256  */
257 #define H5F_addr_eq(X,Y) ((X)!=HADDR_UNDEF && \
258  (X)==(Y))
259 #define H5F_addr_ne(X,Y) (!H5F_addr_eq((X),(Y)))
260 #define H5F_addr_lt(X,Y) ((X)!=HADDR_UNDEF && \
261  (Y)!=HADDR_UNDEF && \
262  (X)<(Y))
263 #define H5F_addr_le(X,Y) ((X)!=HADDR_UNDEF && \
264  (Y)!=HADDR_UNDEF && \
265  (X)<=(Y))
266 #define H5F_addr_gt(X,Y) ((X)!=HADDR_UNDEF && \
267  (Y)!=HADDR_UNDEF && \
268  (X)>(Y))
269 #define H5F_addr_ge(X,Y) ((X)!=HADDR_UNDEF && \
270  (Y)!=HADDR_UNDEF && \
271  (X)>=(Y))
272 #define H5F_addr_cmp(X,Y) (H5F_addr_eq((X), (Y)) ? 0 : \
273  (H5F_addr_lt((X), (Y)) ? -1 : 1))
274 #define H5F_addr_pow2(N) ((haddr_t)1<<(N))
275 #define H5F_addr_overlap(O1,L1,O2,L2) (((O1) < (O2) && ((O1) + (L1)) > (O2)) || \
276  ((O1) >= (O2) && (O1) < ((O2) + (L2))))
277 
278 /* If the module using this macro is allowed access to the private variables, access them directly */
279 #ifdef H5F_MODULE
280 #define H5F_LOW_BOUND(F) ((F)->shared->low_bound)
281 #define H5F_HIGH_BOUND(F) ((F)->shared->high_bound)
282 #define H5F_SHARED_INTENT(F_SH) ((F_SH)->flags)
283 #define H5F_INTENT(F) ((F)->shared->flags)
284 #define H5F_OPEN_NAME(F) ((F)->open_name)
285 #define H5F_ACTUAL_NAME(F) ((F)->actual_name)
286 #define H5F_EXTPATH(F) ((F)->shared->extpath)
287 #define H5F_SHARED(F) ((F)->shared)
288 #define H5F_SAME_SHARED(F1, F2) ((F1)->shared == (F2)->shared)
289 #define H5F_NOPEN_OBJS(F) ((F)->nopen_objs)
290 #define H5F_INCR_NOPEN_OBJS(F) ((F)->nopen_objs++)
291 #define H5F_DECR_NOPEN_OBJS(F) ((F)->nopen_objs--)
292 #define H5F_ID_EXISTS(F) ((F)->id_exists)
293 #define H5F_PARENT(F) ((F)->parent)
294 #define H5F_NMOUNTS(F) ((F)->nmounts)
295 #define H5F_GET_READ_ATTEMPTS(F) ((F)->shared->read_attempts)
296 #define H5F_DRIVER_ID(F) ((F)->shared->lf->driver_id)
297 #define H5F_GET_FILENO(F,FILENUM) ((FILENUM) = (F)->shared->lf->fileno)
298 #define H5F_SHARED_HAS_FEATURE(F_SH,FL) ((F_SH)->lf->feature_flags & (FL))
299 #define H5F_HAS_FEATURE(F,FL) ((F)->shared->lf->feature_flags & (FL))
300 #define H5F_BASE_ADDR(F) ((F)->shared->sblock->base_addr)
301 #define H5F_SYM_LEAF_K(F) ((F)->shared->sblock->sym_leaf_k)
302 #define H5F_KVALUE(F,T) ((F)->shared->sblock->btree_k[(T)->id])
303 #define H5F_NREFS(F) ((F)->shared->nrefs)
304 #define H5F_SIZEOF_ADDR(F) ((F)->shared->sizeof_addr)
305 #define H5F_SIZEOF_SIZE(F) ((F)->shared->sizeof_size)
306 #define H5F_SOHM_ADDR(F) ((F)->shared->sohm_addr)
307 #define H5F_SET_SOHM_ADDR(F, A) ((F)->shared->sohm_addr = (A))
308 #define H5F_SOHM_VERS(F) ((F)->shared->sohm_vers)
309 #define H5F_SET_SOHM_VERS(F, V) ((F)->shared->sohm_vers = (V))
310 #define H5F_SOHM_NINDEXES(F) ((F)->shared->sohm_nindexes)
311 #define H5F_SET_SOHM_NINDEXES(F, N) ((F)->shared->sohm_nindexes = (N))
312 #define H5F_FCPL(F) ((F)->shared->fcpl_id)
313 #define H5F_GET_FC_DEGREE(F) ((F)->shared->fc_degree)
314 #define H5F_EVICT_ON_CLOSE(F) ((F)->shared->evict_on_close)
315 #define H5F_RDCC_NSLOTS(F) ((F)->shared->rdcc_nslots)
316 #define H5F_RDCC_NBYTES(F) ((F)->shared->rdcc_nbytes)
317 #define H5F_RDCC_W0(F) ((F)->shared->rdcc_w0)
318 #define H5F_SIEVE_BUF_SIZE(F) ((F)->shared->sieve_buf_size)
319 #define H5F_GC_REF(F) ((F)->shared->gc_ref)
320 #define H5F_STORE_MSG_CRT_IDX(F) ((F)->shared->store_msg_crt_idx)
321 #define H5F_SET_STORE_MSG_CRT_IDX(F, FL) ((F)->shared->store_msg_crt_idx = (FL))
322 #define H5F_GRP_BTREE_SHARED(F) ((F)->shared->grp_btree_shared)
323 #define H5F_SET_GRP_BTREE_SHARED(F, RC) (((F)->shared->grp_btree_shared = (RC)) ? SUCCEED : FAIL)
324 #define H5F_USE_TMP_SPACE(F) ((F)->shared->fs.use_tmp_space)
325 #define H5F_IS_TMP_ADDR(F, ADDR) (H5F_addr_le((F)->shared->fs.tmp_addr, (ADDR)))
326 #ifdef H5_HAVE_PARALLEL
327 #define H5F_COLL_MD_READ(F) ((F)->shared->coll_md_read)
328 #endif /* H5_HAVE_PARALLEL */
329 #define H5F_USE_MDC_LOGGING(F) ((F)->shared->use_mdc_logging)
330 #define H5F_START_MDC_LOG_ON_ACCESS(F) ((F)->shared->start_mdc_log_on_access)
331 #define H5F_MDC_LOG_LOCATION(F) ((F)->shared->mdc_log_location)
332 #define H5F_ALIGNMENT(F) ((F)->shared->alignment)
333 #define H5F_THRESHOLD(F) ((F)->shared->threshold)
334 #define H5F_PGEND_META_THRES(F) ((F)->shared->fs.pgend_meta_thres)
335 #define H5F_POINT_OF_NO_RETURN(F) ((F)->shared->fs.point_of_no_return)
336 #define H5F_NULL_FSM_ADDR(F) ((F)->shared->null_fsm_addr)
337 #define H5F_GET_MIN_DSET_OHDR(F) ((F)->shared->crt_dset_min_ohdr_flag)
338 #define H5F_SET_MIN_DSET_OHDR(F, V) ((F)->shared->crt_dset_min_ohdr_flag = (V))
339 #define H5F_VOL_CLS(F) ((F)->shared->vol_cls)
340 #define H5F_VOL_OBJ(F) ((F)->vol_obj)
341 #else /* H5F_MODULE */
342 #define H5F_LOW_BOUND(F) (H5F_get_low_bound(F))
343 #define H5F_HIGH_BOUND(F) (H5F_get_high_bound(F))
344 #define H5F_SHARED_INTENT(F_SH) (H5F_shared_get_intent(F_SH))
345 #define H5F_INTENT(F) (H5F_get_intent(F))
346 #define H5F_OPEN_NAME(F) (H5F_get_open_name(F))
347 #define H5F_ACTUAL_NAME(F) (H5F_get_actual_name(F))
348 #define H5F_EXTPATH(F) (H5F_get_extpath(F))
349 #define H5F_SHARED(F) (H5F_get_shared(F))
350 #define H5F_SAME_SHARED(F1, F2) (H5F_same_shared((F1), (F2)))
351 #define H5F_NOPEN_OBJS(F) (H5F_get_nopen_objs(F))
352 #define H5F_INCR_NOPEN_OBJS(F) (H5F_incr_nopen_objs(F))
353 #define H5F_DECR_NOPEN_OBJS(F) (H5F_decr_nopen_objs(F))
354 #define H5F_ID_EXISTS(F) (H5F_file_id_exists(F))
355 #define H5F_PARENT(F) (H5F_get_parent(F))
356 #define H5F_NMOUNTS(F) (H5F_get_nmounts(F))
357 #define H5F_GET_READ_ATTEMPTS(F) (H5F_get_read_attempts(F))
358 #define H5F_DRIVER_ID(F) (H5F_get_driver_id(F))
359 #define H5F_GET_FILENO(F,FILENUM) (H5F_get_fileno((F), &(FILENUM)))
360 #define H5F_SHARED_HAS_FEATURE(F_SH,FL) (H5F_shared_has_feature(F_SH,FL))
361 #define H5F_HAS_FEATURE(F,FL) (H5F_has_feature(F,FL))
362 #define H5F_BASE_ADDR(F) (H5F_get_base_addr(F))
363 #define H5F_SYM_LEAF_K(F) (H5F_sym_leaf_k(F))
364 #define H5F_KVALUE(F,T) (H5F_Kvalue(F,T))
365 #define H5F_NREFS(F) (H5F_get_nrefs(F))
366 #define H5F_SIZEOF_ADDR(F) (H5F_sizeof_addr(F))
367 #define H5F_SIZEOF_SIZE(F) (H5F_sizeof_size(F))
368 #define H5F_SOHM_ADDR(F) (H5F_get_sohm_addr(F))
369 #define H5F_SET_SOHM_ADDR(F, A) (H5F_set_sohm_addr((F), (A)))
370 #define H5F_SOHM_VERS(F) (H5F_get_sohm_vers(F))
371 #define H5F_SET_SOHM_VERS(F, V) (H5F_set_sohm_vers((F), (V)))
372 #define H5F_SOHM_NINDEXES(F) (H5F_get_sohm_nindexes(F))
373 #define H5F_SET_SOHM_NINDEXES(F, N) (H5F_set_sohm_nindexes((F), (N)))
374 #define H5F_FCPL(F) (H5F_get_fcpl(F))
375 #define H5F_GET_FC_DEGREE(F) (H5F_get_fc_degree(F))
376 #define H5F_EVICT_ON_CLOSE(F) (H5F_get_evict_on_close(F))
377 #define H5F_RDCC_NSLOTS(F) (H5F_rdcc_nslots(F))
378 #define H5F_RDCC_NBYTES(F) (H5F_rdcc_nbytes(F))
379 #define H5F_RDCC_W0(F) (H5F_rdcc_w0(F))
380 #define H5F_SIEVE_BUF_SIZE(F) (H5F_sieve_buf_size(F))
381 #define H5F_GC_REF(F) (H5F_gc_ref(F))
382 #define H5F_STORE_MSG_CRT_IDX(F) (H5F_store_msg_crt_idx(F))
383 #define H5F_SET_STORE_MSG_CRT_IDX(F, FL) (H5F_set_store_msg_crt_idx((F), (FL)))
384 #define H5F_GRP_BTREE_SHARED(F) (H5F_grp_btree_shared(F))
385 #define H5F_SET_GRP_BTREE_SHARED(F, RC) (H5F_set_grp_btree_shared((F), (RC)))
386 #define H5F_USE_TMP_SPACE(F) (H5F_use_tmp_space(F))
387 #define H5F_IS_TMP_ADDR(F, ADDR) (H5F_is_tmp_addr((F), (ADDR)))
388 #ifdef H5_HAVE_PARALLEL
389 #define H5F_COLL_MD_READ(F) (H5F_coll_md_read(F))
390 #endif /* H5_HAVE_PARALLEL */
391 #define H5F_USE_MDC_LOGGING(F) (H5F_use_mdc_logging(F))
392 #define H5F_START_MDC_LOG_ON_ACCESS(F) (H5F_start_mdc_log_on_access(F))
393 #define H5F_MDC_LOG_LOCATION(F) (H5F_mdc_log_location(F))
394 #define H5F_ALIGNMENT(F) (H5F_get_alignment(F))
395 #define H5F_THRESHOLD(F) (H5F_get_threshold(F))
396 #define H5F_PGEND_META_THRES(F) (H5F_get_pgend_meta_thres(F))
397 #define H5F_POINT_OF_NO_RETURN(F) (H5F_get_point_of_no_return(F))
398 #define H5F_NULL_FSM_ADDR(F) (H5F_get_null_fsm_addr(F))
399 #define H5F_GET_MIN_DSET_OHDR(F) (H5F_get_min_dset_ohdr(F))
400 #define H5F_SET_MIN_DSET_OHDR(F, V) (H5F_set_min_dset_ohdr((F), (V)))
401 #define H5F_VOL_CLS(F) (H5F_get_vol_cls(F))
402 #define H5F_VOL_OBJ(F) (H5F_get_vol_obj(F))
403 #endif /* H5F_MODULE */
404 
405 
406 /* Macros to encode/decode offset/length's for storing in the file */
407 #define H5F_ENCODE_OFFSET(f,p,o) switch(H5F_SIZEOF_ADDR(f)) { \
408  case 4: UINT32ENCODE(p,o); break; \
409  case 8: UINT64ENCODE(p,o); break; \
410  case 2: UINT16ENCODE(p,o); break; \
411 }
412 
413 #define H5F_DECODE_OFFSET(f,p,o) switch (H5F_SIZEOF_ADDR (f)) { \
414  case 4: UINT32DECODE(p, o); break; \
415  case 8: UINT64DECODE(p, o); break; \
416  case 2: UINT16DECODE(p, o); break; \
417 }
418 
419 #define H5F_ENCODE_LENGTH_LEN(p,l,s) switch(s) { \
420  case 4: UINT32ENCODE(p,l); break; \
421  case 8: UINT64ENCODE(p,l); break; \
422  case 2: UINT16ENCODE(p,l); break; \
423  default: HDassert("bad sizeof size" && 0); \
424 }
425 
426 #define H5F_ENCODE_LENGTH(f,p,l) H5F_ENCODE_LENGTH_LEN(p,l,H5F_SIZEOF_SIZE(f))
427 
428 #define H5F_DECODE_LENGTH_LEN(p,l,s) switch(s) { \
429  case 4: UINT32DECODE(p,l); break; \
430  case 8: UINT64DECODE(p,l); break; \
431  case 2: UINT16DECODE(p,l); break; \
432  default: HDassert("bad sizeof size" && 0); \
433 }
434 
435 #define H5F_DECODE_LENGTH(f,p,l) H5F_DECODE_LENGTH_LEN(p,l,H5F_SIZEOF_SIZE(f))
436 
437 /*
438  * Macros that check for overflows. These are somewhat dangerous to fiddle
439  * with.
440  */
441 #if (H5_SIZEOF_SIZE_T >= H5_SIZEOF_OFF_T)
442 # define H5F_OVERFLOW_SIZET2OFFT(X) \
443  ((size_t)(X)>=(size_t)((size_t)1<<(8*sizeof(HDoff_t)-1)))
444 #else
445 # define H5F_OVERFLOW_SIZET2OFFT(X) 0
446 #endif
447 #if (H5_SIZEOF_HSIZE_T >= H5_SIZEOF_OFF_T)
448 # define H5F_OVERFLOW_HSIZET2OFFT(X) \
449  ((hsize_t)(X) >= (hsize_t)((hsize_t)1 << (8 * sizeof(HDoff_t) - 1)))
450 #else
451 # define H5F_OVERFLOW_HSIZET2OFFT(X) 0
452 #endif
453 
454 /* Sizes of object addresses & sizes in the file (in bytes) */
455 #define H5F_OBJ_ADDR_SIZE sizeof(haddr_t)
456 #define H5F_OBJ_SIZE_SIZE sizeof(hsize_t)
457 
458 /* File-wide default character encoding can not yet be set via the file
459  * creation property list and is always ASCII. */
460 #define H5F_DEFAULT_CSET H5T_CSET_ASCII
461 
462 /* ========= File Creation properties ============ */
463 #define H5F_CRT_USER_BLOCK_NAME "block_size" /* Size of the file user block in bytes */
464 #define H5F_CRT_SYM_LEAF_NAME "symbol_leaf" /* 1/2 rank for symbol table leaf nodes */
465 #define H5F_CRT_SYM_LEAF_DEF 4
466 #define H5F_CRT_BTREE_RANK_NAME "btree_rank" /* 1/2 rank for btree internal nodes */
467 #define H5F_CRT_ADDR_BYTE_NUM_NAME "addr_byte_num" /* Byte number in an address */
468 #define H5F_CRT_OBJ_BYTE_NUM_NAME "obj_byte_num" /* Byte number for object size */
469 #define H5F_CRT_SUPER_VERS_NAME "super_version" /* Version number of the superblock */
470 #define H5F_CRT_SHMSG_NINDEXES_NAME "num_shmsg_indexes" /* Number of shared object header message indexes */
471 #define H5F_CRT_SHMSG_INDEX_TYPES_NAME "shmsg_message_types" /* Types of message in each index */
472 #define H5F_CRT_SHMSG_INDEX_MINSIZE_NAME "shmsg_message_minsize" /* Minimum size of messages in each index */
473 #define H5F_CRT_SHMSG_LIST_MAX_NAME "shmsg_list_max" /* Shared message list maximum size */
474 #define H5F_CRT_SHMSG_BTREE_MIN_NAME "shmsg_btree_min" /* Shared message B-tree minimum size */
475 #define H5F_CRT_FILE_SPACE_STRATEGY_NAME "file_space_strategy" /* File space handling strategy */
476 #define H5F_CRT_FREE_SPACE_PERSIST_NAME "free_space_persist" /* Free-space persisting status */
477 #define H5F_CRT_FREE_SPACE_THRESHOLD_NAME "free_space_threshold" /* Free space section threshold */
478 #define H5F_CRT_FILE_SPACE_PAGE_SIZE_NAME "file_space_page_size" /* File space page size */
479 
480 
481 
482 /* ========= File Access properties ============ */
483 #define H5F_ACS_META_CACHE_INIT_CONFIG_NAME "mdc_initCacheCfg" /* Initial metadata cache resize configuration */
484 #define H5F_ACS_DATA_CACHE_NUM_SLOTS_NAME "rdcc_nslots" /* Size of raw data chunk cache(slots) */
485 #define H5F_ACS_DATA_CACHE_BYTE_SIZE_NAME "rdcc_nbytes" /* Size of raw data chunk cache(bytes) */
486 #define H5F_ACS_PREEMPT_READ_CHUNKS_NAME "rdcc_w0" /* Preemption read chunks first */
487 #define H5F_ACS_ALIGN_THRHD_NAME "threshold" /* Threshold for alignment */
488 #define H5F_ACS_ALIGN_NAME "align" /* Alignment */
489 #define H5F_ACS_META_BLOCK_SIZE_NAME "meta_block_size" /* Minimum metadata allocation block size (when aggregating metadata allocations) */
490 #define H5F_ACS_SIEVE_BUF_SIZE_NAME "sieve_buf_size" /* Maximum sieve buffer size (when data sieving is allowed by file driver) */
491 #define H5F_ACS_SDATA_BLOCK_SIZE_NAME "sdata_block_size" /* Minimum "small data" allocation block size (when aggregating "small" raw data allocations) */
492 #define H5F_ACS_GARBG_COLCT_REF_NAME "gc_ref" /* Garbage-collect references */
493 #define H5F_ACS_FILE_DRV_NAME "vfd_info" /* File driver ID & info */
494 #define H5F_ACS_VOL_CONN_NAME "vol_connector_info" /* VOL connector ID & info */
495 #define H5F_ACS_CLOSE_DEGREE_NAME "close_degree" /* File close degree */
496 #define H5F_ACS_FAMILY_OFFSET_NAME "family_offset" /* Offset position in file for family file driver */
497 #define H5F_ACS_FAMILY_NEWSIZE_NAME "family_newsize" /* New member size of family driver. (private property only used by h5repart) */
498 #define H5F_ACS_FAMILY_TO_SINGLE_NAME "family_to_single" /* Whether to convert family to a single-file driver. (private property only used by h5repart) */
499 #define H5F_ACS_MULTI_TYPE_NAME "multi_type" /* Data type in multi file driver */
500 #define H5F_ACS_LIBVER_LOW_BOUND_NAME "libver_low_bound" /* 'low' bound of library format versions */
501 #define H5F_ACS_LIBVER_HIGH_BOUND_NAME "libver_high_bound" /* 'high' bound of library format versions */
502 #define H5F_ACS_WANT_POSIX_FD_NAME "want_posix_fd" /* Internal: query the file descriptor from the core VFD, instead of the memory address */
503 #define H5F_ACS_METADATA_READ_ATTEMPTS_NAME "metadata_read_attempts" /* # of metadata read attempts */
504 #define H5F_ACS_OBJECT_FLUSH_CB_NAME "object_flush_cb" /* Object flush callback */
505 #define H5F_ACS_EFC_SIZE_NAME "efc_size" /* Size of external file cache */
506 #define H5F_ACS_FILE_IMAGE_INFO_NAME "file_image_info" /* struct containing initial file image and callback info */
507 #define H5F_ACS_CLEAR_STATUS_FLAGS_NAME "clear_status_flags" /* Whether to clear superblock status_flags (private property only used by h5clear) */
508 #define H5F_ACS_NULL_FSM_ADDR_NAME "null_fsm_addr" /* Nullify addresses of free-space managers */
509  /* Private property used only by h5clear */
510 #define H5F_ACS_SKIP_EOF_CHECK_NAME "skip_eof_check" /* Skip EOF check */
511  /* Private property used only by h5clear */
512 #define H5F_ACS_USE_MDC_LOGGING_NAME "use_mdc_logging" /* Whether to use metadata cache logging */
513 #define H5F_ACS_MDC_LOG_LOCATION_NAME "mdc_log_location" /* Name of metadata cache log location */
514 #define H5F_ACS_START_MDC_LOG_ON_ACCESS_NAME "start_mdc_log_on_access" /* Whether logging starts on file create/open */
515 #define H5F_ACS_EVICT_ON_CLOSE_FLAG_NAME "evict_on_close_flag" /* Whether or not the metadata cache will evict objects on close */
516 #define H5F_ACS_COLL_MD_WRITE_FLAG_NAME "collective_metadata_write" /* property indicating whether metadata writes are done collectively or not */
517 #define H5F_ACS_META_CACHE_INIT_IMAGE_CONFIG_NAME "mdc_initCacheImageCfg" /* Initial metadata cache image creation configuration */
518 #define H5F_ACS_PAGE_BUFFER_SIZE_NAME "page_buffer_size" /* the maximum size for the page buffer cache */
519 #define H5F_ACS_PAGE_BUFFER_MIN_META_PERC_NAME "page_buffer_min_meta_perc" /* the min metadata percentage for the page buffer cache */
520 #define H5F_ACS_PAGE_BUFFER_MIN_RAW_PERC_NAME "page_buffer_min_raw_perc" /* the min raw data percentage for the page buffer cache */
521 #ifdef H5_HAVE_PARALLEL
522 #define H5F_ACS_MPI_PARAMS_COMM_NAME "mpi_params_comm" /* the MPI communicator */
523 #define H5F_ACS_MPI_PARAMS_INFO_NAME "mpi_params_info" /* the MPI info struct */
524 #endif /* H5_HAVE_PARALLEL */
525 
526 /* ======================== File Mount properties ====================*/
527 #define H5F_MNT_SYM_LOCAL_NAME "local" /* Whether absolute symlinks local to file. */
528 
529 
530 #ifdef H5_HAVE_PARALLEL
531 /* Which process writes metadata */
532 #define H5_PAR_META_WRITE 0
533 #endif /* H5_HAVE_PARALLEL */
534 
535 /* Define the HDF5 file signature */
536 #define H5F_SIGNATURE "\211HDF\r\n\032\n"
537 #define H5F_SIGNATURE_LEN 8
538 
539 /* Version #'s of the major components of the file format */
540 #define HDF5_SUPERBLOCK_VERSION_DEF 0 /* The default super block format */
541 #define HDF5_SUPERBLOCK_VERSION_1 1 /* Version with non-default B-tree 'K' value */
542 #define HDF5_SUPERBLOCK_VERSION_2 2 /* Revised version with superblock extension and checksum */
543 #define HDF5_SUPERBLOCK_VERSION_3 3 /* With file locking and consistency flags (at least this version for SWMR support) */
544 #define HDF5_SUPERBLOCK_VERSION_LATEST HDF5_SUPERBLOCK_VERSION_3 /* The maximum super block format */
545 #define HDF5_SUPERBLOCK_VERSION_V18_LATEST HDF5_SUPERBLOCK_VERSION_2 /* The latest superblock version for v18 */
546 #define HDF5_FREESPACE_VERSION 0 /* of the Free-Space Info */
547 #define HDF5_OBJECTDIR_VERSION 0 /* of the Object Directory format */
548 #define HDF5_SHAREDHEADER_VERSION 0 /* of the Shared-Header Info */
549 #define HDF5_DRIVERINFO_VERSION_0 0 /* of the Driver Information Block*/
550 
551 /* B-tree internal 'K' values */
552 #define HDF5_BTREE_SNODE_IK_DEF 16
553 #define HDF5_BTREE_CHUNK_IK_DEF 32 /* Note! this value is assumed
554  to be 32 for version 0
555  of the superblock and
556  if it is changed, the code
557  must compensate. -QAK
558  */
559 #define HDF5_BTREE_IK_MAX_ENTRIES 65536 /* 2^16 - 2 bytes for storing entries (children) */
560  /* See format specification on version 1 B-trees */
561 
562 /* Default file space handling strategy */
563 #define H5F_FILE_SPACE_STRATEGY_DEF H5F_FSPACE_STRATEGY_FSM_AGGR
564 
565 /* Default free space section threshold used by free-space managers */
566 #define H5F_FREE_SPACE_PERSIST_DEF FALSE
567 
568 /* Default free space section threshold used by free-space managers */
569 #define H5F_FREE_SPACE_THRESHOLD_DEF 1
570 
571 /* For paged aggregation: default file space page size when not set */
572 #define H5F_FILE_SPACE_PAGE_SIZE_DEF 4096
573 /* For paged aggregation: minimum value for file space page size */
574 #define H5F_FILE_SPACE_PAGE_SIZE_MIN 512
575 /* For paged aggregation: maximum value for file space page size: 1 gigabyte */
576 #define H5F_FILE_SPACE_PAGE_SIZE_MAX 1024*1024*1024
577 
578 /* For paged aggregation: drop free-space with size <= this threshold for small meta section */
579 #define H5F_FILE_SPACE_PGEND_META_THRES 0
580 
581 /* Default for threshold for alignment (can be set via H5Pset_alignment()) */
582 #define H5F_ALIGN_DEF 1
583 /* Default for alignment (can be set via H5Pset_alignment()) */
584 #define H5F_ALIGN_THRHD_DEF 1
585 /* Default size for meta data aggregation block (can be set via H5Pset_meta_block_size()) */
586 #define H5F_META_BLOCK_SIZE_DEF 2048
587 /* Default size for small data aggregation block (can be set via H5Pset_small_data_block_size()) */
588 #define H5F_SDATA_BLOCK_SIZE_DEF 2048
589 
590 /* Check for file using paged aggregation */
591 #define H5F_SHARED_PAGED_AGGR(F_SH) ((F_SH)->fs_strategy == H5F_FSPACE_STRATEGY_PAGE && (F_SH)->fs_page_size)
592 #define H5F_PAGED_AGGR(F) (F->shared->fs_strategy == H5F_FSPACE_STRATEGY_PAGE && F->shared->fs_page_size)
593 
594 /* Metadata read attempt values */
595 #define H5F_METADATA_READ_ATTEMPTS 1 /* Default # of read attempts for non-SWMR access */
596 #define H5F_SWMR_METADATA_READ_ATTEMPTS 100 /* Default # of read attempts for SWMR access */
597 
598 
599 /* Macros to define signatures of all objects in the file */
600 
601 /* Size of signature information (on disk) */
602 /* (all on-disk signatures should be this length) */
603 #define H5_SIZEOF_MAGIC 4
604 
605 /* Size of checksum information (on disk) */
606 /* (all on-disk checksums should be this length) */
607 #define H5_SIZEOF_CHKSUM 4
608 
609 /* v1 B-tree node signature */
610 #define H5B_MAGIC "TREE"
611 
612 /* v2 B-tree signatures */
613 #define H5B2_HDR_MAGIC "BTHD" /* Header */
614 #define H5B2_INT_MAGIC "BTIN" /* Internal node */
615 #define H5B2_LEAF_MAGIC "BTLF" /* Leaf node */
616 
617 /* Extensible array signatures */
618 #define H5EA_HDR_MAGIC "EAHD" /* Header */
619 #define H5EA_IBLOCK_MAGIC "EAIB" /* Index block */
620 #define H5EA_SBLOCK_MAGIC "EASB" /* Super block */
621 #define H5EA_DBLOCK_MAGIC "EADB" /* Data block */
622 
623 /* Fixed array signatures */
624 #define H5FA_HDR_MAGIC "FAHD" /* Header */
625 #define H5FA_DBLOCK_MAGIC "FADB" /* Data block */
626 
627 /* Free space signatures */
628 #define H5FS_HDR_MAGIC "FSHD" /* Header */
629 #define H5FS_SINFO_MAGIC "FSSE" /* Serialized sections */
630 
631 /* Symbol table node signature */
632 #define H5G_NODE_MAGIC "SNOD"
633 
634 /* Fractal heap signatures */
635 #define H5HF_HDR_MAGIC "FRHP" /* Header */
636 #define H5HF_IBLOCK_MAGIC "FHIB" /* Indirect block */
637 #define H5HF_DBLOCK_MAGIC "FHDB" /* Direct block */
638 
639 /* Global heap signature */
640 #define H5HG_MAGIC "GCOL"
641 
642 /* Local heap signature */
643 #define H5HL_MAGIC "HEAP"
644 
645 /* Object header signatures */
646 #define H5O_HDR_MAGIC "OHDR" /* Header */
647 #define H5O_CHK_MAGIC "OCHK" /* Continuation chunk */
648 
649 /* Shared Message signatures */
650 #define H5SM_TABLE_MAGIC "SMTB" /* Shared Message Table */
651 #define H5SM_LIST_MAGIC "SMLI" /* Shared Message List */
652 
653 /****************************/
654 /* Library Private Typedefs */
655 /****************************/
656 
657 /* Forward declarations (for prototypes & type definitions) */
658 struct H5B_class_t;
659 struct H5UC_t;
660 struct H5O_loc_t;
661 struct H5HG_heap_t;
662 struct H5VL_class_t;
663 struct H5P_genplist_t;
664 
665 /* Forward declarations for anonymous H5F objects */
666 
667 /* Main file structures */
668 typedef struct H5F_shared_t H5F_shared_t;
669 
670 /* Block aggregation structure */
672 
673 /* Structure for object flush callback property (H5Pset_object_flush_cb)*/
674 typedef struct H5F_object_flush_t {
675  H5F_flush_cb_t func; /* The callback function */
676  void *udata; /* User data */
678 
679 /* Concise info about a block of bytes in a file */
680 typedef struct H5F_block_t {
681  haddr_t offset; /* Offset of the block in the file */
682  hsize_t length; /* Length of the block in the file */
684 
685 /* Enum for free space manager state */
686 typedef enum H5F_fs_state_t {
687  H5F_FS_STATE_CLOSED = 0, /* Free space manager is closed */
688  H5F_FS_STATE_OPEN = 1, /* Free space manager has been opened */
689  H5F_FS_STATE_DELETING = 2 /* Free space manager is being deleted */
691 
692 /* For paged aggregation */
693 /* The values 0 to 6 is the same as H5F_mem_t */
694 typedef enum H5F_mem_page_t {
695  H5F_MEM_PAGE_DEFAULT = 0, /* Not used */
708  H5F_MEM_PAGE_NTYPES = 13 /* Sentinel value - must be last */
710 
711 /* Aliases for H5F_mem_page_t enum values */
712 #define H5F_MEM_PAGE_META H5F_MEM_PAGE_SUPER /* Small-sized meta data */
713 #define H5F_MEM_PAGE_GENERIC H5F_MEM_PAGE_LARGE_SUPER /* Large-sized generic: meta and raw */
714 
715 /* Type of prefix for opening prefixed files */
716 typedef enum H5F_prefix_open_t {
717  H5F_PREFIX_VDS = 0, /* Virtual dataset prefix */
718  H5F_PREFIX_ELINK = 1, /* External link prefix */
719  H5F_PREFIX_EFILE = 2 /* External file prefix */
721 
722 
723 /*****************************/
724 /* Library-private Variables */
725 /*****************************/
726 
727 
728 /***************************************/
729 /* Library-private Function Prototypes */
730 /***************************************/
731 
732 /* Private functions */
733 H5_DLL herr_t H5F_init(void);
734 H5_DLL H5F_t *H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id);
735 H5_DLL herr_t H5F_try_close(H5F_t *f, hbool_t *was_closed/*out*/);
736 H5_DLL hid_t H5F_get_file_id(H5VL_object_t *vol_obj, H5I_type_t obj_type, hbool_t app_ref);
737 
738 /* Functions that retrieve values from the file struct */
741 H5_DLL unsigned H5F_shared_get_intent(const H5F_shared_t *f);
742 H5_DLL unsigned H5F_get_intent(const H5F_t *f);
743 H5_DLL char *H5F_get_open_name(const H5F_t *f);
744 H5_DLL char *H5F_get_actual_name(const H5F_t *f);
745 H5_DLL char *H5F_get_extpath(const H5F_t *f);
747 H5_DLL hbool_t H5F_same_shared(const H5F_t *f1, const H5F_t *f2);
748 H5_DLL unsigned H5F_get_nopen_objs(const H5F_t *f);
749 H5_DLL unsigned H5F_incr_nopen_objs(H5F_t *f);
750 H5_DLL unsigned H5F_decr_nopen_objs(H5F_t *f);
753 H5_DLL unsigned H5F_get_nmounts(const H5F_t *f);
754 H5_DLL unsigned H5F_get_read_attempts(const H5F_t *f);
757 H5_DLL herr_t H5F_get_obj_count(const H5F_t *f, unsigned types, hbool_t app_ref, size_t *obj_id_count_ptr);
758 H5_DLL herr_t H5F_get_obj_ids(const H5F_t *f, unsigned types, size_t max_objs, hid_t *oid_list, hbool_t app_ref, size_t *obj_id_count_ptr);
764 H5_DLL const H5VL_class_t *H5F_get_vol_cls(const H5F_t *f);
766 
767 /* Functions than retrieve values set/cached from the superblock/FCPL */
769 H5_DLL unsigned H5F_sym_leaf_k(const H5F_t *f);
770 H5_DLL unsigned H5F_Kvalue(const H5F_t *f, const struct H5B_class_t *type);
771 H5_DLL unsigned H5F_get_nrefs(const H5F_t *f);
776 H5_DLL unsigned H5F_get_sohm_vers(const H5F_t *f);
777 H5_DLL herr_t H5F_set_sohm_vers(H5F_t *f, unsigned vers);
778 H5_DLL unsigned H5F_get_sohm_nindexes(const H5F_t *f);
779 H5_DLL herr_t H5F_set_sohm_nindexes(H5F_t *f, unsigned nindexes);
783 H5_DLL size_t H5F_rdcc_nbytes(const H5F_t *f);
784 H5_DLL size_t H5F_rdcc_nslots(const H5F_t *f);
785 H5_DLL double H5F_rdcc_w0(const H5F_t *f);
786 H5_DLL size_t H5F_sieve_buf_size(const H5F_t *f);
787 H5_DLL unsigned H5F_gc_ref(const H5F_t *f);
790 H5_DLL struct H5UC_t *H5F_grp_btree_shared(const H5F_t *f);
796 #ifdef H5_HAVE_PARALLEL
797 H5_DLL H5P_coll_md_read_flag_t H5F_coll_md_read(const H5F_t *f);
798 H5_DLL void H5F_set_coll_md_read(H5F_t *f, H5P_coll_md_read_flag_t flag);
799 #endif /* H5_HAVE_PARALLEL */
802 H5_DLL char *H5F_mdc_log_location(const H5F_t *f);
803 
804 /* Functions that retrieve values from VFD layer */
806 H5_DLL herr_t H5F_get_fileno(const H5F_t *f, unsigned long *filenum);
807 H5_DLL hbool_t H5F_shared_has_feature(const H5F_shared_t *f, unsigned feature);
808 H5_DLL hbool_t H5F_has_feature(const H5F_t *f, unsigned feature);
811 H5_DLL herr_t H5F_get_vfd_handle(const H5F_t *file, hid_t fapl, void **file_handle);
812 
813 /* Functions that check file mounting information */
814 H5_DLL hbool_t H5F_is_mount(const H5F_t *file);
815 H5_DLL hbool_t H5F_has_mount(const H5F_t *file);
816 H5_DLL herr_t H5F_traverse_mount(struct H5O_loc_t *oloc/*in,out*/);
818 
819 /* Functions that operate on blocks of bytes wrt super block */
820 H5_DLL herr_t H5F_shared_block_read(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr, size_t size, void *buf/*out*/);
821 H5_DLL herr_t H5F_block_read(H5F_t *f, H5FD_mem_t type, haddr_t addr, size_t size, void *buf/*out*/);
822 H5_DLL herr_t H5F_shared_block_write(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr, size_t size, const void *buf);
823 H5_DLL herr_t H5F_block_write(H5F_t *f, H5FD_mem_t type, haddr_t addr, size_t size, const void *buf);
824 
825 /* Functions that flush or evict */
828 
829 /* Functions that verify a piece of metadata with checksum */
830 H5_DLL herr_t H5F_get_checksums(const uint8_t *buf, size_t chk_size, uint32_t *s_chksum, uint32_t *c_chksum);
831 
832 /* Routine to track the # of retries */
833 H5_DLL herr_t H5F_track_metadata_read_retries(H5F_t *f, unsigned actype, unsigned retries);
836 
837 /* Routine to invoke callback function upon object flush */
839 
840 /* Address-related functions */
841 H5_DLL void H5F_addr_encode(const H5F_t *f, uint8_t **pp, haddr_t addr);
842 H5_DLL void H5F_addr_encode_len(size_t addr_len, uint8_t **pp, haddr_t addr);
843 H5_DLL void H5F_addr_decode(const H5F_t *f, const uint8_t **pp, haddr_t *addr_p);
844 H5_DLL void H5F_addr_decode_len(size_t addr_len, const uint8_t **pp, haddr_t *addr_p);
845 
846 /* Shared file list related routines */
847 H5_DLL void H5F_sfile_assert_num(unsigned n);
848 
849 /* Routines for creating & destroying "fake" file structures */
850 H5_DLL H5F_t *H5F_fake_alloc(uint8_t sizeof_size);
852 
853 /* Superblock related routines */
856 
857 /* Parallel I/O (i.e. MPI) related routines */
858 #ifdef H5_HAVE_PARALLEL
859 H5_DLL herr_t H5F_get_mpi_handle(const H5F_t *f, MPI_File **f_handle);
860 H5_DLL int H5F_mpi_get_rank(const H5F_t *f);
861 H5_DLL MPI_Comm H5F_mpi_get_comm(const H5F_t *f);
862 H5_DLL int H5F_shared_mpi_get_size(const H5F_shared_t *f_sh);
863 H5_DLL int H5F_mpi_get_size(const H5F_t *f);
864 H5_DLL herr_t H5F_mpi_retrieve_comm(hid_t loc_id, hid_t acspl_id, MPI_Comm *mpi_comm);
865 H5_DLL herr_t H5F_get_mpi_info(const H5F_t *f, MPI_Info **f_info);
866 H5_DLL herr_t H5F_get_mpi_atomicity(H5F_t *file, hbool_t *flag);
867 H5_DLL herr_t H5F_set_mpi_atomicity(H5F_t *file, hbool_t flag);
868 #endif /* H5_HAVE_PARALLEL */
869 
870 /* External file cache routines */
871 H5_DLL herr_t H5F_efc_close(H5F_t *parent, H5F_t *file);
872 
873 /* File prefix routines */
874 H5_DLL H5F_t *H5F_prefix_open_file(H5F_t *primary_file, H5F_prefix_open_t prefix_type,
875  const char *prop_prefix, const char *file_name, unsigned file_intent, hid_t fapl_id);
876 
877 /* Global heap CWFS routines */
879 H5_DLL herr_t H5F_cwfs_find_free_heap(H5F_t *f, size_t need, haddr_t *addr);
882 
883 /* Debugging functions */
884 H5_DLL herr_t H5F_debug(H5F_t *f, FILE * stream, int indent, int fwidth);
885 
886 #endif /* _H5Fprivate_H */
887 
H5F_object_flush_t
struct H5F_object_flush_t H5F_object_flush_t
H5F_get_null_fsm_addr
H5_DLL hbool_t H5F_get_null_fsm_addr(const H5F_t *f)
Definition: H5Fquery.c:1272
H5O_loc_t
Definition: H5Oprivate.h:152
H5F_MEM_PAGE_NTYPES
@ H5F_MEM_PAGE_NTYPES
Definition: H5Fprivate.h:703
H5F_cwfs_add
H5_DLL herr_t H5F_cwfs_add(H5F_t *f, struct H5HG_heap_t *heap)
Definition: H5Fcwfs.c:106
H5F_gc_ref
H5_DLL unsigned H5F_gc_ref(const H5F_t *f)
Definition: H5Fquery.c:771
H5F_use_tmp_space
H5_DLL hbool_t H5F_use_tmp_space(const H5F_t *f)
Definition: H5Fquery.c:1068
H5F_set_sohm_addr
H5_DLL herr_t H5F_set_sohm_addr(H5F_t *f, haddr_t addr)
Definition: H5Fint.c:2662
H5F_track_metadata_read_retries
H5_DLL herr_t H5F_track_metadata_read_retries(H5F_t *f, unsigned actype, unsigned retries)
Definition: H5Fint.c:2975
H5F_try_close
H5_DLL herr_t H5F_try_close(H5F_t *f, hbool_t *was_closed)
Definition: H5Fint.c:2077
H5F_close_degree_t
H5F_close_degree_t
Definition: H5Fpublic.h:102
size
iblock size
Definition: H5EAcache.c:787
f
hdr f
Definition: H5EA.c:755
H5F_mdc_log_location
H5_DLL char * H5F_mdc_log_location(const H5F_t *f)
Definition: H5Fquery.c:1163
H5F_sieve_buf_size
H5_DLL size_t H5F_sieve_buf_size(const H5F_t *f)
Definition: H5Fquery.c:742
H5F_open
H5_DLL H5F_t * H5F_open(const char *name, unsigned flags, hid_t fcpl_id, hid_t fapl_id)
Definition: H5Fint.c:1502
H5F_block_t
Definition: H5Fprivate.h:675
H5F_get_eoa
H5_DLL haddr_t H5F_get_eoa(const H5F_t *f, H5FD_mem_t type)
Definition: H5Fquery.c:984
H5F_MEM_PAGE_LARGE_DRAW
@ H5F_MEM_PAGE_LARGE_DRAW
Definition: H5Fprivate.h:699
H5F_object_flush_t::udata
void * udata
Definition: H5Fprivate.h:671
H5F_PREFIX_ELINK
@ H5F_PREFIX_ELINK
Definition: H5Fprivate.h:713
H5F_get_fc_degree
H5_DLL H5F_close_degree_t H5F_get_fc_degree(const H5F_t *f)
Definition: H5Fquery.c:793
H5Pprivate.h
H5F_rdcc_w0
H5_DLL double H5F_rdcc_w0(const H5F_t *f)
Definition: H5Fquery.c:668
H5F_efc_close
H5_DLL herr_t H5F_efc_close(H5F_t *parent, H5F_t *file)
Definition: H5Fefc.c:357
H5VL_object_t
Definition: H5VLprivate.h:39
H5F_rdcc_nslots
H5_DLL size_t H5F_rdcc_nslots(const H5F_t *f)
Definition: H5Fquery.c:618
H5F_set_retries
H5_DLL herr_t H5F_set_retries(H5F_t *f)
Definition: H5Fint.c:3020
uint32_t
uint32_t
Definition: H5overflow.txt:38
H5F_sfile_assert_num
H5_DLL void H5F_sfile_assert_num(unsigned n)
Definition: H5Fsfile.c:55
H5F_block_read
H5_DLL herr_t H5F_block_read(H5F_t *f, H5FD_mem_t type, haddr_t addr, size_t size, void *buf)
Definition: H5Fio.c:139
H5F_MEM_PAGE_DEFAULT
@ H5F_MEM_PAGE_DEFAULT
Definition: H5Fprivate.h:690
H5I_type_t
H5I_type_t
Definition: H5Ipublic.h:33
H5F_MEM_PAGE_SUPER
@ H5F_MEM_PAGE_SUPER
Definition: H5Fprivate.h:691
H5F_get_high_bound
H5_DLL H5F_libver_t H5F_get_high_bound(const H5F_t *f)
Definition: H5Fquery.c:160
haddr_t
CATCH haddr_t
Definition: H5EAdblock.c:162
H5F_has_mount
H5_DLL hbool_t H5F_has_mount(const H5F_t *file)
indent
*s *s indent
Definition: H5HLdbg.c:111
H5VLprivate.h
H5F_addr_encode
H5_DLL void H5F_addr_encode(const H5F_t *f, uint8_t **pp, haddr_t addr)
Definition: H5Fint.c:2524
H5F_init
H5_DLL herr_t H5F_init(void)
Definition: H5F.c:129
H5F_get_sohm_addr
H5_DLL haddr_t H5F_get_sohm_addr(const H5F_t *f)
Definition: H5Fquery.c:458
H5F_file_id_exists
H5_DLL hbool_t H5F_file_id_exists(const H5F_t *f)
Definition: H5Fquery.c:310
H5F_is_tmp_addr
H5_DLL hbool_t H5F_is_tmp_addr(const H5F_t *f, haddr_t addr)
Definition: H5Fquery.c:1044
H5F_blk_aggr_t
Definition: H5Fpkg.h:181
H5F_prefix_open_t
H5F_prefix_open_t
Definition: H5Fprivate.h:711
H5F_get_parent
H5_DLL H5F_t * H5F_get_parent(const H5F_t *f)
Definition: H5Fquery.c:330
H5P_coll_md_read_flag_t
H5P_coll_md_read_flag_t
Definition: H5Pprivate.h:52
H5F_shared_get_intent
H5_DLL unsigned H5F_shared_get_intent(const H5F_shared_t *f)
Definition: H5Fquery.c:88
H5F_flush_mounts
H5_DLL herr_t H5F_flush_mounts(H5F_t *f)
Definition: H5Fmount.c:684
H5F_Kvalue
H5_DLL unsigned H5F_Kvalue(const H5F_t *f, const struct H5B_class_t *type)
H5F_FS_STATE_OPEN
@ H5F_FS_STATE_OPEN
Definition: H5Fprivate.h:683
H5F_block_t::offset
haddr_t offset
Definition: H5Fprivate.h:676
H5F_flush_tagged_metadata
H5_DLL herr_t H5F_flush_tagged_metadata(H5F_t *f, haddr_t tag)
Definition: H5Fio.c:273
uint8_t
unsigned char uint8_t
Definition: H5private.h:429
H5F_FS_STATE_DELETING
@ H5F_FS_STATE_DELETING
Definition: H5Fprivate.h:684
H5F_get_threshold
H5_DLL hsize_t H5F_get_threshold(const H5F_t *f)
Definition: H5Fquery.c:1207
H5F_MEM_PAGE_LARGE_SUPER
@ H5F_MEM_PAGE_LARGE_SUPER
Definition: H5Fprivate.h:697
H5F_get_file_id
H5_DLL hid_t H5F_get_file_id(H5VL_object_t *vol_obj, H5I_type_t obj_type, hbool_t app_ref)
Definition: H5Fint.c:3596
H5B_class_t
Definition: H5Bprivate.h:111
H5F_traverse_mount
H5_DLL herr_t H5F_traverse_mount(struct H5O_loc_t *oloc)
Definition: H5Fmount.c:720
H5F_object_flush_t::func
H5F_flush_cb_t func
Definition: H5Fprivate.h:670
H5F_MEM_PAGE_LARGE_OHDR
@ H5F_MEM_PAGE_LARGE_OHDR
Definition: H5Fprivate.h:702
H5P_genplist_t
Definition: H5Ppkg.h:107
H5F_retry_info_t
Definition: H5Fpublic.h:198
H5F_addr_decode_len
H5_DLL void H5F_addr_decode_len(size_t addr_len, const uint8_t **pp, haddr_t *addr_p)
Definition: H5Fint.c:2551
H5F_get_vol_obj
H5_DLL H5VL_object_t * H5F_get_vol_obj(const H5F_t *f)
Definition: H5Fquery.c:1318
H5F_set_grp_btree_shared
H5_DLL herr_t H5F_set_grp_btree_shared(H5F_t *f, struct H5UC_t *rc)
Definition: H5Fint.c:2637
H5F_mem_page_t
H5F_mem_page_t
Definition: H5Fprivate.h:689
H5F_get_fileno
H5_DLL herr_t H5F_get_fileno(const H5F_t *f, unsigned long *filenum)
Definition: H5Fquery.c:929
H5F_get_metadata_read_retry_info
H5_DLL herr_t H5F_get_metadata_read_retry_info(H5F_t *file, H5F_retry_info_t *info)
Definition: H5Fint.c:3208
H5F_shared_t
Definition: H5Fpkg.h:242
H5F_get_extpath
H5_DLL char * H5F_get_extpath(const H5F_t *f)
Definition: H5Fquery.c:226
H5F_get_pgend_meta_thres
H5_DLL hsize_t H5F_get_pgend_meta_thres(const H5F_t *f)
Definition: H5Fquery.c:1229
hid_t
int64_t hid_t
Definition: H5Ipublic.h:55
H5F_MEM_PAGE_BTREE
@ H5F_MEM_PAGE_BTREE
Definition: H5Fprivate.h:692
H5F_grp_btree_shared
H5_DLL struct H5UC_t * H5F_grp_btree_shared(const H5F_t *f)
Definition: H5Fquery.c:717
H5F_block_t::length
hsize_t length
Definition: H5Fprivate.h:677
H5F_set_sohm_vers
H5_DLL herr_t H5F_set_sohm_vers(H5F_t *f, unsigned vers)
Definition: H5Fint.c:2686
H5UC_t
Definition: H5UCprivate.h:43
H5F_get_alignment
H5_DLL hsize_t H5F_get_alignment(const H5F_t *f)
Definition: H5Fquery.c:1185
H5HG_heap_t
Definition: H5HGpkg.h:122
H5F_PREFIX_VDS
@ H5F_PREFIX_VDS
Definition: H5Fprivate.h:712
FILE
Invalid arguments to routine Resource unavailable Internal File accessibility Low level I O Function entry exit Object atom Object cache Links B Tree node Symbol table Heap Object header Datatype Dataspace Dataset Data storage Property lists Attribute Data filters External file list References Virtual File Layer Virtual Object Layer Ternary Search Trees Reference Counted Strings Error API Skip Lists Free Space Manager Shared Object Header Messages Extensible Array Fixed Array Plugin for dynamically loaded library Page Buffering API Context Map No error Argument errors Resource errors File accessibility errors FILE
Definition: H5err.txt:88
H5F_shared_block_read
H5_DLL herr_t H5F_shared_block_read(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr, size_t size, void *buf)
Definition: H5Fio.c:95
H5F_decr_nopen_objs
H5_DLL unsigned H5F_decr_nopen_objs(H5F_t *f)
Definition: H5Fint.c:2344
H5F_fake_alloc
H5_DLL H5F_t * H5F_fake_alloc(uint8_t sizeof_size)
Definition: H5Ffake.c:43
H5F_PREFIX_EFILE
@ H5F_PREFIX_EFILE
Definition: H5Fprivate.h:714
H5F_use_mdc_logging
H5_DLL hbool_t H5F_use_mdc_logging(const H5F_t *f)
Definition: H5Fquery.c:1115
H5F_get_point_of_no_return
H5_DLL hbool_t H5F_get_point_of_no_return(const H5F_t *f)
Definition: H5Fquery.c:1251
H5F_MEM_PAGE_LHEAP
@ H5F_MEM_PAGE_LHEAP
Definition: H5Fprivate.h:695
H5F_get_intent
H5_DLL unsigned H5F_get_intent(const H5F_t *f)
Definition: H5Fquery.c:110
H5F_sizeof_addr
H5_DLL uint8_t H5F_sizeof_addr(const H5F_t *f)
Definition: H5Fquery.c:414
H5F_get_sohm_vers
H5_DLL unsigned H5F_get_sohm_vers(const H5F_t *f)
Definition: H5Fquery.c:479
H5F_fake_free
H5_DLL herr_t H5F_fake_free(H5F_t *f)
Definition: H5Ffake.c:88
H5F_get_low_bound
H5_DLL H5F_libver_t H5F_get_low_bound(const H5F_t *f)
Definition: H5Fquery.c:135
H5F_get_vfd_handle
H5_DLL herr_t H5F_get_vfd_handle(const H5F_t *file, hid_t fapl, void **file_handle)
Definition: H5Fquery.c:1013
H5F_FS_STATE_CLOSED
@ H5F_FS_STATE_CLOSED
Definition: H5Fprivate.h:682
H5F_block_write
H5_DLL herr_t H5F_block_write(H5F_t *f, H5FD_mem_t type, haddr_t addr, size_t size, const void *buf)
Definition: H5Fio.c:229
H5F_evict_tagged_metadata
H5_DLL herr_t H5F_evict_tagged_metadata(H5F_t *f, haddr_t tag)
Definition: H5Fio.c:309
fwidth
*s *s fwidth
Definition: H5HLdbg.c:111
H5F_fs_state_t
H5F_fs_state_t
Definition: H5Fprivate.h:681
H5VMprivate.h
H5F_get_evict_on_close
H5_DLL hbool_t H5F_get_evict_on_close(const H5F_t *f)
Definition: H5Fquery.c:817
H5F_debug
H5_DLL herr_t H5F_debug(H5F_t *f, FILE *stream, int indent, int fwidth)
Definition: H5Fdbg.c:48
H5F_get_open_name
H5_DLL char * H5F_get_open_name(const H5F_t *f)
Definition: H5Fquery.c:181
H5F_super_dirty
H5_DLL herr_t H5F_super_dirty(H5F_t *f)
Definition: H5Fsuper.c:1547
H5FD_mem_t
enum H5F_mem_t H5FD_mem_t
Definition: H5FDpublic.h:28
H5F_set_sohm_nindexes
H5_DLL herr_t H5F_set_sohm_nindexes(H5F_t *f, unsigned nindexes)
Definition: H5Fint.c:2710
H5F_MEM_PAGE_GHEAP
@ H5F_MEM_PAGE_GHEAP
Definition: H5Fprivate.h:694
H5F_addr_decode
H5_DLL void H5F_addr_decode(const H5F_t *f, const uint8_t **pp, haddr_t *addr_p)
Definition: H5Fint.c:2615
H5F_get_nrefs
H5_DLL unsigned H5F_get_nrefs(const H5F_t *f)
Definition: H5Fquery.c:593
H5F_get_shared
H5_DLL H5F_shared_t * H5F_get_shared(const H5F_t *f)
Definition: H5Fquery.c:247
H5F_prefix_open_file
H5_DLL H5F_t * H5F_prefix_open_file(H5F_t *primary_file, H5F_prefix_open_t prefix_type, const char *prop_prefix, const char *file_name, unsigned file_intent, hid_t fapl_id)
Definition: H5Fint.c:632
H5F_libver_t
H5F_libver_t
Definition: H5Fpublic.h:162
H5_DLL
#define H5_DLL
Definition: H5api_adpt.h:234
H5F_object_flush_t
Definition: H5Fprivate.h:669
H5F_object_flush_cb
H5_DLL herr_t H5F_object_flush_cb(H5F_t *f, hid_t obj_id)
Definition: H5Fint.c:3057
H5F_get_min_dset_ohdr
H5_DLL hbool_t H5F_get_min_dset_ohdr(const H5F_t *f)
Definition: H5Fquery.c:547
H5F_get_nopen_objs
H5_DLL unsigned H5F_get_nopen_objs(const H5F_t *f)
Definition: H5Fquery.c:290
H5F_MEM_PAGE_LARGE_BTREE
@ H5F_MEM_PAGE_LARGE_BTREE
Definition: H5Fprivate.h:698
H5F_get_vol_cls
H5_DLL const H5VL_class_t * H5F_get_vol_cls(const H5F_t *f)
Definition: H5Fquery.c:1297
H5F_MEM_PAGE_LARGE_GHEAP
@ H5F_MEM_PAGE_LARGE_GHEAP
Definition: H5Fprivate.h:700
heap
CATCH unable to release unprotect heap
Definition: H5HLdbg.c:119
H5F_cwfs_remove_heap
H5_DLL herr_t H5F_cwfs_remove_heap(H5F_shared_t *shared, struct H5HG_heap_t *heap)
Definition: H5Fcwfs.c:302
H5VL_class_t
Definition: H5VLconnector.h:463
H5F_start_mdc_log_on_access
H5_DLL hbool_t H5F_start_mdc_log_on_access(const H5F_t *f)
Definition: H5Fquery.c:1139
H5F_MEM_PAGE_DRAW
@ H5F_MEM_PAGE_DRAW
Definition: H5Fprivate.h:693
H5F_cwfs_find_free_heap
H5_DLL herr_t H5F_cwfs_find_free_heap(H5F_t *f, size_t need, haddr_t *addr)
Definition: H5Fcwfs.c:162
H5F_flush_cb_t
herr_t(* H5F_flush_cb_t)(hid_t object_id, void *udata)
Definition: H5Fpublic.h:204
H5F_get_base_addr
H5_DLL haddr_t H5F_get_base_addr(const H5F_t *f)
Definition: H5Fquery.c:691
H5F_set_store_msg_crt_idx
H5_DLL herr_t H5F_set_store_msg_crt_idx(H5F_t *f, hbool_t flag)
Definition: H5Fint.c:2734
H5F_get_obj_count
H5_DLL herr_t H5F_get_obj_count(const H5F_t *f, unsigned types, hbool_t app_ref, size_t *obj_id_count_ptr)
Definition: H5Fint.c:293
H5F_get_access_plist
H5_DLL hid_t H5F_get_access_plist(H5F_t *f, hbool_t app_ref)
Definition: H5Fint.c:179
H5F_t
Definition: H5Fpkg.h:374
H5F_get_id
H5_DLL hid_t H5F_get_id(H5F_t *file)
Definition: H5Fint.c:2288
n
*s *s n
Definition: H5HLdbg.c:111
H5F_get_nmounts
H5_DLL unsigned H5F_get_nmounts(const H5F_t *f)
Definition: H5Fquery.c:350
H5F_is_mount
H5_DLL hbool_t H5F_is_mount(const H5F_t *file)
Definition: H5Fmount.c:412
H5F_block_t
struct H5F_block_t H5F_block_t
H5F_sym_leaf_k
H5_DLL unsigned H5F_sym_leaf_k(const H5F_t *f)
Definition: H5Fquery.c:525
H5F_get_driver_id
H5_DLL hid_t H5F_get_driver_id(const H5F_t *f)
Definition: H5Fquery.c:905
H5Fpublic.h
herr_t
int herr_t
Definition: H5public.h:128
H5F_store_msg_crt_idx
H5_DLL hbool_t H5F_store_msg_crt_idx(const H5F_t *f)
Definition: H5Fquery.c:839
H5F_get_checksums
H5_DLL herr_t H5F_get_checksums(const uint8_t *buf, size_t chk_size, uint32_t *s_chksum, uint32_t *c_chksum)
Definition: H5Fio.c:394
hbool_t
bool hbool_t
Definition: H5public.h:159
H5F_get_read_attempts
H5_DLL unsigned H5F_get_read_attempts(const H5F_t *f)
Definition: H5Fquery.c:370
H5F_incr_nopen_objs
H5_DLL unsigned H5F_incr_nopen_objs(H5F_t *f)
Definition: H5Fint.c:2323
H5F_get_obj_ids
H5_DLL herr_t H5F_get_obj_ids(const H5F_t *f, unsigned types, size_t max_objs, hid_t *oid_list, hbool_t app_ref, size_t *obj_id_count_ptr)
Definition: H5Fint.c:320
hsize_t
hsize_t
Definition: H5overflow.txt:44
H5F_same_shared
H5_DLL hbool_t H5F_same_shared(const H5F_t *f1, const H5F_t *f2)
Definition: H5Fquery.c:267
H5F_has_feature
H5_DLL hbool_t H5F_has_feature(const H5F_t *f, unsigned feature)
Definition: H5Fquery.c:882
H5F_shared_get_eoa
H5_DLL haddr_t H5F_shared_get_eoa(const H5F_shared_t *f_sh, H5FD_mem_t type)
Definition: H5Fquery.c:958
H5F_get_sohm_nindexes
H5_DLL unsigned H5F_get_sohm_nindexes(const H5F_t *f)
Definition: H5Fquery.c:500
H5F_set_min_dset_ohdr
H5_DLL herr_t H5F_set_min_dset_ohdr(H5F_t *f, hbool_t minimize)
Definition: H5Fint.c:3655
H5FDpublic.h
H5F_shared_has_feature
H5_DLL hbool_t H5F_shared_has_feature(const H5F_shared_t *f, unsigned feature)
Definition: H5Fquery.c:861
H5F_addr_encode_len
H5_DLL void H5F_addr_encode_len(size_t addr_len, uint8_t **pp, haddr_t addr)
Definition: H5Fint.c:2487
H5F_rdcc_nbytes
H5_DLL size_t H5F_rdcc_nbytes(const H5F_t *f)
Definition: H5Fquery.c:643
H5F_shared_block_write
H5_DLL herr_t H5F_shared_block_write(H5F_shared_t *f_sh, H5FD_mem_t type, haddr_t addr, size_t size, const void *buf)
Definition: H5Fio.c:184
H5F_cwfs_advance_heap
H5_DLL herr_t H5F_cwfs_advance_heap(H5F_t *f, struct H5HG_heap_t *heap, hbool_t add_heap)
Definition: H5Fcwfs.c:258
H5F_MEM_PAGE_OHDR
@ H5F_MEM_PAGE_OHDR
Definition: H5Fprivate.h:696
H5F_get_fcpl
H5_DLL hid_t H5F_get_fcpl(const H5F_t *f)
Definition: H5Fquery.c:391
H5F_get_actual_name
H5_DLL char * H5F_get_actual_name(const H5F_t *f)
Definition: H5Fquery.c:203
H5F_sizeof_size
H5_DLL uint8_t H5F_sizeof_size(const H5F_t *f)
Definition: H5Fquery.c:437
H5F_eoa_dirty
H5_DLL herr_t H5F_eoa_dirty(H5F_t *f)
Definition: H5Fsuper.c:1499
H5F_MEM_PAGE_LARGE_LHEAP
@ H5F_MEM_PAGE_LARGE_LHEAP
Definition: H5Fprivate.h:701
H5MMprivate.h