HDF5  1.12.0
H5EApkg.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  * Programmer: Quincey Koziol <koziol@hdfgroup.org>
16  * Tuesday, June 17, 2008
17  *
18  * Purpose: This file contains declarations which are visible only
19  * within the H5EA package. Source files outside the H5EA
20  * package should include H5EAprivate.h instead.
21  */
22 #if !(defined(H5EA_FRIEND) | defined(H5EA_MODULE))
23 #error "Do not include this file outside the H5EA package!"
24 #endif
25 
26 #ifndef _H5EApkg_H
27 #define _H5EApkg_H
28 
29 /* Get package's private header */
30 #include "H5EAprivate.h"
31 
32 /* Other private headers needed by this file */
33 #include "H5FLprivate.h" /* Free Lists */
34 
35 
36 /**************************/
37 /* Package Private Macros */
38 /**************************/
39 
40 /* Fill value for extensible array test class */
41 #ifdef H5EA_TESTING
42 #define H5EA_TEST_FILL ((uint64_t)ULLONG_MAX)
43 #endif /* H5EA_TESTING */
44 
45 /* Size of checksum information (on disk) */
46 #define H5EA_SIZEOF_CHKSUM 4
47 
48 /* "Standard" size of prefix information for extensible array metadata */
49 #define H5EA_METADATA_PREFIX_SIZE(c) ( \
50  H5_SIZEOF_MAGIC /* Signature */ \
51  + 1 /* Version */ \
52  + 1 /* Array type */ \
53  + ((c) ? H5EA_SIZEOF_CHKSUM : 0) /* Metadata checksum */ \
54  )
55 
56 /* Size of the extensible array header on disk */
57 #define H5EA_HEADER_SIZE(sizeof_addr, sizeof_size) ( \
58  /* General metadata fields */ \
59  H5EA_METADATA_PREFIX_SIZE(TRUE) \
60  \
61  /* General array information */ \
62  + 1 /* Element Size */ \
63  + 1 /* Max. # of elements bits */ \
64  + 1 /* # of elements to store in index block */ \
65  + 1 /* Min. # elements per data block */ \
66  + 1 /* Min. # of data block pointers for a super block */ \
67  + 1 /* Log2(Max. # of elements in data block page) - i.e. # of bits needed to store max. # of elements in data block page */ \
68  \
69  /* Extensible Array statistics fields */ \
70  + (sizeof_size) /* Number of super blocks created */ \
71  + (sizeof_size) /* Size of super blocks created */ \
72  + (sizeof_size) /* Number of data blocks created */ \
73  + (sizeof_size) /* Size of data blocks created */ \
74  + (sizeof_size) /* Max. index set */ \
75  + (sizeof_size) /* Number of elements 'realized' */ \
76  \
77  /* Extensible Array Header specific fields */ \
78  + (sizeof_addr) /* File address of index block */ \
79  )
80 
81 /* Size of the extensible array header on disk (via file pointer) */
82 #define H5EA_HEADER_SIZE_FILE(f) ( \
83  H5EA_HEADER_SIZE(H5F_SIZEOF_ADDR(f), H5F_SIZEOF_SIZE(f)) \
84  )
85 
86 /* Size of the extensible array header on disk (via extensible array header) */
87 #define H5EA_HEADER_SIZE_HDR(h) ( \
88  H5EA_HEADER_SIZE((h)->sizeof_addr, (h)->sizeof_size) \
89  )
90 
91 /* Size of the extensible array index block on disk */
92 #define H5EA_IBLOCK_SIZE(i) ( \
93  /* General metadata fields */ \
94  H5EA_METADATA_PREFIX_SIZE(TRUE) \
95  \
96  /* Sanity-checking fields */ \
97  + (i)->hdr->sizeof_addr /* File address of array owning the block */ \
98  \
99  /* Extensible Array Index Block specific fields */ \
100  + ((size_t)(i)->hdr->cparam.idx_blk_elmts * (size_t)(i)->hdr->cparam.raw_elmt_size) /* Elements in index block */ \
101  + ((i)->ndblk_addrs * (i)->hdr->sizeof_addr) /* Data block addresses in index block */ \
102  + ((i)->nsblk_addrs * (i)->hdr->sizeof_addr) /* Super block addresses in index block */ \
103  )
104 
105 /* Size of the extensible array super block on disk */
106 #define H5EA_SBLOCK_SIZE(s) ( \
107  /* General metadata fields */ \
108  H5EA_METADATA_PREFIX_SIZE(TRUE) \
109  \
110  /* Sanity-checking fields */ \
111  + (s)->hdr->sizeof_addr /* File address of array owning the block */ \
112  + (s)->hdr->arr_off_size /* Offset of the block in the array */ \
113  \
114  /* Extensible Array Super Block specific fields */ \
115  + ((s)->ndblks * (s)->dblk_page_init_size) /* Data block 'page init' bitmasks in super block (can be 0 if no pages) */ \
116  + ((s)->ndblks * (s)->hdr->sizeof_addr) /* Data block addresses in super block */ \
117  )
118 
119 /* Size of the extensible array data block prefix on disk */
120 #define H5EA_DBLOCK_PREFIX_SIZE(d) ( \
121  /* General metadata fields */ \
122  H5EA_METADATA_PREFIX_SIZE(TRUE) \
123  \
124  /* Sanity-checking fields */ \
125  + (d)->hdr->sizeof_addr /* File address of array owning the block */ \
126  + (d)->hdr->arr_off_size /* Offset of the block in the array */ \
127  )
128 
129 /* Size of the extensible array data block on disk */
130 #define H5EA_DBLOCK_SIZE(d) ( \
131  /* Data block prefix size */ \
132  H5EA_DBLOCK_PREFIX_SIZE(d) \
133  \
134  /* Extensible Array Data Block specific fields */ \
135  + ((d)->nelmts * (size_t)(d)->hdr->cparam.raw_elmt_size) /* Elements in data block */ \
136  + ((d)->npages * H5EA_SIZEOF_CHKSUM) /* Checksum for each page */ \
137  )
138 
139 /* Size of the extensible array data block page on disk */
140 #define H5EA_DBLK_PAGE_SIZE(h) ( \
141  + ((h)->dblk_page_nelmts * (size_t)(h)->cparam.raw_elmt_size) /* Elements in data block page */ \
142  + H5EA_SIZEOF_CHKSUM /* Checksum for each page */ \
143  )
144 
145 /* Compute the # of bytes required to store an offset into a given buffer size */
146 #define H5EA_SIZEOF_OFFSET_BITS(b) (((b) + 7) / 8)
147 
148 /* Compute the first super block index that will hold a certain # of data block pointers */
149 #define H5EA_SBLK_FIRST_IDX(m) (2 * H5VM_log2_of2((uint32_t)m))
150 
151 /****************************/
152 /* Package Private Typedefs */
153 /****************************/
154 
155 /* Information for each super block in extensible array */
156 typedef struct H5EA_sblk_info_t {
157  size_t ndblks; /* Number of data blocks for a super block */
158  size_t dblk_nelmts; /* Number of elements in each data block for super block */
159  hsize_t start_idx; /* Index of first element in super block */
160  hsize_t start_dblk; /* Index of first data block in super block */
162 
163 /* The extensible array header information */
164 /* (Each extensible array header has certain information that is shared across
165  * all the blocks in that extensible array)
166  */
167 typedef struct H5EA_hdr_t {
168  /* Information for H5AC cache functions, _must_ be first field in structure */
170 
171  /* Extensible array configuration/creation parameters (stored in header) */
172  H5EA_create_t cparam; /* Creation parameters for extensible array */
173 
174  /* Index block information (stored in header) */
175  haddr_t idx_blk_addr; /* Address of index block in header */
176 
177  /* Statistics for array (stored in index block, actually) */
178  /* (header and index number/size fields not stored) */
179  H5EA_stat_t stats; /* Statistics for extensible array */
180 
181  /* Data block element buffer factory info (not stored in header) */
182  struct {
183  size_t nalloc; /* Number of factories allocated */
184  H5FL_fac_head_t **fac; /* Array of factories for data block element buffers */
186 
187  /* Computed/cached values (not stored in header) */
188  size_t rc; /* Reference count of heap's components using heap header */
189  haddr_t addr; /* Address of header in file */
190  size_t size; /* Size of header in file */
191  H5F_t *f; /* Pointer to file for extensible array */
192  size_t file_rc; /* Reference count of files using array header */
193  hbool_t pending_delete; /* Array is pending deletion */
194  size_t sizeof_addr; /* Size of file addresses */
195  size_t sizeof_size; /* Size of file sizes */
196  unsigned char arr_off_size; /* Size of array offsets (in bytes) */
197 
198  /* Super block information (not stored) */
199  size_t nsblks; /* Number of superblocks needed for array */
200  H5EA_sblk_info_t *sblk_info; /* Array of information for each super block */
201 
202  /* Data block information (not stored) */
203  size_t dblk_page_nelmts; /* # of elements per data block page */
204 
205  /* Client information (not stored) */
206  void *cb_ctx; /* Callback context */
207 
208  /* SWMR / Flush dependency information (not stored) */
209  hbool_t swmr_write; /* Flag indicating the file is opened with SWMR-write access */
210  H5AC_proxy_entry_t *top_proxy; /* 'Top' proxy cache entry for all array entries */
211  void *parent; /* Pointer to 'top' proxy flush dependency
212  * parent, if it exists, otherwise NULL.
213  * If the extensible array is being used
214  * to index a chunked dataset and the
215  * dataset metadata is modified by a
216  * SWMR writer, this field will be set
217  * equal to the object header proxy
218  * that is the flush dependency parent
219  * of the extensible array header.
220  *
221  * The field is used to avoid duplicate
222  * setups of the flush dependency
223  * relationship, and to allow the
224  * extensible array header to destroy
225  * the flush dependency on receipt of
226  * an eviction notification from the
227  * metadata cache.
228  */
230 
231 /* The extensible array index block information */
232 typedef struct H5EA_iblock_t {
233  /* Information for H5AC cache functions, _must_ be first field in structure */
235 
236  /* Extensible array information (stored) */
237  void *elmts; /* Buffer for elements stored in index block */
238  haddr_t *dblk_addrs; /* Buffer for addresses of data blocks in index block */
239  haddr_t *sblk_addrs; /* Buffer for addresses of super blocks in index block */
240 
241  /* Internal array information (not stored) */
242  H5EA_hdr_t *hdr; /* Shared array header info */
243  haddr_t addr; /* Address of this index block on disk */
244  size_t size; /* Size of index block on disk */
245 
246  /* SWMR / Flush dependency information (not stored) */
247  H5AC_proxy_entry_t *top_proxy; /* "Top" proxy cache entry for all array entries */
248 
249  /* Computed/cached values (not stored) */
250  size_t nsblks; /* # of super blocks whose data block addresses are in index block */
251  size_t ndblk_addrs; /* Number of pointers to data blocks in index block */
252  size_t nsblk_addrs; /* Number of pointers to super blocks in index block */
254 
255 /* The extensible array super block information */
256 typedef struct H5EA_sblock_t {
257  /* Information for H5AC cache functions, _must_ be first field in structure */
259 
260  /* Extensible array information (stored) */
261  hsize_t block_off; /* Offset of the block within the array's address space */
262  haddr_t *dblk_addrs; /* Addresses of data blocks in super block */
263  uint8_t *page_init; /* Bitmap of whether a data block page is initialized */
264 
265  /* Internal array information (not stored) */
266  H5EA_hdr_t *hdr; /* Shared array header info */
267  haddr_t addr; /* Address of this index block on disk */
268  size_t size; /* Size of index block on disk */
269 
270  /* SWMR / Flush dependency information (not stored) */
271  hbool_t has_hdr_depend; /* Whether this object has a flush dependency on the header */
272  H5AC_proxy_entry_t *top_proxy; /* "Top" proxy cache entry for all array entries */
273  H5EA_iblock_t *parent; /* Parent object for super block (index block) */
274 
275  /* Computed/cached values (not stored) */
276  unsigned idx; /* Super block index within the extensible array */
277  size_t ndblks; /* # of data block addresses that are in super block */
278  size_t dblk_nelmts; /* # of elements for data blocks reachable through this super block */
279  size_t dblk_npages; /* # of pages in each data block */
280  size_t dblk_page_init_size; /* Size of 'page init' bitmask for each data block */
281  size_t dblk_page_size; /* Size of a data block page */
283 
284 /* The extensible array data block information */
285 typedef struct H5EA_dblock_t {
286  /* Information for H5AC cache functions, _must_ be first field in structure */
288 
289  /* Extensible array information (stored) */
290  hsize_t block_off; /* Offset of the block within the array's address space */
291  void *elmts; /* Buffer for elements stored in data block */
292 
293  /* Internal array information (not stored) */
294  H5EA_hdr_t *hdr; /* Shared array header info */
295  haddr_t addr; /* Address of this data block on disk */
296  size_t size; /* Size of data block on disk */
297 
298  /* SWMR / Flush dependency information (not stored) */
299  hbool_t has_hdr_depend; /* Whether this object has a flush dependency on the header */
300  H5AC_proxy_entry_t *top_proxy; /* 'Top' proxy cache entry for all array entries */
301  void *parent; /* Parent object for data block (index or super block) */
302 
303  /* Computed/cached values (not stored) */
304  size_t nelmts; /* Number of elements in block */
305  size_t npages; /* Nummber of pages in a block (zero if not paged) */
307 
308 /* The extensible array data block page information */
309 typedef struct H5EA_dbk_page_t {
310  /* Information for H5AC cache functions, _must_ be first field in structure */
312 
313  /* Extensible array information (stored) */
314  void *elmts; /* Buffer for elements stored in data block page */
315 
316  /* Internal array information (not stored) */
317  H5EA_hdr_t *hdr; /* Shared array header info */
318  haddr_t addr; /* Address of this data block page on disk */
319  size_t size; /* Size of data block page on disk */
320 
321  /* SWMR / Flush dependency information (not stored) */
322  hbool_t has_hdr_depend; /* Whether this object has a flush dependency on the header */
323  H5AC_proxy_entry_t *top_proxy; /* "Top" proxy cache entry for all array entries */
324  H5EA_sblock_t *parent; /* Parent object for data block page (super block) */
325 
326  /* Computed/cached values (not stored) */
327  /* <none> */
329 
330 /* Extensible array */
331 struct H5EA_t {
332  H5EA_hdr_t *hdr; /* Pointer to internal extensible array header info */
333  H5F_t *f; /* Pointer to file for extensible array */
334 };
335 
336 /* Metadata cache callback user data types */
337 
338 /* Info needed for loading header */
339 typedef struct H5EA_hdr_cache_ud_t {
340  H5F_t *f; /* Pointer to file for extensible array */
341  haddr_t addr; /* Address of header on disk */
342  void *ctx_udata; /* User context for class */
344 
345 /* Info needed for loading super block */
346 typedef struct H5EA_sblock_cache_ud_t {
347  H5EA_hdr_t *hdr; /* Shared extensible array information */
348  H5EA_iblock_t *parent; /* Pointer to parent object for super block (index block) */
349  unsigned sblk_idx; /* Index of super block */
350  haddr_t sblk_addr; /* Address of super block */
352 
353 /* Info needed for loading data block */
354 typedef struct H5EA_dblock_cache_ud_t {
355  H5EA_hdr_t *hdr; /* Shared extensible array information */
356  void *parent; /* Pointer to parent object for data block (index or super block) */
357  size_t nelmts; /* Number of elements in data block */
358  haddr_t dblk_addr; /* Address of data block */
360 
361 /* Info needed for loading data block page */
363  H5EA_hdr_t *hdr; /* Shared extensible array information */
364  H5EA_sblock_t *parent; /* Pointer to parent object for data block page (super block) */
365  haddr_t dblk_page_addr; /* Address of data block page */
367 
368 #ifdef H5EA_TESTING
369 typedef struct H5EA__ctx_cb_t {
370  herr_t (*encode)(const void *elmt, size_t nelmts, void *udata); /* Perform action during encode step */
371  void *udata; /* User data for encode action */
372 } H5EA__ctx_cb_t;
373 #endif /* H5EA_TESTING */
374 
375 /*****************************/
376 /* Package Private Variables */
377 /*****************************/
378 
379 /* Internal extensible array testing class */
381 
382 /* Array of extensible array client ID -> client class mappings */
384 
385 
386 /******************************/
387 /* Package Private Prototypes */
388 /******************************/
389 
390 /* Generic routines */
392  H5AC_info_t *child_entry);
394  H5AC_info_t *child_entry);
395 
396 /* Header routines */
400  void *ctx_udata);
409  void *ctx_udata, unsigned flags);
413 
414 /* Index block routines */
421 
422 /* Super block routines */
424  unsigned sblk_idx);
426  hbool_t *stats_changed, unsigned sblk_idx);
428  haddr_t sblk_addr, unsigned sblk_idx, unsigned flags);
431  haddr_t sblk_addr, unsigned sblk_idx);
433 
434 /* Data block routines */
436  size_t nelmts);
438  hbool_t *stats_changed, hsize_t dblk_off, size_t nelmts);
441  haddr_t dblk_addr, size_t dblk_nelmts, unsigned flags);
444  haddr_t dblk_addr, size_t dblk_nelmts);
446 
447 /* Data block page routines */
450  haddr_t addr);
452  H5EA_sblock_t *parent, haddr_t dblk_page_addr, unsigned flags);
454  unsigned cache_flags);
456 
457 /* Debugging routines for dumping file structures */
459  FILE *stream, int indent, int fwidth, const H5EA_class_t *cls, haddr_t obj_addr);
461  FILE *stream, int indent, int fwidth, const H5EA_class_t *cls,
462  haddr_t hdr_addr, haddr_t obj_addr);
464  FILE *stream, int indent, int fwidth, const H5EA_class_t *cls,
465  haddr_t hdr_addr, unsigned sblk_idx, haddr_t obj_addr);
467  FILE *stream, int indent, int fwidth, const H5EA_class_t *cls,
468  haddr_t hdr_addr, size_t dblk_nelmts, haddr_t obj_addr);
469 
470 /* Testing routines */
471 #ifdef H5EA_TESTING
472 H5_DLL herr_t H5EA__get_cparam_test(const H5EA_t *ea, H5EA_create_t *cparam);
473 H5_DLL int H5EA__cmp_cparam_test(const H5EA_create_t *cparam1, const H5EA_create_t *cparam2);
474 #endif /* H5EA_TESTING */
475 
476 #endif /* _H5EApkg_H */
477 
H5EA_hdr_t
Definition: H5EApkg.h:167
H5EA__dblock_dest
H5_DLL herr_t H5EA__dblock_dest(H5EA_dblock_t *dblock)
H5EA__iblock_dest
H5_DLL herr_t H5EA__iblock_dest(H5EA_iblock_t *iblock)
H5EA__hdr_modified
H5_DLL herr_t H5EA__hdr_modified(H5EA_hdr_t *hdr)
H5EA_hdr_t::nalloc
size_t nalloc
Definition: H5EApkg.h:183
H5EA_dblk_page_t
struct H5EA_dbk_page_t H5EA_dblk_page_t
H5EA__dblk_page_create
H5_DLL herr_t H5EA__dblk_page_create(H5EA_hdr_t *hdr, H5EA_sblock_t *parent, haddr_t addr)
H5EA_hdr_cache_ud_t
struct H5EA_hdr_cache_ud_t H5EA_hdr_cache_ud_t
H5EA_client_class_g
H5_DLLVAR const H5EA_class_t *const H5EA_client_class_g[H5EA_NUM_CLS_ID]
Definition: H5EApkg.h:383
H5EA_sblk_info_t::dblk_nelmts
size_t dblk_nelmts
Definition: H5EApkg.h:158
H5EA_hdr_t::pending_delete
hbool_t pending_delete
Definition: H5EApkg.h:193
H5EA_sblock_t::page_init
uint8_t * page_init
Definition: H5EApkg.h:263
H5EA__hdr_protect
H5_DLL H5EA_hdr_t * H5EA__hdr_protect(H5F_t *f, haddr_t ea_addr, void *ctx_udata, unsigned flags)
H5EA__dblock_debug
H5_DLL herr_t H5EA__dblock_debug(H5F_t *f, haddr_t addr, FILE *stream, int indent, int fwidth, const H5EA_class_t *cls, haddr_t hdr_addr, size_t dblk_nelmts, haddr_t obj_addr)
H5EA_dbk_page_t::addr
haddr_t addr
Definition: H5EApkg.h:318
H5EA_dblock_t::npages
size_t npages
Definition: H5EApkg.h:305
H5EA_sblock_t::size
size_t size
Definition: H5EApkg.h:268
H5EA_hdr_t::stats
H5EA_stat_t stats
Definition: H5EApkg.h:179
f
hdr f
Definition: H5EA.c:755
H5EA_hdr_t::nsblks
size_t nsblks
Definition: H5EApkg.h:199
H5EA_dblock_cache_ud_t::hdr
H5EA_hdr_t * hdr
Definition: H5EApkg.h:355
H5EA_dblk_page_cache_ud_t::dblk_page_addr
haddr_t dblk_page_addr
Definition: H5EApkg.h:365
H5EA_hdr_t::f
H5F_t * f
Definition: H5EApkg.h:191
H5EA__dblock_sblk_idx
H5_DLL unsigned H5EA__dblock_sblk_idx(const H5EA_hdr_t *hdr, hsize_t idx)
H5EA_sblock_t::cache_info
H5AC_info_t cache_info
Definition: H5EApkg.h:258
H5EAprivate.h
H5EA__dblk_page_alloc
H5_DLL H5EA_dblk_page_t * H5EA__dblk_page_alloc(H5EA_hdr_t *hdr, H5EA_sblock_t *parent)
H5EA_dblock_t::nelmts
size_t nelmts
Definition: H5EApkg.h:304
H5EA_dbk_page_t::cache_info
H5AC_info_t cache_info
Definition: H5EApkg.h:311
H5EA__dblk_page_dest
H5_DLL herr_t H5EA__dblk_page_dest(H5EA_dblk_page_t *dblk_page)
H5EA_dblk_page_cache_ud_t::parent
H5EA_sblock_t * parent
Definition: H5EApkg.h:364
H5EA_sblock_t::dblk_npages
size_t dblk_npages
Definition: H5EApkg.h:279
H5EA_iblock_t::addr
haddr_t addr
Definition: H5EApkg.h:243
H5EA_dblock_t::block_off
hsize_t block_off
Definition: H5EApkg.h:290
H5EA_hdr_t::sizeof_addr
size_t sizeof_addr
Definition: H5EApkg.h:194
H5EA_CLS_TEST
H5_DLLVAR const H5EA_class_t H5EA_CLS_TEST[1]
Definition: H5EApkg.h:380
H5EA_dbk_page_t::elmts
void * elmts
Definition: H5EApkg.h:314
H5EA__destroy_flush_depend
H5_DLL herr_t H5EA__destroy_flush_depend(H5AC_info_t *parent_entry, H5AC_info_t *child_entry)
H5EA__sblock_protect
H5_DLL H5EA_sblock_t * H5EA__sblock_protect(H5EA_hdr_t *hdr, H5EA_iblock_t *parent, haddr_t sblk_addr, unsigned sblk_idx, unsigned flags)
H5EA_hdr_t::swmr_write
hbool_t swmr_write
Definition: H5EApkg.h:209
H5EA_hdr_t::sizeof_size
size_t sizeof_size
Definition: H5EApkg.h:195
iblock
iblock
Definition: H5EAiblock.c:509
H5EA_sblk_info_t
Definition: H5EApkg.h:156
H5EA_dbk_page_t::hdr
H5EA_hdr_t * hdr
Definition: H5EApkg.h:317
H5EA_dblock_cache_ud_t::dblk_addr
haddr_t dblk_addr
Definition: H5EApkg.h:358
H5EA_hdr_t
struct H5EA_hdr_t H5EA_hdr_t
H5EA__hdr_incr
H5_DLL herr_t H5EA__hdr_incr(H5EA_hdr_t *hdr)
haddr_t
CATCH haddr_t
Definition: H5EAdblock.c:162
H5EA__sblock_dest
H5_DLL herr_t H5EA__sblock_dest(H5EA_sblock_t *sblock)
H5EA__hdr_fuse_decr
H5_DLL size_t H5EA__hdr_fuse_decr(H5EA_hdr_t *hdr)
indent
*s *s indent
Definition: H5HLdbg.c:111
H5EA_sblock_t::has_hdr_depend
hbool_t has_hdr_depend
Definition: H5EApkg.h:271
H5EA_iblock_t::elmts
void * elmts
Definition: H5EApkg.h:237
H5EA_sblock_cache_ud_t::hdr
H5EA_hdr_t * hdr
Definition: H5EApkg.h:347
H5EA__dblock_create
H5_DLL haddr_t H5EA__dblock_create(H5EA_hdr_t *hdr, void *parent, hbool_t *stats_changed, hsize_t dblk_off, size_t nelmts)
H5EA__hdr_create
H5_DLL haddr_t H5EA__hdr_create(H5F_t *f, const H5EA_create_t *cparam, void *ctx_udata)
dblk_page
dblk_page
Definition: H5EAdblkpage.c:334
H5EA__hdr_delete
H5_DLL herr_t H5EA__hdr_delete(H5EA_hdr_t *hdr)
H5EA__dblock_protect
H5_DLL H5EA_dblock_t * H5EA__dblock_protect(H5EA_hdr_t *hdr, void *parent, haddr_t dblk_addr, size_t dblk_nelmts, unsigned flags)
H5EA_sblk_info_t::start_idx
hsize_t start_idx
Definition: H5EApkg.h:159
H5_DLLVAR
#define H5_DLLVAR
Definition: H5api_adpt.h:235
H5EA_iblock_t::top_proxy
H5AC_proxy_entry_t * top_proxy
Definition: H5EApkg.h:247
H5EA__iblock_protect
H5_DLL H5EA_iblock_t * H5EA__iblock_protect(H5EA_hdr_t *hdr, unsigned flags)
H5EA_dblock_cache_ud_t
Definition: H5EApkg.h:354
H5EA_dblk_page_cache_ud_t::hdr
H5EA_hdr_t * hdr
Definition: H5EApkg.h:363
ea
ea
Definition: H5EA.c:925
H5EA_hdr_t::idx_blk_addr
haddr_t idx_blk_addr
Definition: H5EApkg.h:175
H5EA_sblk_info_t
struct H5EA_sblk_info_t H5EA_sblk_info_t
H5EA_hdr_t::size
size_t size
Definition: H5EApkg.h:190
uint8_t
unsigned char uint8_t
Definition: H5private.h:429
H5EA__iblock_create
H5_DLL haddr_t H5EA__iblock_create(H5EA_hdr_t *hdr, hbool_t *stats_changed)
H5EA_dblock_t::hdr
H5EA_hdr_t * hdr
Definition: H5EApkg.h:294
H5EA_hdr_t::cparam
H5EA_create_t cparam
Definition: H5EApkg.h:172
stats_changed
* stats_changed
Definition: H5EAdblock.c:217
H5EA__dblock_alloc
H5_DLL H5EA_dblock_t * H5EA__dblock_alloc(H5EA_hdr_t *hdr, void *parent, size_t nelmts)
hdr
hdr
Definition: H5EAhdr.c:821
H5AC_proxy_entry_t
Definition: H5ACprivate.h:203
H5EA_sblk_info_t::start_dblk
hsize_t start_dblk
Definition: H5EApkg.h:160
H5EA_dblk_page_cache_ud_t
struct H5EA_dblk_page_cache_ud_t H5EA_dblk_page_cache_ud_t
H5FL_fac_head_t
Definition: H5FLprivate.h:354
H5EA_hdr_t::file_rc
size_t file_rc
Definition: H5EApkg.h:192
H5EA_sblock_t::dblk_nelmts
size_t dblk_nelmts
Definition: H5EApkg.h:278
H5EA_dblock_t
Definition: H5EApkg.h:285
H5EA_sblock_cache_ud_t::sblk_idx
unsigned sblk_idx
Definition: H5EApkg.h:349
H5EA_iblock_t
Definition: H5EApkg.h:232
H5EA_iblock_t::cache_info
H5AC_info_t cache_info
Definition: H5EApkg.h:234
H5EA__dblk_page_unprotect
H5_DLL herr_t H5EA__dblk_page_unprotect(H5EA_dblk_page_t *dblk_page, unsigned cache_flags)
H5EA__sblock_delete
H5_DLL herr_t H5EA__sblock_delete(H5EA_hdr_t *hdr, H5EA_iblock_t *parent, haddr_t sblk_addr, unsigned sblk_idx)
H5EA__dblock_unprotect
H5_DLL herr_t H5EA__dblock_unprotect(H5EA_dblock_t *dblock, unsigned cache_flags)
H5EA_iblock_t::hdr
H5EA_hdr_t * hdr
Definition: H5EApkg.h:242
H5EA_sblock_t::dblk_addrs
haddr_t * dblk_addrs
Definition: H5EApkg.h:262
H5EA_hdr_t::parent
void * parent
Definition: H5EApkg.h:211
H5EA_hdr_cache_ud_t::f
H5F_t * f
Definition: H5EApkg.h:340
H5EA_sblock_t
Definition: H5EApkg.h:256
H5EA_dbk_page_t::size
size_t size
Definition: H5EApkg.h:319
H5EA__sblock_create
H5_DLL haddr_t H5EA__sblock_create(H5EA_hdr_t *hdr, H5EA_iblock_t *parent, hbool_t *stats_changed, unsigned sblk_idx)
H5EA_sblock_t
struct H5EA_sblock_t H5EA_sblock_t
H5EA_dbk_page_t
Definition: H5EApkg.h:309
H5EA_sblk_info_t::ndblks
size_t ndblks
Definition: H5EApkg.h:157
H5EA_dblock_t::has_hdr_depend
hbool_t has_hdr_depend
Definition: H5EApkg.h:299
H5EA__hdr_decr
H5_DLL herr_t H5EA__hdr_decr(H5EA_hdr_t *hdr)
H5EA_dblock_cache_ud_t
struct H5EA_dblock_cache_ud_t H5EA_dblock_cache_ud_t
H5EA_NUM_CLS_ID
@ H5EA_NUM_CLS_ID
Definition: H5EAprivate.h:56
H5EA_hdr_t::addr
haddr_t addr
Definition: H5EApkg.h:189
H5EA__hdr_fuse_incr
H5_DLL herr_t H5EA__hdr_fuse_incr(H5EA_hdr_t *hdr)
H5EA_sblock_t::block_off
hsize_t block_off
Definition: H5EApkg.h:261
H5EA_dblock_t
struct H5EA_dblock_t H5EA_dblock_t
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
H5EA_sblock_cache_ud_t::sblk_addr
haddr_t sblk_addr
Definition: H5EApkg.h:350
H5EA_hdr_cache_ud_t::addr
haddr_t addr
Definition: H5EApkg.h:341
H5EA_iblock_t::ndblk_addrs
size_t ndblk_addrs
Definition: H5EApkg.h:251
H5EA__sblock_unprotect
H5_DLL herr_t H5EA__sblock_unprotect(H5EA_sblock_t *sblock, unsigned cache_flags)
H5EA__iblock_delete
H5_DLL herr_t H5EA__iblock_delete(H5EA_hdr_t *hdr)
H5EA_hdr_t::fac
H5FL_fac_head_t ** fac
Definition: H5EApkg.h:184
H5EA__dblock_delete
H5_DLL herr_t H5EA__dblock_delete(H5EA_hdr_t *hdr, void *parent, haddr_t dblk_addr, size_t dblk_nelmts)
H5EA__hdr_dest
H5_DLL herr_t H5EA__hdr_dest(H5EA_hdr_t *hdr)
H5EA_hdr_t::cb_ctx
void * cb_ctx
Definition: H5EApkg.h:206
H5EA_sblock_t::idx
unsigned idx
Definition: H5EApkg.h:276
H5EA_iblock_t::nsblks
size_t nsblks
Definition: H5EApkg.h:250
H5EA__iblock_unprotect
H5_DLL herr_t H5EA__iblock_unprotect(H5EA_iblock_t *iblock, unsigned cache_flags)
H5EA_sblock_t::parent
H5EA_iblock_t * parent
Definition: H5EApkg.h:273
H5EA_dblock_t::size
size_t size
Definition: H5EApkg.h:296
H5EA_hdr_t::sblk_info
H5EA_sblk_info_t * sblk_info
Definition: H5EApkg.h:200
H5EA__hdr_init
H5_DLL herr_t H5EA__hdr_init(H5EA_hdr_t *hdr, void *ctx_udata)
fwidth
*s *s fwidth
Definition: H5HLdbg.c:111
H5EA__create_flush_depend
H5_DLL herr_t H5EA__create_flush_depend(H5AC_info_t *parent_entry, H5AC_info_t *child_entry)
H5EA_class_t
Definition: H5EAprivate.h:63
H5EA_create_t
Definition: H5EAprivate.h:80
H5EA__hdr_alloc
H5_DLL H5EA_hdr_t * H5EA__hdr_alloc(H5F_t *f)
dblock
dblock
Definition: H5EAdblock.c:480
H5EA_dblock_t::parent
void * parent
Definition: H5EApkg.h:301
H5EA__hdr_alloc_elmts
H5_DLL void * H5EA__hdr_alloc_elmts(H5EA_hdr_t *hdr, size_t nelmts)
H5EA_hdr_cache_ud_t
Definition: H5EApkg.h:339
H5EA_sblock_t::dblk_page_init_size
size_t dblk_page_init_size
Definition: H5EApkg.h:280
H5_DLL
#define H5_DLL
Definition: H5api_adpt.h:234
H5EA_dblock_t::elmts
void * elmts
Definition: H5EApkg.h:291
H5EA_sblock_cache_ud_t
Definition: H5EApkg.h:346
H5EA_sblock_t::addr
haddr_t addr
Definition: H5EApkg.h:267
H5EA__sblock_debug
H5_DLL herr_t H5EA__sblock_debug(H5F_t *f, haddr_t addr, FILE *stream, int indent, int fwidth, const H5EA_class_t *cls, haddr_t hdr_addr, unsigned sblk_idx, haddr_t obj_addr)
H5EA_dblock_cache_ud_t::parent
void * parent
Definition: H5EApkg.h:356
H5EA_dblock_t::cache_info
H5AC_info_t cache_info
Definition: H5EApkg.h:287
H5EA_dbk_page_t::parent
H5EA_sblock_t * parent
Definition: H5EApkg.h:324
H5EA__iblock_alloc
H5_DLL H5EA_iblock_t * H5EA__iblock_alloc(H5EA_hdr_t *hdr)
H5EA_hdr_t::arr_off_size
unsigned char arr_off_size
Definition: H5EApkg.h:196
H5EA_dblock_t::top_proxy
H5AC_proxy_entry_t * top_proxy
Definition: H5EApkg.h:300
H5EA_dbk_page_t::top_proxy
H5AC_proxy_entry_t * top_proxy
Definition: H5EApkg.h:323
H5EA_t
Definition: H5EApkg.h:331
H5EA__iblock_debug
H5_DLL herr_t H5EA__iblock_debug(H5F_t *f, haddr_t addr, FILE *stream, int indent, int fwidth, const H5EA_class_t *cls, haddr_t hdr_addr, haddr_t obj_addr)
H5EA_sblock_t::hdr
H5EA_hdr_t * hdr
Definition: H5EApkg.h:266
H5EA_hdr_t::cache_info
H5AC_info_t cache_info
Definition: H5EApkg.h:169
H5EA_iblock_t::nsblk_addrs
size_t nsblk_addrs
Definition: H5EApkg.h:252
H5EA_iblock_t::dblk_addrs
haddr_t * dblk_addrs
Definition: H5EApkg.h:238
H5F_t
Definition: H5Fpkg.h:374
H5EA_iblock_t::size
size_t size
Definition: H5EApkg.h:244
cache_flags
cache_flags
Definition: H5EAhdr.c:749
nelmts
hdr stats stored nelmts
Definition: H5EAdblock.c:214
H5EA_sblock_cache_ud_t::parent
H5EA_iblock_t * parent
Definition: H5EApkg.h:348
H5EA__hdr_unprotect
H5_DLL herr_t H5EA__hdr_unprotect(H5EA_hdr_t *hdr, unsigned cache_flags)
H5EA_hdr_t::top_proxy
H5AC_proxy_entry_t * top_proxy
Definition: H5EApkg.h:210
H5EA_t::hdr
H5EA_hdr_t * hdr
Definition: H5EApkg.h:332
H5EA_hdr_cache_ud_t::ctx_udata
void * ctx_udata
Definition: H5EApkg.h:342
sblk_idx
sblk_idx
Definition: H5EA.c:425
H5EA__hdr_debug
H5_DLL herr_t H5EA__hdr_debug(H5F_t *f, haddr_t addr, FILE *stream, int indent, int fwidth, const H5EA_class_t *cls, haddr_t obj_addr)
H5FLprivate.h
H5EA__hdr_free_elmts
H5_DLL herr_t H5EA__hdr_free_elmts(H5EA_hdr_t *hdr, size_t nelmts, void *elmts)
H5EA_hdr_t::elmt_fac
struct H5EA_hdr_t::@4 elmt_fac
H5EA_sblock_t::ndblks
size_t ndblks
Definition: H5EApkg.h:277
herr_t
int herr_t
Definition: H5public.h:128
H5EA_iblock_t
struct H5EA_iblock_t H5EA_iblock_t
H5EA_dbk_page_t::has_hdr_depend
hbool_t has_hdr_depend
Definition: H5EApkg.h:322
hbool_t
bool hbool_t
Definition: H5public.h:159
H5EA_iblock_t::sblk_addrs
haddr_t * sblk_addrs
Definition: H5EApkg.h:239
H5C_cache_entry_t
Definition: H5Cprivate.h:1597
H5EA_sblock_cache_ud_t
struct H5EA_sblock_cache_ud_t H5EA_sblock_cache_ud_t
H5EA_dblock_cache_ud_t::nelmts
size_t nelmts
Definition: H5EApkg.h:357
H5EA_dblock_t::addr
haddr_t addr
Definition: H5EApkg.h:295
hsize_t
hsize_t
Definition: H5overflow.txt:44
H5EA__sblock_alloc
H5_DLL H5EA_sblock_t * H5EA__sblock_alloc(H5EA_hdr_t *hdr, H5EA_iblock_t *parent, unsigned sblk_idx)
H5EA_sblock_t::dblk_page_size
size_t dblk_page_size
Definition: H5EApkg.h:281
H5EA_t::f
H5F_t * f
Definition: H5EApkg.h:333
H5EA_dblk_page_cache_ud_t
Definition: H5EApkg.h:362
dblk_page_addr
haddr_t dblk_page_addr
Definition: H5FA.c:382
sblock
sblock
Definition: H5EAsblock.c:446
H5EA_stat_t
Definition: H5EAprivate.h:94
H5EA_hdr_t::rc
size_t rc
Definition: H5EApkg.h:188
H5EA__dblk_page_protect
H5_DLL H5EA_dblk_page_t * H5EA__dblk_page_protect(H5EA_hdr_t *hdr, H5EA_sblock_t *parent, haddr_t dblk_page_addr, unsigned flags)
H5EA_sblock_t::top_proxy
H5AC_proxy_entry_t * top_proxy
Definition: H5EApkg.h:272
H5EA_hdr_t::dblk_page_nelmts
size_t dblk_page_nelmts
Definition: H5EApkg.h:203