HDF5  1.12.0
H5Opkg.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 #if !(defined H5O_FRIEND || defined H5O_MODULE)
15 #error "Do not include this file outside the H5O package!"
16 #endif
17 
18 #ifndef _H5Opkg_H
19 #define _H5Opkg_H
20 
21 /* Get package's private header */
22 #include "H5Oprivate.h" /* Object headers */
23 
24 /* Other private headers needed by this file */
25 #include "H5ACprivate.h" /* Metadata cache */
26 #include "H5FLprivate.h" /* Free Lists */
27 
28 /* Object header macros */
29 #define H5O_NMESGS 8 /*initial number of messages */
30 #define H5O_NCHUNKS 2 /*initial number of chunks */
31 #define H5O_MIN_SIZE 22 /* Min. obj header data size (must be big enough for a message prefix and a continuation message) */
32 #define H5O_MSG_TYPES 26 /* # of types of messages */
33 #define H5O_MAX_CRT_ORDER_IDX 65535 /* Max. creation order index value */
34 
35 /* Versions of object header structure */
36 
37 /* Initial version of the object header format */
38 #define H5O_VERSION_1 1
39 
40 /* Revised version - leaves out reserved bytes and alignment padding, and adds
41  * magic number as prefix and checksum as suffix for all chunks.
42  */
43 #define H5O_VERSION_2 2
44 
45 /* The latest version of the format. Look through the 'flush'
46  * and 'size' callback for places to change when updating this. */
47 #define H5O_VERSION_LATEST H5O_VERSION_2
48 
49 /*
50  * Align messages on 8-byte boundaries because we would like to copy the
51  * object header chunks directly into memory and operate on them there, even
52  * on 64-bit architectures. This allows us to reduce the number of disk I/O
53  * requests with a minimum amount of mem-to-mem copies.
54  *
55  * Note: We no longer attempt to do this. - QAK, 10/16/06
56  */
57 #define H5O_ALIGN_OLD(X) (8 * (((X) + 7) / 8))
58 #define H5O_ALIGN_VERS(V, X) \
59  (((V) == H5O_VERSION_1) ? \
60  H5O_ALIGN_OLD(X) \
61  : \
62  (X) \
63  )
64 #define H5O_ALIGN_OH(O, X) \
65  H5O_ALIGN_VERS((O)->version, X)
66 #define H5O_ALIGN_F(F, X) \
67  H5O_ALIGN_VERS(MAX(H5O_VERSION_1, (uint8_t)H5O_obj_ver_bounds[H5F_LOW_BOUND(F)]), X)
68 
69 /* Size of checksum (on disk) */
70 #define H5O_SIZEOF_CHKSUM 4
71 
72 /* ========= Object Creation properties ============ */
73 /* Default values for some of the object creation properties */
74 /* NOTE: The H5O_CRT_ATTR_MAX_COMPACT_DEF & H5O_CRT_ATTR_MIN_DENSE_DEF values
75  * are "built into" the file format, make certain existing files with
76  * default attribute phase change storage are handled correctly if they
77  * are changed.
78  */
79 #define H5O_CRT_ATTR_MAX_COMPACT_DEF 8
80 #define H5O_CRT_ATTR_MIN_DENSE_DEF 6
81 #define H5O_CRT_OHDR_FLAGS_DEF H5O_HDR_STORE_TIMES
82 
83 /* Object header status flag definitions */
84 #define H5O_HDR_CHUNK0_1 0x00 /* Use 1-byte value for chunk #0 size */
85 #define H5O_HDR_CHUNK0_2 0x01 /* Use 2-byte value for chunk #0 size */
86 #define H5O_HDR_CHUNK0_4 0x02 /* Use 4-byte value for chunk #0 size */
87 #define H5O_HDR_CHUNK0_8 0x03 /* Use 8-byte value for chunk #0 size */
88 
89 /*
90  * Size of object header prefix.
91  */
92 #define H5O_SIZEOF_HDR(O) \
93  (((O)->version == H5O_VERSION_1) \
94  ? \
95  H5O_ALIGN_OLD(1 + /*version number */ \
96  1 + /*reserved */ \
97  2 + /*number of messages */ \
98  4 + /*reference count */ \
99  4) /*chunk data size */ \
100  : \
101  (H5_SIZEOF_MAGIC + /*magic number */ \
102  1 + /*version number */ \
103  1 + /*flags */ \
104  (((O)->flags & H5O_HDR_STORE_TIMES) ? ( \
105  4 + /*access time */ \
106  4 + /*modification time */ \
107  4 + /*change time */ \
108  4 /*birth time */ \
109  ) : 0) + \
110  (((O)->flags & H5O_HDR_ATTR_STORE_PHASE_CHANGE) ? ( \
111  2 + /*max compact attributes */ \
112  2 /*min dense attributes */ \
113  ) : 0) + \
114  (1 << ((O)->flags & H5O_HDR_CHUNK0_SIZE)) + /*chunk 0 data size */ \
115  H5O_SIZEOF_CHKSUM) /*checksum size */ \
116  )
117 
118 /*
119  * Size of object header message prefix
120  */
121 #define H5O_SIZEOF_MSGHDR_VERS(V,C) \
122  (((V) == H5O_VERSION_1) \
123  ? \
124  H5O_ALIGN_OLD(2 + /*message type */ \
125  2 + /*sizeof message data */ \
126  1 + /*flags */ \
127  3) /*reserved */ \
128  : \
129  (1 + /*message type */ \
130  2 + /*sizeof message data */ \
131  1 + /*flags */ \
132  ((C) ? ( \
133  2 /*creation index */ \
134  ) : 0)) \
135  )
136 #define H5O_SIZEOF_MSGHDR_OH(O) \
137  (unsigned)H5O_SIZEOF_MSGHDR_VERS((O)->version, (O)->flags & H5O_HDR_ATTR_CRT_ORDER_TRACKED)
138 #define H5O_SIZEOF_MSGHDR_F(F, C) \
139  (unsigned)H5O_SIZEOF_MSGHDR_VERS(MAX((H5F_STORE_MSG_CRT_IDX(F) ? H5O_VERSION_LATEST : H5O_VERSION_1), (uint8_t)H5O_obj_ver_bounds[H5F_LOW_BOUND(F)]), (C))
140 
141 /*
142  * Size of chunk "header" for each chunk
143  */
144 #define H5O_SIZEOF_CHKHDR_VERS(V) \
145  (((V) == H5O_VERSION_1) \
146  ? \
147  0 + /*no magic # */ \
148  0 /*no checksum */ \
149  : \
150  H5_SIZEOF_MAGIC + /*magic # */ \
151  H5O_SIZEOF_CHKSUM /*checksum */ \
152  )
153 #define H5O_SIZEOF_CHKHDR_OH(O) \
154  H5O_SIZEOF_CHKHDR_VERS((O)->version)
155 
156 /*
157  * Size of checksum for each chunk
158  */
159 #define H5O_SIZEOF_CHKSUM_VERS(V) \
160  (((V) == H5O_VERSION_1) \
161  ? \
162  0 /*no checksum */ \
163  : \
164  H5O_SIZEOF_CHKSUM /*checksum */ \
165  )
166 #define H5O_SIZEOF_CHKSUM_OH(O) \
167  H5O_SIZEOF_CHKSUM_VERS((O)->version)
168 
169 /* Input/output flags for decode functions */
170 #define H5O_DECODEIO_NOCHANGE 0x01u /* IN: do not modify values */
171 #define H5O_DECODEIO_DIRTY 0x02u /* OUT: message has been changed */
172 
173 /* Macro to incremend ndecode_dirtied (only if we are debugging) */
174 #ifndef NDEBUG
175 #define INCR_NDECODE_DIRTIED(OH) (OH)->ndecode_dirtied++;
176 #else /* NDEBUG */
177 #define INCR_NDECODE_DIRTIED(OH) ;
178 #endif /* NDEBUG */
179 
180 /* Load native information for a message, if it's not already present */
181 /* (Only works for messages with decode callback) */
182 #define H5O_LOAD_NATIVE(F, IOF, OH, MSG, ERR) \
183  if(NULL == (MSG)->native) { \
184  const H5O_msg_class_t *msg_type = (MSG)->type; \
185  unsigned ioflags = (IOF); \
186  \
187  /* Decode the message */ \
188  HDassert(msg_type->decode); \
189  if(NULL == ((MSG)->native = (msg_type->decode)((F), (OH), (MSG)->flags, &ioflags, (MSG)->raw_size, (MSG)->raw))) \
190  HGOTO_ERROR(H5E_OHDR, H5E_CANTDECODE, ERR, "unable to decode message") \
191  \
192  /* Mark the message dirty if it was changed by decoding */ \
193  if((ioflags & H5O_DECODEIO_DIRTY) && (H5F_get_intent((F)) & H5F_ACC_RDWR)) { \
194  (MSG)->dirty = TRUE; \
195  /* Increment the count of messages dirtied by decoding, but */ \
196  /* only ifndef NDEBUG */ \
197  INCR_NDECODE_DIRTIED(OH) \
198  } \
199  \
200  /* Set the message's "shared info", if it's shareable */ \
201  if((MSG)->flags & H5O_MSG_FLAG_SHAREABLE) { \
202  HDassert(msg_type->share_flags & H5O_SHARE_IS_SHARABLE); \
203  H5O_UPDATE_SHARED((H5O_shared_t *)(MSG)->native, H5O_SHARE_TYPE_HERE, (F), msg_type->id, (MSG)->crt_idx, (OH)->chunk[0].addr) \
204  } /* end if */ \
205  \
206  /* Set the message's "creation index", if it has one */ \
207  if(msg_type->set_crt_index) { \
208  /* Set the creation index for the message */ \
209  if((msg_type->set_crt_index)((MSG)->native, (MSG)->crt_idx) < 0) \
210  HGOTO_ERROR(H5E_OHDR, H5E_CANTSET, ERR, "unable to set creation index") \
211  } /* end if */ \
212  } /* end if */
213 
214 /* Flags for a message class's "sharability" */
215 #define H5O_SHARE_IS_SHARABLE 0x01
216 #define H5O_SHARE_IN_OHDR 0x02
217 
218 /* Set the object header size to speculatively read in */
219 /* (needs to be more than the object header prefix size to work at all and
220  * should be larger than the largest object type's default object header
221  * size to save the extra I/O operations) */
222 #define H5O_SPEC_READ_SIZE 512
223 
224 
225 /* The "message class" type */
227  unsigned id; /*message type ID on disk */
228  const char *name; /*for debugging */
229  size_t native_size; /*size of native message */
230  unsigned share_flags; /* Message sharing settings */
231  void *(*decode)(H5F_t *, H5O_t *, unsigned, unsigned *, size_t, const uint8_t *);
232  herr_t (*encode)(H5F_t *, hbool_t, uint8_t *, const void *);
233  void *(*copy)(const void *, void *); /*copy native value */
234  size_t (*raw_size)(const H5F_t *, hbool_t, const void *);/*sizeof encoded message */
235  herr_t (*reset)(void *); /*free nested data structs */
236  herr_t (*free)(void *); /*free main data struct */
237  herr_t (*del)(H5F_t *, H5O_t *, void *); /* Delete space in file referenced by this message */
238  herr_t (*link)(H5F_t *, H5O_t *, void *); /* Increment any links in file reference by this message */
239  herr_t (*set_share)(void*, const H5O_shared_t*); /* Set shared information */
240  htri_t (*can_share)(const void *); /* Is message allowed to be shared? */
241  herr_t (*pre_copy_file)(H5F_t *, const void *, hbool_t *, const H5O_copy_t *, void *); /*"pre copy" action when copying native value to file */
242  void *(*copy_file)(H5F_t *, void *, H5F_t *, hbool_t *, unsigned *, H5O_copy_t *, void *); /*copy native value to file */
243  herr_t (*post_copy_file)(const H5O_loc_t *, const void *, H5O_loc_t *, void *, unsigned *, H5O_copy_t *); /*"post copy" action when copying native value to file */
244  herr_t (*get_crt_index)(const void *, H5O_msg_crt_idx_t *); /* Get message's creation index */
245  herr_t (*set_crt_index)(void *, H5O_msg_crt_idx_t); /* Set message's creation index */
246  herr_t (*debug)(H5F_t*, const void*, FILE*, int, int);
247 };
248 
249 struct H5O_mesg_t {
250  const H5O_msg_class_t *type; /* type of message */
251  hbool_t dirty; /* raw out of date wrt native */
252  uint8_t flags; /* message flags */
253  H5O_msg_crt_idx_t crt_idx; /* message creation index */
254  unsigned chunkno; /* chunk number for this mesg */
255  void *native; /* native format message */
256  uint8_t *raw; /* pointer to raw data */
257  size_t raw_size; /* size with alignment */
258 };
259 
260 /* Struct for storing information about "best" message to move to new chunk */
261 typedef struct H5O_msg_alloc_info_t {
262  int msgno; /* Index in message array */
263  unsigned id; /* Message type ID on disk */
264  unsigned chunkno; /* Index in chunk array */
265  size_t gap_size; /* Size of any "gap" in the chunk immediately after message */
266  size_t null_size; /* Size of any null message in the chunk immediately after message */
267  size_t total_size; /* Total size of "available" space around message */
268  unsigned null_msgno; /* Message index of null message immediately after message */
270 
271 typedef struct H5O_chunk_t {
272  haddr_t addr; /*chunk file address */
273  size_t size; /*chunk size */
274  size_t gap; /*space at end of chunk too small for null message */
275  uint8_t *image; /*image of file */
276  struct H5O_chunk_proxy_t *chunk_proxy; /* Pointer to a chunk's proxy when chunk protected */
278 
279 struct H5O_t {
280  H5AC_info_t cache_info; /* Information for metadata cache functions, _must_ be */
281  /* first field in structure */
282 
283  /* File-specific information (not stored) */
284  size_t sizeof_size; /* Size of file sizes */
285  size_t sizeof_addr; /* Size of file addresses */
286  hbool_t swmr_write; /* Whether we are doing SWMR writes */
287 
288  /* Debugging information (not stored) */
289 #ifdef H5O_ENABLE_BAD_MESG_COUNT
290  hbool_t store_bad_mesg_count; /* Flag to indicate that a bad message count should be stored */
291  /* (This is to simulate a bug in earlier
292  * versions of the library)
293  */
294 #endif /* H5O_ENABLE_BAD_MESG_COUNT */
295 #ifndef NDEBUG
296  size_t ndecode_dirtied; /* Number of messages dirtied by decoding */
297 #endif /* NDEBUG */
298 
299  /* Chunk management information (not stored) */
300  size_t rc; /* Reference count of [continuation] chunks using this structure */
301 
302  /* Object information (stored) */
303  hbool_t has_refcount_msg; /* Whether the object has a ref. count message */
304  unsigned nlink; /*link count */
305  uint8_t version; /*version number */
306  uint8_t flags; /*flags */
307 
308  /* Time information (stored, for versions > 1 & H5O_HDR_STORE_TIMES flag set) */
309  time_t atime; /*access time */
310  time_t mtime; /*modification time */
311  time_t ctime; /*change time */
312  time_t btime; /*birth time */
313 
314  /* Attribute information (stored, for versions > 1) */
315  unsigned max_compact; /* Maximum # of compact attributes */
316  unsigned min_dense; /* Minimum # of "dense" attributes */
317 
318  /* Message management (stored, encoded in chunks) */
319  size_t nmesgs; /*number of messages */
320  size_t alloc_nmesgs; /*number of message slots */
321  H5O_mesg_t *mesg; /*array of messages */
322  size_t link_msgs_seen; /* # of link messages seen when loading header */
323  size_t attr_msgs_seen; /* # of attribute messages seen when loading header */
324 
325  /* Chunk management (not stored) */
326  size_t nchunks; /*number of chunks */
327  size_t alloc_nchunks; /*chunks allocated */
328  H5O_chunk_t *chunk; /*array of chunks */
329  hbool_t chunks_pinned; /* Whether chunks are pinned from ohdr protect */
330 
331  /* Object header proxy information (not stored) */
332  H5AC_proxy_entry_t *proxy; /* Proxy cache entry for all ohdr entries */
333 };
334 
335 /* Class for types of objects in file */
336 typedef struct H5O_obj_class_t {
337  H5O_type_t type; /*object type on disk */
338  const char *name; /*for debugging */
339  void *(*get_copy_file_udata)(void); /*retrieve user data for 'copy file' operation */
340  void (*free_copy_file_udata)(void *); /*free user data for 'copy file' operation */
341  htri_t (*isa)(const H5O_t *); /*if a header matches an object class */
342  void *(*open)(const H5G_loc_t *, H5I_type_t *); /*open an object of this class */
343  void *(*create)(H5F_t *, void *, H5G_loc_t *); /*create an object of this class */
344  H5O_loc_t *(*get_oloc)(hid_t ); /*get the object header location for an object */
345  herr_t (*bh_info)(const H5O_loc_t *loc, H5O_t *oh, H5_ih_info_t *bh_info); /*get the index & heap info for an object */
346  herr_t (*flush)(void *obj_ptr); /*flush an opened object of this class */
348 
349 /* Node in skip list to map addresses from one file to another during object header copy */
350 typedef struct H5O_addr_map_t {
351  H5_obj_t src_obj_pos; /* Location of source object */
352  haddr_t dst_addr; /* Address of object in destination file */
353  hbool_t is_locked; /* Indicate that the destination object is locked currently */
354  hsize_t inc_ref_count; /* Number of deferred increments to reference count */
355  const H5O_obj_class_t *obj_class; /* Object class */
356  void *udata; /* Object class copy file udata */
358 
359 /* Stack of continuation messages to interpret */
360 typedef struct H5O_cont_msgs_t {
361  size_t nmsgs; /* Number of continuation messages found so far */
362  size_t alloc_nmsgs; /* Continuation messages allocated */
363  H5O_cont_t *msgs; /* Array of continuation messages */
365 
366 /* Common callback information for loading object header prefix from disk */
367 typedef struct H5O_common_cache_ud_t {
368  H5F_t *f; /* Pointer to file for object header/chunk */
369  unsigned file_intent; /* Read/write intent for file */
370  unsigned merged_null_msgs; /* Number of null messages merged together */
371  H5O_cont_msgs_t *cont_msg_info; /* Pointer to continuation messages to work on */
372  haddr_t addr; /* Address of the prefix or chunk */
374 
375 /* Callback information for loading object header prefix from disk */
376 typedef struct H5O_cache_ud_t {
377  hbool_t made_attempt; /* Whether the deserialize routine was already attempted */
378  unsigned v1_pfx_nmesgs; /* Number of messages from v1 prefix header */
379  size_t chunk0_size; /* Size of serialized first chunk */
380  H5O_t *oh; /* Partially deserialized object header, for later use */
381  hbool_t free_oh; /* Whether to free the object header or not */
382  H5O_common_cache_ud_t common; /* Common object header cache callback info */
384 
385 /* Structure representing each chunk in the cache */
386 typedef struct H5O_chunk_proxy_t {
387  H5AC_info_t cache_info; /* Information for metadata cache functions, _must_ be */
388  /* first field in structure */
389 
390  H5F_t *f; /* Pointer to file for object header/chunk */
391  H5O_t *oh; /* Object header for this chunk */
392  unsigned chunkno; /* Chunk number for this chunk */
393 
394  /* Flush depencency parent information (not stored)
395  *
396  * The following field is used to store a pointer
397  * to the in-core representation of a new chunk proxy's flush dependency
398  * parent -- if it exists. If it does not exist, this field will
399  * contain NULL.
400  *
401  * If the file is opened in SWMR write mode, the flush dependency
402  * parent of the chunk proxy will be either its object header
403  * or the chunk with the continuation message that references this chunk.
404  */
405  void *fd_parent; /* Pointer to flush dependency parent */
407 
408 /* Callback information for loading object header chunk from disk */
409 typedef struct H5O_chk_cache_ud_t {
410  hbool_t decoding; /* Whether the object header is being decoded */
411  H5O_t *oh; /* Object header for this chunk */
412  unsigned chunkno; /* Index of chunk being brought in (for re-loads) */
413  size_t size; /* Size of chunk in the file */
414  H5O_common_cache_ud_t common; /* Common object header cache callback info */
416 
417 /* Header message ID to class mapping */
419 
420 /* Declare external the free list for H5O_t's */
422 
423 /* Declare external the free list for H5O_mesg_t sequences */
425 
426 /* Declare external the free list for H5O_chunk_t sequences */
428 
429 /* Declare external the free list for chunk_image blocks */
430 H5FL_BLK_EXTERN(chunk_image);
431 
432 /*
433  * Object header messages
434  */
435 
436 /* Null Message. (0x0000) */
438 
439 /* Simple Dataspace Message. (0x0001) */
441 
442 /* Link Information Message. (0x0002) */
444 
445 /* Datatype Message. (0x0003) */
447 
448 /* Old Fill Value Message. (0x0004) */
450 
451 /* New Fill Value Message. (0x0005) */
452 /*
453  * The new fill value message is fill value plus
454  * space allocation time and fill value writing time and whether fill
455  * value is defined.
456  */
458 
459 /* Link Message. (0x0006) */
461 
462 /* External File List Message. (0x0007) */
464 
465 /* Data Layout Message. (0x0008) */
467 
468 #ifdef H5O_ENABLE_BOGUS
469 /* "Bogus valid" Message. (0x0009) */
470 /* "Bogus invalid" Message. (0x0019) */
471 /*
472  * Used for debugging - should never be found in valid HDF5 file.
473  */
474 H5_DLLVAR const H5O_msg_class_t H5O_MSG_BOGUS_VALID[1];
475 H5_DLLVAR const H5O_msg_class_t H5O_MSG_BOGUS_INVALID[1];
476 #endif /* H5O_ENABLE_BOGUS */
477 
478 /* Group Information Message. (0x000a) */
480 
481 /* Filter pipeline message. (0x000b) */
483 
484 /* Attribute Message. (0x000c) */
486 
487 /* Object name message. (0x000d) */
489 
490 /* Modification Time Message. (0x000e) */
491 /*
492  * The message is just a `time_t'.
493  * (See also the "new" modification time message)
494  */
496 
497 /* Shared Message information message (0x000f)
498  * A message for the superblock extension, holding information about
499  * the file-wide shared message "SOHM" table
500  */
502 
503 /* Object Header Continuation Message. (0x0010) */
505 
506 /* Symbol Table Message. (0x0011) */
508 
509 /* New Modification Time Message. (0x0012) */
510 /*
511  * The message is just a `time_t'.
512  */
514 
515 /* v1 B-tree 'K' value message (0x0013)
516  * A message for the superblock extension, holding information about
517  * the file-wide v1 B-tree 'K' values.
518  */
520 
521 /* Driver info message (0x0014)
522  * A message for the superblock extension, holding information about
523  * the file driver settings
524  */
526 
527 /* Attribute Information Message. (0x0015) */
529 
530 /* Reference Count Message. (0x0016) */
532 
533 /* Free-space Manager Info message. (0x0017) */
535 
536 /* Metadata Cache Image message. (0x0018) */
538 
539 /* Placeholder for unknown message. (0x0019) */
541 
542 
543 /*
544  * Object header "object" types
545  */
546 
547 /* Group Object. (H5O_TYPE_GROUP - 0) */
549 
550 /* Dataset Object. (H5O_TYPE_DATASET - 1) */
552 
553 /* Datatype Object. (H5O_TYPE_NAMED_DATATYPE - 2) */
555 
556 /* Package-local function prototypes */
558 H5_DLL int H5O__link_oh(H5F_t *f, int adjust, H5O_t *oh, hbool_t *deleted);
559 H5_DLL herr_t H5O__visit(H5G_loc_t *loc, const char *obj_name, H5_index_t idx_type,
560  H5_iter_order_t order, H5O_iterate2_t op, void *op_data, unsigned fields);
564 
565 /* Object header message routines */
567  unsigned *mesg_flags, void *mesg, size_t *mesg_idx);
569  unsigned mesg_flags, unsigned update_flags, void *mesg);
571  unsigned mesg_flags, unsigned update_flags, void *mesg);
573 H5_DLL unsigned H5O__msg_count_real(const H5O_t *oh, const H5O_msg_class_t *type);
575  int sequence, H5O_operator_t op, void *op_data, hbool_t adj_link);
576 H5_DLL void *H5O__msg_copy_file(const H5O_msg_class_t *type, H5F_t *file_src,
577  void *mesg_src, H5F_t *file_dst, hbool_t *recompute_size,
578  unsigned *mesg_flags, H5O_copy_t *cpy_info, void *udata);
580  const H5O_mesg_operator_t *op, void *op_data);
583 
584 /* Object header chunk routines */
585 H5_DLL herr_t H5O__chunk_add(H5F_t *f, H5O_t *oh, unsigned idx, unsigned cont_chunkno);
588 H5_DLL herr_t H5O__chunk_update_idx(H5F_t *f, H5O_t *oh, unsigned idx);
590 H5_DLL herr_t H5O__chunk_delete(H5F_t *f, H5O_t *oh, unsigned idx);
592 
593 /* Collect storage info for btree and heap */
595 
596 /* Object header allocation routines */
597 H5_DLL herr_t H5O__alloc_msgs(H5O_t *oh, size_t min_alloc);
599  size_t found_null, const H5O_msg_alloc_info_t *found_msg, size_t *new_idx);
600 H5_DLL herr_t H5O__alloc(H5F_t *f, H5O_t *oh, const H5O_msg_class_t *type,
601  const void *mesg, size_t *mesg_idx);
604  hbool_t adj_link);
605 
606 /* Shared object operators */
607 H5_DLL void * H5O__shared_decode(H5F_t *f, H5O_t *open_oh, unsigned *ioflags,
608  const uint8_t *buf, const H5O_msg_class_t *type);
609 H5_DLL herr_t H5O__shared_encode(const H5F_t *f, uint8_t *buf/*out*/, const H5O_shared_t *sh_mesg);
610 H5_DLL size_t H5O__shared_size(const H5F_t *f, const H5O_shared_t *sh_mesg);
612  const H5O_msg_class_t *mesg_type, H5O_shared_t *sh_mesg);
614  const H5O_msg_class_t *mesg_type, H5O_shared_t *sh_mesg);
616  const H5O_msg_class_t *mesg_type, const void *_native_src, void *_native_dst,
617  hbool_t *recompute_size, unsigned *mesg_flags, H5O_copy_t *cpy_info,
618  void *udata);
620  const H5O_msg_class_t *mesg_type, const H5O_shared_t *shared_src,
621  H5O_shared_t *shared_dst, unsigned *mesg_flags, H5O_copy_t *cpy_info);
622 H5_DLL herr_t H5O__shared_debug(const H5O_shared_t *mesg, FILE *stream,
623  int indent, int fwidth);
624 
625 /* Attribute message operators */
627 H5_DLL herr_t H5O__attr_delete(H5F_t *f, H5O_t *open_oh, void *_mesg);
628 H5_DLL herr_t H5O__attr_link(H5F_t *f, H5O_t *open_oh, void *_mesg);
630 
631 /* Arrays of versions for:
632  * Object header, Attribute/Fill value/Filter pipeline messages
633  */
634 /* Layout/Datatype/Dataspace arrays of versions are in H5Dpkg.h, H5Tpkg.h and H5Spkg.h */
639 
640 /* Testing functions */
641 #ifdef H5O_TESTING
645 H5_DLL herr_t H5O__attr_dense_info_test(hid_t oid, hsize_t *name_count, hsize_t *corder_count);
648 H5_DLL herr_t H5O__get_rc_test(const H5O_loc_t *oloc, unsigned *rc);
649 H5_DLL herr_t H5O__msg_get_chunkno_test(hid_t oid, unsigned msg_type, unsigned *chunk_num);
650 H5_DLL herr_t H5O__msg_move_to_new_chunk_test(hid_t oid, unsigned msg_type);
651 #endif /* H5O_TESTING */
652 
653 /* Object header debugging routines */
654 #ifdef H5O_DEBUG
655 H5_DLL herr_t H5O__assert(const H5O_t *oh);
656 #endif /* H5O_DEBUG */
657 H5_DLL herr_t H5O__debug_real(H5F_t *f, H5O_t *oh, haddr_t addr, FILE *stream, int indent, int fwidth);
658 
659 #endif /* _H5Opkg_H */
660 
H5O_obj_class_t
struct H5O_obj_class_t H5O_obj_class_t
H5O_t::swmr_write
hbool_t swmr_write
Definition: H5Opkg.h:286
H5O_msg_class_t::share_flags
unsigned share_flags
Definition: H5Opkg.h:230
H5O_mesg_t::raw
uint8_t * raw
Definition: H5Opkg.h:256
H5O_t::version
uint8_t version
Definition: H5Opkg.h:305
H5O_loc_t
Definition: H5Oprivate.h:152
H5O_t::nmesgs
size_t nmesgs
Definition: H5Opkg.h:319
H5O_OBJ_DATASET
H5_DLLVAR const H5O_obj_class_t H5O_OBJ_DATASET[1]
Definition: H5Opkg.h:551
H5O__chunk_protect
H5_DLL H5O_chunk_proxy_t * H5O__chunk_protect(H5F_t *f, H5O_t *oh, unsigned idx)
Definition: H5Ochunk.c:162
H5O_MSG_ATTR
H5_DLLVAR const H5O_msg_class_t H5O_MSG_ATTR[1]
Definition: H5Opkg.h:485
H5F_LIBVER_NBOUNDS
@ H5F_LIBVER_NBOUNDS
Definition: H5Fpublic.h:168
H5O__msg_free_mesg
H5_DLL herr_t H5O__msg_free_mesg(H5O_mesg_t *mesg)
Definition: H5Omessage.c:680
H5O_obj_class_t
Definition: H5Opkg.h:336
H5O__msg_remove_real
H5_DLL herr_t H5O__msg_remove_real(H5F_t *f, H5O_t *oh, const H5O_msg_class_t *type, int sequence, H5O_operator_t op, void *op_data, hbool_t adj_link)
Definition: H5Omessage.c:1127
H5O__chunk_resize
H5_DLL herr_t H5O__chunk_resize(H5O_t *oh, H5O_chunk_proxy_t *chk_proxy)
Definition: H5Ochunk.c:287
H5O__inc_rc
H5_DLL herr_t H5O__inc_rc(H5O_t *oh)
Definition: H5Oint.c:2950
H5O_msg_class_t
Definition: H5Opkg.h:226
H5O_t::mtime
time_t mtime
Definition: H5Opkg.h:310
H5O_msg_class_t::native_size
size_t native_size
Definition: H5Opkg.h:229
size
iblock size
Definition: H5EAcache.c:787
H5O_t::nchunks
size_t nchunks
Definition: H5Opkg.h:326
H5O_msg_alloc_info_t::total_size
size_t total_size
Definition: H5Opkg.h:267
H5O_mesg_t::dirty
hbool_t dirty
Definition: H5Opkg.h:251
f
hdr f
Definition: H5EA.c:755
H5O_chunk_t
Definition: H5Opkg.h:271
H5FL_EXTERN
H5FL_EXTERN(H5O_t)
H5O_shared_t
Definition: H5Oprivate.h:268
H5O_cont_msgs_t::msgs
H5O_cont_t * msgs
Definition: H5Opkg.h:363
H5O_obj_ver_bounds
H5_DLLVAR const unsigned H5O_obj_ver_bounds[H5F_LIBVER_NBOUNDS]
Definition: H5Opkg.h:635
H5O_msg_class_t::set_share
herr_t(* set_share)(void *, const H5O_shared_t *)
Definition: H5Opkg.h:239
H5O_chk_cache_ud_t::decoding
hbool_t decoding
Definition: H5Opkg.h:410
H5O_cache_ud_t
Definition: H5Opkg.h:376
H5O__check_msg_marked_test
herr_t H5O__check_msg_marked_test(hid_t oid, hbool_t flag_val)
Definition: H5Otest.c:471
H5O_cache_ud_t::common
H5O_common_cache_ud_t common
Definition: H5Opkg.h:382
H5O_mesg_t::type
const H5O_msg_class_t * type
Definition: H5Opkg.h:250
H5O_addr_map_t::inc_ref_count
hsize_t inc_ref_count
Definition: H5Opkg.h:354
H5O__link_oh
H5_DLL int H5O__link_oh(H5F_t *f, int adjust, H5O_t *oh, hbool_t *deleted)
Definition: H5Oint.c:877
H5O_t::proxy
H5AC_proxy_entry_t * proxy
Definition: H5Opkg.h:332
H5O_MSG_LINFO
H5_DLLVAR const H5O_msg_class_t H5O_MSG_LINFO[1]
Definition: H5Opkg.h:443
H5O_iterate2_t
herr_t(* H5O_iterate2_t)(hid_t obj, const char *name, const H5O_info2_t *info, void *op_data)
Definition: H5Opublic.h:158
H5O_chunk_t::size
size_t size
Definition: H5Opkg.h:273
H5O_chunk_proxy_t
struct H5O_chunk_proxy_t H5O_chunk_proxy_t
H5O__shared_size
H5_DLL size_t H5O__shared_size(const H5F_t *f, const H5O_shared_t *sh_mesg)
Definition: H5Oshared.c:481
H5O__alloc_msgs
H5_DLL herr_t H5O__alloc_msgs(H5O_t *oh, size_t min_alloc)
Definition: H5Oalloc.c:449
H5O_cache_ud_t
struct H5O_cache_ud_t H5O_cache_ud_t
H5O__msg_count_real
H5_DLL unsigned H5O__msg_count_real(const H5O_t *oh, const H5O_msg_class_t *type)
Definition: H5Omessage.c:831
H5O_t::btime
time_t btime
Definition: H5Opkg.h:312
H5I_type_t
H5I_type_t
Definition: H5Ipublic.h:33
H5O__attr_link
H5_DLL herr_t H5O__attr_link(H5F_t *f, H5O_t *open_oh, void *_mesg)
Definition: H5Oattr.c:575
H5O_common_cache_ud_t::merged_null_msgs
unsigned merged_null_msgs
Definition: H5Opkg.h:370
H5O_msg_alloc_info_t::null_msgno
unsigned null_msgno
Definition: H5Opkg.h:268
haddr_t
CATCH haddr_t
Definition: H5EAdblock.c:162
H5O_t::min_dense
unsigned min_dense
Definition: H5Opkg.h:316
H5O_t::alloc_nmesgs
size_t alloc_nmesgs
Definition: H5Opkg.h:320
H5O_chk_cache_ud_t::oh
H5O_t * oh
Definition: H5Opkg.h:411
indent
*s *s indent
Definition: H5HLdbg.c:111
H5FL_SEQ_EXTERN
H5FL_SEQ_EXTERN(H5O_mesg_t)
H5O_common_cache_ud_t
struct H5O_common_cache_ud_t H5O_common_cache_ud_t
H5O_MSG_AINFO
H5_DLLVAR const H5O_msg_class_t H5O_MSG_AINFO[1]
Definition: H5Opkg.h:528
H5O_t::nlink
unsigned nlink
Definition: H5Opkg.h:304
H5O_chunk_proxy_t::cache_info
H5AC_info_t cache_info
Definition: H5Opkg.h:387
H5O_msg_class_t::id
unsigned id
Definition: H5Opkg.h:227
H5O_MSG_FSINFO
H5_DLLVAR const H5O_msg_class_t H5O_MSG_FSINFO[1]
Definition: H5Opkg.h:534
H5O_chk_cache_ud_t
struct H5O_chk_cache_ud_t H5O_chk_cache_ud_t
H5O__msg_copy_file
H5_DLL void * H5O__msg_copy_file(const H5O_msg_class_t *type, H5F_t *file_src, void *mesg_src, H5F_t *file_dst, hbool_t *recompute_size, unsigned *mesg_flags, H5O_copy_t *cpy_info, void *udata)
Definition: H5Omessage.c:1853
H5_DLLVAR
#define H5_DLLVAR
Definition: H5api_adpt.h:235
H5O__free
H5_DLL herr_t H5O__free(H5O_t *oh)
Definition: H5Oint.c:3089
H5O_obj_class_t::isa
htri_t(* isa)(const H5O_t *)
Definition: H5Opkg.h:341
H5O__shared_decode
H5_DLL void * H5O__shared_decode(H5F_t *f, H5O_t *open_oh, unsigned *ioflags, const uint8_t *buf, const H5O_msg_class_t *type)
Definition: H5Oshared.c:314
H5O_operator_t
herr_t(* H5O_operator_t)(const void *mesg, unsigned idx, void *operator_data)
Definition: H5Oprivate.h:849
H5O__delete_mesg
H5_DLL herr_t H5O__delete_mesg(H5F_t *f, H5O_t *open_oh, H5O_mesg_t *mesg)
Definition: H5Omessage.c:2076
H5O_chunk_proxy_t::oh
H5O_t * oh
Definition: H5Opkg.h:391
H5O__chunk_dest
H5_DLL herr_t H5O__chunk_dest(H5O_chunk_proxy_t *chunk_proxy)
Definition: H5Ochunk.c:424
H5O_chunk_proxy_t::chunkno
unsigned chunkno
Definition: H5Opkg.h:392
H5O_addr_map_t::udata
void * udata
Definition: H5Opkg.h:356
H5G_loc_t
Definition: H5Gprivate.h:144
H5O_t::alloc_nchunks
size_t alloc_nchunks
Definition: H5Opkg.h:327
H5O__attr_reset
H5_DLL herr_t H5O__attr_reset(void *_mesg)
H5O__debug_real
H5_DLL herr_t H5O__debug_real(H5F_t *f, H5O_t *oh, haddr_t addr, FILE *stream, int indent, int fwidth)
Definition: H5Odbg.c:286
H5O_chunk_t::chunk_proxy
struct H5O_chunk_proxy_t * chunk_proxy
Definition: H5Opkg.h:276
uint8_t
unsigned char uint8_t
Definition: H5private.h:429
H5O_chunk_t::image
uint8_t * image
Definition: H5Opkg.h:275
H5O__shared_post_copy_file
H5_DLL herr_t H5O__shared_post_copy_file(H5F_t *f, const H5O_msg_class_t *mesg_type, const H5O_shared_t *shared_src, H5O_shared_t *shared_dst, unsigned *mesg_flags, H5O_copy_t *cpy_info)
Definition: H5Oshared.c:663
H5O_MSG_TYPES
#define H5O_MSG_TYPES
Definition: H5Opkg.h:32
H5O__chunk_add
H5_DLL herr_t H5O__chunk_add(H5F_t *f, H5O_t *oh, unsigned idx, unsigned cont_chunkno)
Definition: H5Ochunk.c:93
H5O_msg_class_g
H5_DLLVAR const H5O_msg_class_t *const H5O_msg_class_g[H5O_MSG_TYPES]
Definition: H5Opkg.h:418
H5O_msg_alloc_info_t::msgno
int msgno
Definition: H5Opkg.h:262
H5O_MSG_DTYPE
H5_DLLVAR const H5O_msg_class_t H5O_MSG_DTYPE[1]
Definition: H5Opkg.h:446
H5O_mesg_t::chunkno
unsigned chunkno
Definition: H5Opkg.h:254
H5AC_proxy_entry_t
Definition: H5ACprivate.h:203
H5O_MSG_FILL_NEW
H5_DLLVAR const H5O_msg_class_t H5O_MSG_FILL_NEW[1]
Definition: H5Opkg.h:457
H5O_t::ctime
time_t ctime
Definition: H5Opkg.h:311
H5O_chunk_proxy_t::fd_parent
void * fd_parent
Definition: H5Opkg.h:405
H5O_msg_class_t::raw_size
size_t(* raw_size)(const H5F_t *, hbool_t, const void *)
Definition: H5Opkg.h:234
H5O_chunk_proxy_t::f
H5F_t * f
Definition: H5Opkg.h:390
H5O_msg_alloc_info_t::gap_size
size_t gap_size
Definition: H5Opkg.h:265
H5O__num_attrs_test
herr_t H5O__num_attrs_test(hid_t oid, hsize_t *nattrs)
Definition: H5Otest.c:268
H5O_MSG_GINFO
H5_DLLVAR const H5O_msg_class_t H5O_MSG_GINFO[1]
Definition: H5Opkg.h:479
H5O_t::atime
time_t atime
Definition: H5Opkg.h:309
htri_t
int htri_t
Definition: H5public.h:160
H5O_t::mesg
H5O_mesg_t * mesg
Definition: H5Opkg.h:321
H5O_MSG_MTIME
H5_DLLVAR const H5O_msg_class_t H5O_MSG_MTIME[1]
Definition: H5Opkg.h:495
H5O_cont_msgs_t::nmsgs
size_t nmsgs
Definition: H5Opkg.h:361
H5_iter_order_t
H5_iter_order_t
Definition: H5public.h:295
H5O_addr_map_t::is_locked
hbool_t is_locked
Definition: H5Opkg.h:353
H5O_addr_map_t::obj_class
const H5O_obj_class_t * obj_class
Definition: H5Opkg.h:355
H5O__msg_alloc
H5_DLL herr_t H5O__msg_alloc(H5F_t *f, H5O_t *oh, const H5O_msg_class_t *type, unsigned *mesg_flags, void *mesg, size_t *mesg_idx)
Definition: H5Omessage.c:1895
H5O__dec_rc
H5_DLL herr_t H5O__dec_rc(H5O_t *oh)
Definition: H5Oint.c:2986
H5O_MSG_NAME
H5_DLLVAR const H5O_msg_class_t H5O_MSG_NAME[1]
Definition: H5Opkg.h:488
H5O_chk_cache_ud_t::chunkno
unsigned chunkno
Definition: H5Opkg.h:412
H5O_msg_class_t::set_crt_index
herr_t(* set_crt_index)(void *, H5O_msg_crt_idx_t)
Definition: H5Opkg.h:245
H5O_chunk_proxy_t
Definition: H5Opkg.h:386
H5O_t::cache_info
H5AC_info_t cache_info
Definition: H5Opkg.h:280
H5O_t::max_compact
unsigned max_compact
Definition: H5Opkg.h:315
H5O_t
Definition: H5Opkg.h:279
hid_t
int64_t hid_t
Definition: H5Ipublic.h:55
H5O__msg_move_to_new_chunk_test
herr_t H5O__msg_move_to_new_chunk_test(hid_t oid, unsigned msg_type)
Definition: H5Otest.c:707
H5O_MSG_NULL
H5_DLLVAR const H5O_msg_class_t H5O_MSG_NULL[1]
Definition: H5Opkg.h:437
H5O_attr_ver_bounds
H5_DLLVAR const unsigned H5O_attr_ver_bounds[H5F_LIBVER_NBOUNDS]
Definition: H5Opkg.h:636
H5O_MSG_LAYOUT
H5_DLLVAR const H5O_msg_class_t H5O_MSG_LAYOUT[1]
Definition: H5Opkg.h:466
H5_ih_info_t
Definition: H5public.h:326
H5O_MSG_FILL
H5_DLLVAR const H5O_msg_class_t H5O_MSG_FILL[1]
Definition: H5Opkg.h:449
H5O_chunk_t::gap
size_t gap
Definition: H5Opkg.h:274
H5O_obj_class_t::bh_info
herr_t(* bh_info)(const H5O_loc_t *loc, H5O_t *oh, H5_ih_info_t *bh_info)
Definition: H5Opkg.h:345
H5O_t::ndecode_dirtied
size_t ndecode_dirtied
Definition: H5Opkg.h:296
H5O_MSG_LINK
H5_DLLVAR const H5O_msg_class_t H5O_MSG_LINK[1]
Definition: H5Opkg.h:460
H5O_common_cache_ud_t
Definition: H5Opkg.h:367
H5O_cont_msgs_t
struct H5O_cont_msgs_t H5O_cont_msgs_t
H5O__msg_iterate_real
H5_DLL herr_t H5O__msg_iterate_real(H5F_t *f, H5O_t *oh, const H5O_msg_class_t *type, const H5O_mesg_operator_t *op, void *op_data)
Definition: H5Omessage.c:1266
H5O_obj_class_t::name
const char * name
Definition: H5Opkg.h:338
H5O__flush_msgs
H5_DLL herr_t H5O__flush_msgs(H5F_t *f, H5O_t *oh)
Definition: H5Omessage.c:2217
H5O_mesg_t::flags
uint8_t flags
Definition: H5Opkg.h:252
H5O_msg_class_t::get_crt_index
herr_t(* get_crt_index)(const void *, H5O_msg_crt_idx_t *)
Definition: H5Opkg.h:244
H5O_pline_ver_bounds
H5_DLLVAR const unsigned H5O_pline_ver_bounds[H5F_LIBVER_NBOUNDS]
Definition: H5Opkg.h:638
H5O_chunk_t::addr
haddr_t addr
Definition: H5Opkg.h:272
H5O__chunk_delete
H5_DLL herr_t H5O__chunk_delete(H5F_t *f, H5O_t *oh, unsigned idx)
Definition: H5Ochunk.c:379
H5O__is_attr_empty_test
htri_t H5O__is_attr_empty_test(hid_t oid)
Definition: H5Otest.c:166
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
H5ACprivate.h
H5O_copy_t
Definition: H5Oprivate.h:172
H5O_cache_ud_t::chunk0_size
size_t chunk0_size
Definition: H5Opkg.h:379
H5O_chunk_t
struct H5O_chunk_t H5O_chunk_t
H5O_MSG_MDCI
H5_DLLVAR const H5O_msg_class_t H5O_MSG_MDCI[1]
Definition: H5Opkg.h:537
H5Oprivate.h
H5O_MSG_UNKNOWN
H5_DLLVAR const H5O_msg_class_t H5O_MSG_UNKNOWN[1]
Definition: H5Opkg.h:540
H5O_t::flags
uint8_t flags
Definition: H5Opkg.h:306
H5O_cont_msgs_t::alloc_nmsgs
size_t alloc_nmsgs
Definition: H5Opkg.h:362
H5O__visit
H5_DLL herr_t H5O__visit(H5G_loc_t *loc, const char *obj_name, H5_index_t idx_type, H5_iter_order_t order, H5O_iterate2_t op, void *op_data, unsigned fields)
Definition: H5Oint.c:2817
H5O__get_rc_test
herr_t H5O__get_rc_test(const H5O_loc_t *loc, unsigned *rc)
Definition: H5Otest.c:590
size_t
size_t
Definition: H5overflow.txt:41
H5O__condense_header
H5_DLL herr_t H5O__condense_header(H5F_t *f, H5O_t *oh)
Definition: H5Oalloc.c:2295
int
CATCH int
Definition: H5EA.c:1002
H5O_t::chunks_pinned
hbool_t chunks_pinned
Definition: H5Opkg.h:329
H5O__attr_delete
H5_DLL herr_t H5O__attr_delete(H5F_t *f, H5O_t *open_oh, void *_mesg)
Definition: H5Oattr.c:537
H5O_msg_crt_idx_t
uint32_t H5O_msg_crt_idx_t
Definition: H5Opublic.h:155
H5O_addr_map_t
struct H5O_addr_map_t H5O_addr_map_t
H5O_MSG_PLINE
H5_DLLVAR const H5O_msg_class_t H5O_MSG_PLINE[1]
Definition: H5Opkg.h:482
H5O_MSG_SDSPACE
H5_DLLVAR const H5O_msg_class_t H5O_MSG_SDSPACE[1]
Definition: H5Opkg.h:440
H5O__shared_link
H5_DLL herr_t H5O__shared_link(H5F_t *f, H5O_t *open_oh, const H5O_msg_class_t *mesg_type, H5O_shared_t *sh_mesg)
Definition: H5Oshared.c:559
H5O_t::attr_msgs_seen
size_t attr_msgs_seen
Definition: H5Opkg.h:323
H5O_msg_alloc_info_t
Definition: H5Opkg.h:261
H5O__msg_append_real
H5_DLL herr_t H5O__msg_append_real(H5F_t *f, H5O_t *oh, const H5O_msg_class_t *type, unsigned mesg_flags, unsigned update_flags, void *mesg)
Definition: H5Omessage.c:205
H5O__expunge_chunks_test
herr_t H5O__expunge_chunks_test(const H5O_loc_t *loc)
Definition: H5Otest.c:532
H5O_msg_class_t::link
herr_t(* link)(H5F_t *, H5O_t *, void *)
Definition: H5Opkg.h:238
H5O_cache_ud_t::v1_pfx_nmesgs
unsigned v1_pfx_nmesgs
Definition: H5Opkg.h:378
H5O__alloc_chunk
H5_DLL herr_t H5O__alloc_chunk(H5F_t *f, H5O_t *oh, size_t size, size_t found_null, const H5O_msg_alloc_info_t *found_msg, size_t *new_idx)
Definition: H5Oalloc.c:887
H5O_MSG_SHMESG
H5_DLLVAR const H5O_msg_class_t H5O_MSG_SHMESG[1]
Definition: H5Opkg.h:501
H5O_t::sizeof_addr
size_t sizeof_addr
Definition: H5Opkg.h:285
fwidth
*s *s fwidth
Definition: H5HLdbg.c:111
H5O__shared_delete
H5_DLL herr_t H5O__shared_delete(H5F_t *f, H5O_t *open_oh, const H5O_msg_class_t *mesg_type, H5O_shared_t *sh_mesg)
Definition: H5Oshared.c:516
H5O_obj_class_t::flush
herr_t(* flush)(void *obj_ptr)
Definition: H5Opkg.h:346
H5O_msg_class_t::encode
herr_t(* encode)(H5F_t *, hbool_t, uint8_t *, const void *)
Definition: H5Opkg.h:232
H5O_t::rc
size_t rc
Definition: H5Opkg.h:300
unsigned
unsigned
Definition: H5overflow.txt:31
H5O_MSG_STAB
H5_DLLVAR const H5O_msg_class_t H5O_MSG_STAB[1]
Definition: H5Opkg.h:507
H5O__alloc
H5_DLL herr_t H5O__alloc(H5F_t *f, H5O_t *oh, const H5O_msg_class_t *type, const void *mesg, size_t *mesg_idx)
Definition: H5Oalloc.c:1292
H5O_msg_alloc_info_t::id
unsigned id
Definition: H5Opkg.h:263
H5O_MSG_CONT
H5_DLLVAR const H5O_msg_class_t H5O_MSG_CONT[1]
Definition: H5Opkg.h:504
H5O__attr_count_real
H5_DLL herr_t H5O__attr_count_real(H5F_t *f, H5O_t *oh, hsize_t *nattrs)
Definition: H5Oattribute.c:1698
H5O_t::sizeof_size
size_t sizeof_size
Definition: H5Opkg.h:284
H5O__msg_write_real
H5_DLL herr_t H5O__msg_write_real(H5F_t *f, H5O_t *oh, const H5O_msg_class_t *type, unsigned mesg_flags, unsigned update_flags, void *mesg)
Definition: H5Omessage.c:361
H5O_t::chunk
H5O_chunk_t * chunk
Definition: H5Opkg.h:328
H5_obj_t
Definition: H5private.h:626
H5O_MSG_MTIME_NEW
H5_DLLVAR const H5O_msg_class_t H5O_MSG_MTIME_NEW[1]
Definition: H5Opkg.h:513
H5O_common_cache_ud_t::addr
haddr_t addr
Definition: H5Opkg.h:372
H5O_mesg_operator_t
Definition: H5Oprivate.h:865
H5O_mesg_t::raw_size
size_t raw_size
Definition: H5Opkg.h:257
H5O_OBJ_DATATYPE
H5_DLLVAR const H5O_obj_class_t H5O_OBJ_DATATYPE[1]
Definition: H5Opkg.h:554
H5O__shared_encode
H5_DLL herr_t H5O__shared_encode(const H5F_t *f, uint8_t *buf, const H5O_shared_t *sh_mesg)
Definition: H5Oshared.c:402
H5O_chk_cache_ud_t::common
H5O_common_cache_ud_t common
Definition: H5Opkg.h:414
H5_DLL
#define H5_DLL
Definition: H5api_adpt.h:234
H5O_chk_cache_ud_t
Definition: H5Opkg.h:409
H5O_t::link_msgs_seen
size_t link_msgs_seen
Definition: H5Opkg.h:322
H5O_cache_ud_t::free_oh
hbool_t free_oh
Definition: H5Opkg.h:381
H5O__shared_copy_file
H5_DLL herr_t H5O__shared_copy_file(H5F_t *file_src, H5F_t *file_dst, const H5O_msg_class_t *mesg_type, const void *_native_src, void *_native_dst, hbool_t *recompute_size, unsigned *mesg_flags, H5O_copy_t *cpy_info, void *udata)
H5O_msg_class_t::debug
herr_t(* debug)(H5F_t *, const void *, FILE *, int, int)
Definition: H5Opkg.h:246
H5O__is_attr_dense_test
htri_t H5O__is_attr_dense_test(hid_t oid)
Definition: H5Otest.c:96
H5O_common_cache_ud_t::file_intent
unsigned file_intent
Definition: H5Opkg.h:369
H5O_MSG_DRVINFO
H5_DLLVAR const H5O_msg_class_t H5O_MSG_DRVINFO[1]
Definition: H5Opkg.h:525
H5O_msg_alloc_info_t::chunkno
unsigned chunkno
Definition: H5Opkg.h:264
H5O_MSG_REFCOUNT
H5_DLLVAR const H5O_msg_class_t H5O_MSG_REFCOUNT[1]
Definition: H5Opkg.h:531
H5O_cache_ud_t::made_attempt
hbool_t made_attempt
Definition: H5Opkg.h:377
H5O__msg_get_chunkno_test
herr_t H5O__msg_get_chunkno_test(hid_t oid, unsigned msg_type, unsigned *chunk_num)
Definition: H5Otest.c:639
H5O_cont_msgs_t
Definition: H5Opkg.h:360
H5O_MSG_EFL
H5_DLLVAR const H5O_msg_class_t H5O_MSG_EFL[1]
Definition: H5Opkg.h:463
H5O_common_cache_ud_t::f
H5F_t * f
Definition: H5Opkg.h:368
H5O__obj_class
H5_DLL const H5O_obj_class_t * H5O__obj_class(const H5O_loc_t *loc)
Definition: H5Oint.c:1759
H5O_msg_class_t::post_copy_file
herr_t(* post_copy_file)(const H5O_loc_t *, const void *, H5O_loc_t *, void *, unsigned *, H5O_copy_t *)
Definition: H5Opkg.h:243
H5O_msg_class_t::can_share
htri_t(* can_share)(const void *)
Definition: H5Opkg.h:240
H5O_chk_cache_ud_t::size
size_t size
Definition: H5Opkg.h:413
H5O_mesg_t::crt_idx
H5O_msg_crt_idx_t crt_idx
Definition: H5Opkg.h:253
H5O_obj_class_t::type
H5O_type_t type
Definition: H5Opkg.h:337
H5F_t
Definition: H5Fpkg.h:374
H5O_OBJ_GROUP
H5_DLLVAR const H5O_obj_class_t H5O_OBJ_GROUP[1]
Definition: H5Opkg.h:548
H5O_common_cache_ud_t::cont_msg_info
H5O_cont_msgs_t * cont_msg_info
Definition: H5Opkg.h:371
H5O_fill_ver_bounds
H5_DLLVAR const unsigned H5O_fill_ver_bounds[H5F_LIBVER_NBOUNDS]
Definition: H5Opkg.h:637
H5O_msg_class_t::reset
herr_t(* reset)(void *)
Definition: H5Opkg.h:235
H5O_msg_alloc_info_t::null_size
size_t null_size
Definition: H5Opkg.h:266
H5O__chunk_unprotect
H5_DLL herr_t H5O__chunk_unprotect(H5F_t *f, H5O_chunk_proxy_t *chk_proxy, hbool_t chk_dirtied)
Definition: H5Ochunk.c:236
H5FLprivate.h
herr_t
int herr_t
Definition: H5public.h:128
H5O_msg_class_t::del
herr_t(* del)(H5F_t *, H5O_t *, void *)
Definition: H5Opkg.h:237
hbool_t
bool hbool_t
Definition: H5public.h:159
H5O_msg_class_t::pre_copy_file
herr_t(* pre_copy_file)(H5F_t *, const void *, hbool_t *, const H5O_copy_t *, void *)
Definition: H5Opkg.h:241
H5O_mesg_t::native
void * native
Definition: H5Opkg.h:255
H5C_cache_entry_t
Definition: H5Cprivate.h:1597
H5O_MSG_BTREEK
H5_DLLVAR const H5O_msg_class_t H5O_MSG_BTREEK[1]
Definition: H5Opkg.h:519
H5O_t::has_refcount_msg
hbool_t has_refcount_msg
Definition: H5Opkg.h:303
H5O_cache_ud_t::oh
H5O_t * oh
Definition: H5Opkg.h:380
H5O_addr_map_t::dst_addr
haddr_t dst_addr
Definition: H5Opkg.h:352
hsize_t
hsize_t
Definition: H5overflow.txt:44
H5O_mesg_t
Definition: H5Opkg.h:249
H5O_cont_t
Definition: H5Oprivate.h:736
H5O_msg_class_t::free
herr_t(* free)(void *)
Definition: H5Opkg.h:236
H5_index_t
H5_index_t
Definition: H5public.h:316
H5FL_BLK_EXTERN
H5FL_BLK_EXTERN(chunk_image)
H5O__shared_debug
H5_DLL herr_t H5O__shared_debug(const H5O_shared_t *mesg, FILE *stream, int indent, int fwidth)
Definition: H5Oshared.c:715
H5O_msg_class_t::name
const char * name
Definition: H5Opkg.h:228
H5O__chunk_update_idx
H5_DLL herr_t H5O__chunk_update_idx(H5F_t *f, H5O_t *oh, unsigned idx)
Definition: H5Ochunk.c:328
H5O__release_mesg
H5_DLL herr_t H5O__release_mesg(H5F_t *f, H5O_t *oh, H5O_mesg_t *mesg, hbool_t adj_link)
Definition: H5Oalloc.c:1378
H5O_addr_map_t
Definition: H5Opkg.h:350
H5O__attr_bh_info
H5_DLL herr_t H5O__attr_bh_info(H5F_t *f, H5O_t *oh, H5_ih_info_t *bh_info)
Definition: H5Oattribute.c:1862
H5O_msg_alloc_info_t
struct H5O_msg_alloc_info_t H5O_msg_alloc_info_t
H5O__attr_dense_info_test
herr_t H5O__attr_dense_info_test(hid_t oid, hsize_t *name_count, hsize_t *corder_count)
Definition: H5Otest.c:368
H5O_obj_class_t::free_copy_file_udata
void(* free_copy_file_udata)(void *)
Definition: H5Opkg.h:340
H5O_addr_map_t::src_obj_pos
H5_obj_t src_obj_pos
Definition: H5Opkg.h:351
H5O_type_t
H5O_type_t
Definition: H5Opublic.h:102