MISR Toolkit  1.5.1
H5B2pkg.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@ncsa.uiuc.edu>
16  * Monday, January 31, 2005
17  *
18  * Purpose: This file contains declarations which are visible only within
19  * the H5B2 package. Source files outside the H5B2 package should
20  * include H5B2private.h instead.
21  */
22 #ifndef H5B2_PACKAGE
23 #error "Do not include this file outside the H5B2 package!"
24 #endif
25 
26 #ifndef _H5B2pkg_H
27 #define _H5B2pkg_H
28 
29 /* Get package's private header */
30 #include "H5B2private.h"
31 
32 /* Other private headers needed by this file */
33 #include "H5ACprivate.h" /* Metadata cache */
34 #include "H5FLprivate.h" /* Free Lists */
35 
36 
37 /**************************/
38 /* Package Private Macros */
39 /**************************/
40 
41 /* Size of storage for number of records per node (on disk) */
42 #define H5B2_SIZEOF_RECORDS_PER_NODE (unsigned)2
43 
44 /* Size of a "tree pointer" (on disk) */
45 /* (essentially, the largest internal pointer allowed) */
46 #define H5B2_TREE_POINTER_SIZE(h) ( \
47  (h)->sizeof_addr + \
48  H5B2_SIZEOF_RECORDS_PER_NODE + \
49  (h)->sizeof_size \
50  )
51 
52 /* Size of a internal node pointer (on disk) */
53 #define H5B2_INT_POINTER_SIZE(h, d) ( \
54  (unsigned)(h)->sizeof_addr /* Address of child node */ \
55  + (h)->max_nrec_size /* # of records in child node */ \
56  + (h)->node_info[(d) - 1].cum_max_nrec_size /* Total # of records in child & below */ \
57  )
58 
59 /* Size of checksum information (on disk) */
60 #define H5B2_SIZEOF_CHKSUM 4
61 
62 /* Format overhead for all v2 B-tree metadata in the file */
63 #define H5B2_METADATA_PREFIX_SIZE ( \
64  (unsigned)H5_SIZEOF_MAGIC /* Signature */ \
65  + (unsigned)1 /* Version */ \
66  + (unsigned)1 /* Tree type */ \
67  + (unsigned)H5B2_SIZEOF_CHKSUM /* Metadata checksum */ \
68  )
69 
70 /* Size of the v2 B-tree header on disk */
71 #define H5B2_HEADER_SIZE(h) ( \
72  /* General metadata fields */ \
73  H5B2_METADATA_PREFIX_SIZE \
74  \
75  /* Header specific fields */ \
76  + (unsigned)4 /* Node size, in bytes */ \
77  + (unsigned)2 /* Record size, in bytes */ \
78  + (unsigned)2 /* Depth of tree */ \
79  + (unsigned)1 /* Split % of full (as integer, ie. "98" means 98%) */ \
80  + (unsigned)1 /* Merge % of full (as integer, ie. "98" means 98%) */ \
81  + H5B2_TREE_POINTER_SIZE(h) /* Node pointer to root node in tree */ \
82  )
83 
84 /* Size of the v2 B-tree internal node prefix */
85 #define H5B2_INT_PREFIX_SIZE ( \
86  /* General metadata fields */ \
87  H5B2_METADATA_PREFIX_SIZE \
88  \
89  /* Header specific fields */ \
90  /* <none> */ \
91  )
92 
93 /* Size of the v2 B-tree leaf node prefix */
94 #define H5B2_LEAF_PREFIX_SIZE ( \
95  /* General metadata fields */ \
96  H5B2_METADATA_PREFIX_SIZE \
97  \
98  /* Header specific fields */ \
99  /* <none> */ \
100  )
101 
102 /* Macro to retrieve pointer to i'th native record for native record buffer */
103 #define H5B2_NAT_NREC(b, hdr, idx) ((b) + (hdr)->nat_off[(idx)])
104 
105 /* Macro to retrieve pointer to i'th native record for internal node */
106 #define H5B2_INT_NREC(i, hdr, idx) H5B2_NAT_NREC((i)->int_native, (hdr), (idx))
107 
108 /* Macro to retrieve pointer to i'th native record for leaf node */
109 #define H5B2_LEAF_NREC(l, hdr, idx) H5B2_NAT_NREC((l)->leaf_native, (hdr), (idx))
110 
111 /* Number of records that fit into internal node */
112 /* (accounts for extra node pointer by counting it in with the prefix bytes) */
113 #define H5B2_NUM_INT_REC(h, d) \
114  (((h)->node_size - (H5B2_INT_PREFIX_SIZE + H5B2_INT_POINTER_SIZE(h, d))) / ((h)->rrec_size + H5B2_INT_POINTER_SIZE(h, d)))
115 
116 
117 /****************************/
118 /* Package Private Typedefs */
119 /****************************/
120 
121 /* A "node pointer" to another B-tree node */
122 typedef struct {
123  haddr_t addr; /* Address of other node */
124  uint16_t node_nrec; /* Number of records used in node pointed to */
125  hsize_t all_nrec; /* Number of records in node pointed to and all it's children */
127 
128 /* Information about a node at a given depth */
129 typedef struct {
130  unsigned max_nrec; /* Max. number of records in node */
131  unsigned split_nrec; /* Number of records to split node at */
132  unsigned merge_nrec; /* Number of records to merge node at */
133  hsize_t cum_max_nrec; /* Cumulative max. # of records below this node's depth */
134  uint8_t cum_max_nrec_size; /* Size to store cumulative max. # of records for this node (in bytes) */
135  H5FL_fac_head_t *nat_rec_fac; /* Factory for native record blocks */
136  H5FL_fac_head_t *node_ptr_fac; /* Factory for node pointer blocks */
138 
139 /* The B-tree header information */
140 typedef struct H5B2_hdr_t {
141  /* Information for H5AC cache functions, _must_ be first field in structure */
142  H5AC_info_t cache_info;
143 
144  /* Internal B-tree information (stored) */
145  H5B2_node_ptr_t root; /* Node pointer to root node in B-tree */
146 
147  /* Information set by user (stored) */
148  uint8_t split_percent; /* Percent full at which to split the node, when inserting */
149  uint8_t merge_percent; /* Percent full at which to merge the node, when deleting */
150  uint32_t node_size; /* Size of B-tree nodes, in bytes */
151  uint32_t rrec_size; /* Size of "raw" (on disk) record, in bytes */
152 
153  /* Dynamic information (stored) */
154  uint16_t depth; /* B-tree's overall depth */
155 
156  /* Derived information from user's information (not stored) */
157  uint8_t max_nrec_size; /* Size to store max. # of records in any node (in bytes) */
158 
159  /* Shared internal data structures (not stored) */
160  H5F_t *f; /* Pointer to the file that the B-tree is in */
161  haddr_t addr; /* Address of B-tree header in the file */
162  size_t hdr_size; /* Size of the B-tree header on disk */
163  size_t rc; /* Reference count of nodes using this header */
164  size_t file_rc; /* Reference count of files using this header */
165  hbool_t pending_delete; /* B-tree is pending deletion */
166  uint8_t sizeof_size; /* Size of file sizes */
167  uint8_t sizeof_addr; /* Size of file addresses */
168  H5B2_remove_t remove_op; /* Callback operator for deleting B-tree */
169  void *remove_op_data;/* B-tree deletion callback's context */
170  uint8_t *page; /* Common disk page for I/O */
171  size_t *nat_off; /* Array of offsets of native records */
172  H5B2_node_info_t *node_info; /* Table of node info structs for current depth of B-tree */
173  uint8_t *min_native_rec; /* Pointer to minimum native record */
174  uint8_t *max_native_rec; /* Pointer to maximum native record */
175 
176  /* Client information (not stored) */
177  const H5B2_class_t *cls; /* Class of B-tree client */
178  void *cb_ctx; /* Client callback context */
179 } H5B2_hdr_t;
180 
181 /* B-tree leaf node information */
182 typedef struct H5B2_leaf_t {
183  /* Information for H5AC cache functions, _must_ be first field in structure */
184  H5AC_info_t cache_info;
185 
186  /* Internal B-tree information */
187  H5B2_hdr_t *hdr; /* Pointer to the [pinned] v2 B-tree header */
188  uint8_t *leaf_native; /* Pointer to native records */
189  uint16_t nrec; /* Number of records in node */
190 } H5B2_leaf_t;
191 
192 /* B-tree internal node information */
193 typedef struct H5B2_internal_t {
194  /* Information for H5AC cache functions, _must_ be first field in structure */
195  H5AC_info_t cache_info;
196 
197  /* Internal B-tree information */
198  H5B2_hdr_t *hdr; /* Pointer to the [pinned] v2 B-tree header */
199  uint8_t *int_native; /* Pointer to native records */
200  H5B2_node_ptr_t *node_ptrs; /* Pointer to node pointers */
201  uint16_t nrec; /* Number of records in node */
202  uint16_t depth; /* Depth of this node in the B-tree */
204 
205 /* v2 B-tree */
206 struct H5B2_t {
207  H5B2_hdr_t *hdr; /* Pointer to internal v2 B-tree header info */
208  H5F_t *f; /* Pointer to file for v2 B-tree */
209 };
210 
211 /* Node position, for min/max determination */
212 typedef enum H5B2_nodepos_t {
213  H5B2_POS_ROOT, /* Node is root (i.e. both right & left-most in tree) */
214  H5B2_POS_RIGHT, /* Node is right-most in tree, at a given depth */
215  H5B2_POS_LEFT, /* Node is left-most in tree, at a given depth */
216  H5B2_POS_MIDDLE /* Node is neither right or left-most in tree */
218 
219 /* Callback info for loading a free space header into the cache */
220 typedef struct H5B2_hdr_cache_ud_t {
221  H5F_t *f; /* File that v2 b-tree header is within */
222  void *ctx_udata; /* User-data for protecting */
224 
225 /* Callback info for loading a free space internal node into the cache */
226 typedef struct H5B2_internal_cache_ud_t {
227  H5F_t *f; /* File that v2 b-tree header is within */
228  H5B2_hdr_t *hdr; /* v2 B-tree header */
229  unsigned nrec; /* Number of records in node to load */
230  unsigned depth; /* Depth of node to load */
232 
233 /* Callback info for loading a free space leaf node into the cache */
234 typedef struct H5B2_leaf_cache_ud_t {
235  H5F_t *f; /* File that v2 b-tree header is within */
236  H5B2_hdr_t *hdr; /* v2 B-tree header */
237  unsigned nrec; /* Number of records in node to load */
239 
240 #ifdef H5B2_TESTING
241 /* Node information for testing */
242 typedef struct {
243  unsigned depth; /* Depth of node */
244  unsigned nrec; /* Number of records in node */
245 } H5B2_node_info_test_t;
246 #endif /* H5B2_TESTING */
247 
248 
249 /*****************************/
250 /* Package Private Variables */
251 /*****************************/
252 
253 /* H5B2 header inherits cache-like properties from H5AC */
254 H5_DLLVAR const H5AC_class_t H5AC_BT2_HDR[1];
255 
256 /* H5B2 internal node inherits cache-like properties from H5AC */
257 H5_DLLVAR const H5AC_class_t H5AC_BT2_INT[1];
258 
259 /* H5B2 leaf node inherits cache-like properties from H5AC */
260 H5_DLLVAR const H5AC_class_t H5AC_BT2_LEAF[1];
261 
262 /* Declare a free list to manage the H5B2_internal_t struct */
264 
265 /* Declare a free list to manage the H5B2_leaf_t struct */
267 
268 /* Internal v2 B-tree testing class */
269 #ifdef H5B2_TESTING
270 H5_DLLVAR const H5B2_class_t H5B2_TEST[1];
271 #endif /* H5B2_TESTING */
272 
273 /* Array of v2 B-tree client ID -> client class mappings */
274 extern const H5B2_class_t *const H5B2_client_class_g[H5B2_NUM_BTREE_ID];
275 
276 
277 /******************************/
278 /* Package Private Prototypes */
279 /******************************/
280 
281 /* Routines for managing B-tree header info */
284  const H5B2_create_t *cparam, void *ctx_udata);
285 H5_DLL herr_t H5B2_hdr_init(H5B2_hdr_t *hdr, const H5B2_create_t *cparam,
286  void *ctx_udata, uint16_t depth);
293 
294 /* Routines for operating on leaf nodes */
296  unsigned nrec, H5AC_protect_t rw);
297 
298 /* Routines for operating on internal nodes */
300  haddr_t addr, unsigned nrec, unsigned depth, H5AC_protect_t rw);
301 
302 /* Routines for allocating nodes */
305  H5B2_node_ptr_t *node_ptr);
306 
307 /* Routines for releasing structures */
311 
312 /* Routines for inserting records */
314  unsigned depth, unsigned *parent_cache_info_flags_ptr,
315  H5B2_node_ptr_t *curr_node_ptr, H5B2_nodepos_t curr_pos, void *udata);
317  H5B2_node_ptr_t *curr_node_ptr, H5B2_nodepos_t curr_pos, void *udata);
318 
319 /* Routines for iterating over nodes/records */
320 H5_DLL herr_t H5B2_iterate_node(H5B2_hdr_t *hdr, hid_t dxpl_id, unsigned depth,
321  const H5B2_node_ptr_t *curr_node, H5B2_operator_t op, void *op_data);
323  unsigned depth, const H5B2_node_ptr_t *curr_node, hsize_t *op_data);
324 
325 /* Routines for locating records */
326 H5_DLL int H5B2_locate_record(const H5B2_class_t *type, unsigned nrec,
327  size_t *rec_off, const uint8_t *native, const void *udata, unsigned *idx, int *result);
329  unsigned depth, H5B2_node_ptr_t *curr_node_ptr, void *neighbor_loc,
330  H5B2_compare_t comp, void *udata, H5B2_found_t op, void *op_data);
332  H5B2_node_ptr_t *curr_node_ptr, void *neighbor_loc,
333  H5B2_compare_t comp, void *udata, H5B2_found_t op, void *op_data);
334 
335 /* Routines for removing records */
337  hbool_t *depth_decreased, void *swap_loc, unsigned depth,
338  H5AC_info_t *parent_cache_info, unsigned *parent_cache_info_flags_ptr,
339  H5B2_nodepos_t curr_pos, H5B2_node_ptr_t *curr_node_ptr, void *udata,
340  H5B2_remove_t op, void *op_data);
342  H5B2_node_ptr_t *curr_node_ptr, H5B2_nodepos_t curr_pos,
343  void *udata, H5B2_remove_t op, void *op_data);
345  hbool_t *depth_decreased, void *swap_loc, unsigned depth,
346  H5AC_info_t *parent_cache_info, unsigned *parent_cache_info_flags_ptr,
347  H5B2_node_ptr_t *curr_node_ptr, H5B2_nodepos_t curr_pos, hsize_t n,
348  H5B2_remove_t op, void *op_data);
350  H5B2_node_ptr_t *curr_node_ptr, H5B2_nodepos_t curr_pos,
351  unsigned idx, H5B2_remove_t op, void *op_data);
352 
353 /* Routines for deleting nodes */
354 H5_DLL herr_t H5B2_delete_node(H5B2_hdr_t *hdr, hid_t dxpl_id, unsigned depth,
355  const H5B2_node_ptr_t *curr_node, H5B2_remove_t op, void *op_data);
356 
357 /* Debugging routines for dumping file structures */
359  FILE *stream, int indent, int fwidth, const H5B2_class_t *type, haddr_t obj_addr);
361  FILE *stream, int indent, int fwidth, const H5B2_class_t *type,
362  haddr_t hdr_addr, unsigned nrec, unsigned depth, haddr_t obj_addr);
364  FILE *stream, int indent, int fwidth, const H5B2_class_t *type,
365  haddr_t hdr_addr, unsigned nrec, haddr_t obj_addr);
366 
367 /* Testing routines */
368 #ifdef H5B2_TESTING
369 H5_DLL herr_t H5B2_get_root_addr_test(H5B2_t *bt2, haddr_t *root_addr);
370 H5_DLL int H5B2_get_node_depth_test(H5B2_t *bt2, hid_t dxpl_id, void *udata);
371 H5_DLL herr_t H5B2_get_node_info_test(H5B2_t *bt2, hid_t dxpl_id,
372  void *udata, H5B2_node_info_test_t *ninfo);
373 #endif /* H5B2_TESTING */
374 
375 #endif /* _H5B2pkg_H */
376 
size_t file_rc
Definition: H5B2pkg.h:164
H5B2_hdr_t * hdr
Definition: H5B2pkg.h:207
uint8_t max_nrec_size
Definition: H5B2pkg.h:157
H5_DLL herr_t H5B2_split_root(H5B2_hdr_t *hdr, hid_t dxpl_id)
H5AC_info_t cache_info
Definition: H5B2pkg.h:195
void * cb_ctx
Definition: H5B2pkg.h:178
unsigned int hbool_t
Definition: H5public.h:142
H5_DLL herr_t H5B2_delete_node(H5B2_hdr_t *hdr, hid_t dxpl_id, unsigned depth, const H5B2_node_ptr_t *curr_node, H5B2_remove_t op, void *op_data)
H5B2_node_info_t * node_info
Definition: H5B2pkg.h:172
H5_DLL herr_t H5B2_internal_free(H5B2_internal_t *i)
H5F_t * f
Definition: H5B2pkg.h:160
H5AC_info_t cache_info
Definition: H5B2pkg.h:142
HDFFCLIBAPI intf * idx
uint8_t * min_native_rec
Definition: H5B2pkg.h:173
H5_DLL herr_t H5B2_neighbor_leaf(H5B2_hdr_t *hdr, hid_t dxpl_id, H5B2_node_ptr_t *curr_node_ptr, void *neighbor_loc, H5B2_compare_t comp, void *udata, H5B2_found_t op, void *op_data)
uint8_t * max_native_rec
Definition: H5B2pkg.h:174
H5_DLL herr_t H5B2_hdr_free(H5B2_hdr_t *hdr)
H5_DLLVAR const H5AC_class_t H5AC_BT2_INT[1]
Definition: H5B2pkg.h:257
uint32_t rrec_size
Definition: H5B2pkg.h:151
H5_DLL herr_t H5B2_insert_internal(H5B2_hdr_t *hdr, hid_t dxpl_id, unsigned depth, unsigned *parent_cache_info_flags_ptr, H5B2_node_ptr_t *curr_node_ptr, H5B2_nodepos_t curr_pos, void *udata)
H5_DLL size_t H5B2_hdr_fuse_decr(H5B2_hdr_t *hdr)
H5B2_node_ptr_t * node_ptrs
Definition: H5B2pkg.h:200
uint16_t depth
Definition: H5B2pkg.h:154
#define H5_DLL
Definition: H5api_adpt.h:256
unsigned merge_nrec
Definition: H5B2pkg.h:132
H5B2_hdr_t * hdr
Definition: H5B2pkg.h:187
struct H5B2_hdr_cache_ud_t H5B2_hdr_cache_ud_t
uint16_t nrec
Definition: H5B2pkg.h:201
H5_DLL herr_t H5B2_create_leaf(H5B2_hdr_t *hdr, hid_t dxpl_id, H5B2_node_ptr_t *node_ptr)
H5_DLL H5B2_internal_t * H5B2_protect_internal(H5B2_hdr_t *hdr, hid_t dxpl_id, haddr_t addr, unsigned nrec, unsigned depth, H5AC_protect_t rw)
int herr_t
Definition: H5public.h:124
H5B2_leaf_t * H5B2_protect_leaf(H5B2_hdr_t *hdr, hid_t dxpl_id, haddr_t addr, unsigned nrec, H5AC_protect_t rw)
H5_DLL herr_t H5B2_leaf_free(H5B2_leaf_t *l)
H5_DLL herr_t H5B2_hdr_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE *stream, int indent, int fwidth, const H5B2_class_t *type, haddr_t obj_addr)
struct H5B2_hdr_t H5B2_hdr_t
unsigned long long hsize_t
Definition: H5public.h:169
const H5B2_class_t * cls
Definition: H5B2pkg.h:177
H5_DLL herr_t H5B2_insert_leaf(H5B2_hdr_t *hdr, hid_t dxpl_id, H5B2_node_ptr_t *curr_node_ptr, H5B2_nodepos_t curr_pos, void *udata)
uint8_t sizeof_size
Definition: H5B2pkg.h:166
H5_DLL herr_t H5B2_hdr_fuse_incr(H5B2_hdr_t *hdr)
H5FL_EXTERN(H5B2_internal_t)
H5_DLL herr_t H5B2_hdr_incr(H5B2_hdr_t *hdr)
const H5B2_class_t *const H5B2_client_class_g[H5B2_NUM_BTREE_ID]
H5_DLLVAR const H5AC_class_t H5AC_BT2_HDR[1]
Definition: H5B2pkg.h:254
uint8_t * int_native
Definition: H5B2pkg.h:199
H5F_t * f
Definition: H5B2pkg.h:208
H5B2_hdr_t * hdr
Definition: H5B2pkg.h:236
H5_DLL herr_t H5B2_hdr_delete(H5B2_hdr_t *hdr, hid_t dxpl_id)
H5AC_info_t cache_info
Definition: H5B2pkg.h:184
uint16_t nrec
Definition: H5B2pkg.h:189
uint64_t haddr_t
Definition: H5public.h:182
H5_DLL herr_t H5B2_neighbor_internal(H5B2_hdr_t *hdr, hid_t dxpl_id, unsigned depth, H5B2_node_ptr_t *curr_node_ptr, void *neighbor_loc, H5B2_compare_t comp, void *udata, H5B2_found_t op, void *op_data)
H5_DLL herr_t H5B2_iterate_node(H5B2_hdr_t *hdr, hid_t dxpl_id, unsigned depth, const H5B2_node_ptr_t *curr_node, H5B2_operator_t op, void *op_data)
H5_DLL haddr_t H5B2_hdr_create(H5F_t *f, hid_t dxpl_id, const H5B2_create_t *cparam, void *ctx_udata)
uint8_t * leaf_native
Definition: H5B2pkg.h:188
uint8_t * page
Definition: H5B2pkg.h:170
haddr_t addr
Definition: H5B2pkg.h:161
unsigned max_nrec
Definition: H5B2pkg.h:130
H5B2_nodepos_t
Definition: H5B2pkg.h:212
uint16_t node_nrec
Definition: H5B2pkg.h:124
size_t * nat_off
Definition: H5B2pkg.h:171
H5FL_fac_head_t * node_ptr_fac
Definition: H5B2pkg.h:136
hsize_t cum_max_nrec
Definition: H5B2pkg.h:133
H5_DLL herr_t H5B2_remove_leaf_by_idx(H5B2_hdr_t *hdr, hid_t dxpl_id, H5B2_node_ptr_t *curr_node_ptr, H5B2_nodepos_t curr_pos, unsigned idx, H5B2_remove_t op, void *op_data)
int hid_t
Definition: H5Ipublic.h:54
hsize_t all_nrec
Definition: H5B2pkg.h:125
haddr_t addr
Definition: H5B2pkg.h:123
HDFFCLIBAPI _fcd _fcd intf * n
size_t rc
Definition: H5B2pkg.h:163
size_t hdr_size
Definition: H5B2pkg.h:162
H5_DLL herr_t H5B2_remove_internal(H5B2_hdr_t *hdr, hid_t dxpl_id, hbool_t *depth_decreased, void *swap_loc, unsigned depth, H5AC_info_t *parent_cache_info, unsigned *parent_cache_info_flags_ptr, H5B2_nodepos_t curr_pos, H5B2_node_ptr_t *curr_node_ptr, void *udata, H5B2_remove_t op, void *op_data)
H5_DLL H5B2_hdr_t * H5B2_hdr_alloc(H5F_t *f)
H5B2_hdr_t * hdr
Definition: H5B2pkg.h:198
struct H5B2_internal_t H5B2_internal_t
struct H5B2_internal_cache_ud_t H5B2_internal_cache_ud_t
hbool_t pending_delete
Definition: H5B2pkg.h:165
H5B2_node_ptr_t root
Definition: H5B2pkg.h:145
uint8_t split_percent
Definition: H5B2pkg.h:148
H5_DLL herr_t H5B2_hdr_decr(H5B2_hdr_t *hdr)
unsigned split_nrec
Definition: H5B2pkg.h:131
H5_DLL herr_t H5B2_int_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE *stream, int indent, int fwidth, const H5B2_class_t *type, haddr_t hdr_addr, unsigned nrec, unsigned depth, haddr_t obj_addr)
H5B2_hdr_t * hdr
Definition: H5B2pkg.h:228
HDFFCLIBAPI intf intf intf * type
H5_DLL herr_t H5B2_remove_internal_by_idx(H5B2_hdr_t *hdr, hid_t dxpl_id, hbool_t *depth_decreased, void *swap_loc, unsigned depth, H5AC_info_t *parent_cache_info, unsigned *parent_cache_info_flags_ptr, H5B2_node_ptr_t *curr_node_ptr, H5B2_nodepos_t curr_pos, hsize_t n, H5B2_remove_t op, void *op_data)
struct H5B2_leaf_t H5B2_leaf_t
H5_DLL herr_t H5B2_leaf_debug(H5F_t *f, hid_t dxpl_id, haddr_t addr, FILE *stream, int indent, int fwidth, const H5B2_class_t *type, haddr_t hdr_addr, unsigned nrec, haddr_t obj_addr)
#define H5_DLLVAR
Definition: H5api_adpt.h:257
void * remove_op_data
Definition: H5B2pkg.h:169
H5_DLL herr_t H5B2_hdr_init(H5B2_hdr_t *hdr, const H5B2_create_t *cparam, void *ctx_udata, uint16_t depth)
H5FL_fac_head_t * nat_rec_fac
Definition: H5B2pkg.h:135
uint32_t node_size
Definition: H5B2pkg.h:150
H5_DLL herr_t H5B2_remove_leaf(H5B2_hdr_t *hdr, hid_t dxpl_id, H5B2_node_ptr_t *curr_node_ptr, H5B2_nodepos_t curr_pos, void *udata, H5B2_remove_t op, void *op_data)
H5_DLL herr_t H5B2_hdr_dirty(H5B2_hdr_t *hdr)
H5_DLL herr_t H5B2_node_size(H5B2_hdr_t *hdr, hid_t dxpl_id, unsigned depth, const H5B2_node_ptr_t *curr_node, hsize_t *op_data)
uint8_t merge_percent
Definition: H5B2pkg.h:149
uint8_t cum_max_nrec_size
Definition: H5B2pkg.h:134
uint8_t sizeof_addr
Definition: H5B2pkg.h:167
uint16_t depth
Definition: H5B2pkg.h:202
H5B2_remove_t remove_op
Definition: H5B2pkg.h:168
struct H5B2_leaf_cache_ud_t H5B2_leaf_cache_ud_t
H5_DLL int H5B2_locate_record(const H5B2_class_t *type, unsigned nrec, size_t *rec_off, const uint8_t *native, const void *udata, unsigned *idx, int *result)
H5_DLLVAR const H5AC_class_t H5AC_BT2_LEAF[1]
Definition: H5B2pkg.h:260
Definition: H5Fpkg.h:255

MISR Toolkit - Copyright © 2005 - 2020 Jet Propulsion Laboratory
Generated on Fri Jun 19 2020 22:49:52