HDF5  1.12.0
H5Dpkg.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, April 14, 2003
17  *
18  * Purpose: This file contains declarations which are visible only within
19  * the H5D package. Source files outside the H5D package should
20  * include H5Dprivate.h instead.
21  */
22 #if !(defined H5D_FRIEND || defined H5D_MODULE)
23 #error "Do not include this file outside the H5D package!"
24 #endif
25 
26 #ifndef _H5Dpkg_H
27 #define _H5Dpkg_H
28 
29 /* Get package's private header */
30 #include "H5Dprivate.h"
31 
32 /* Other private headers needed by this file */
33 #include "H5ACprivate.h" /* Metadata cache */
34 #include "H5B2private.h" /* v2 B-trees */
35 #include "H5Fprivate.h" /* File access */
36 #include "H5Gprivate.h" /* Groups */
37 #include "H5SLprivate.h" /* Skip lists */
38 #include "H5Tprivate.h" /* Datatypes */
39 
40 /**************************/
41 /* Package Private Macros */
42 /**************************/
43 
44 /* Set the minimum object header size to create objects with */
45 #define H5D_MINHDR_SIZE 256
46 
47 /* [Simple] Macro to construct a H5D_io_info_t from it's components */
48 #define H5D_BUILD_IO_INFO_WRT(io_info, ds, str, buf) \
49  (io_info)->dset = ds; \
50  (io_info)->f_sh = H5F_SHARED((ds)->oloc.file); \
51  (io_info)->store = str; \
52  (io_info)->op_type = H5D_IO_OP_WRITE; \
53  (io_info)->u.wbuf = buf
54 #define H5D_BUILD_IO_INFO_RD(io_info, ds, str, buf) \
55  (io_info)->dset = ds; \
56  (io_info)->f_sh = H5F_SHARED((ds)->oloc.file); \
57  (io_info)->store = str; \
58  (io_info)->op_type = H5D_IO_OP_READ; \
59  (io_info)->u.rbuf = buf
60 
61 /* Flags for marking aspects of a dataset dirty */
62 #define H5D_MARK_SPACE 0x01
63 #define H5D_MARK_LAYOUT 0x02
64 
65 /* Default creation parameters for chunk index data structures */
66 /* See H5O_layout_chunk_t */
67 
68 /* Fixed array creation values */
69 #define H5D_FARRAY_CREATE_PARAM_SIZE 1 /* Size of the creation parameters in bytes */
70 #define H5D_FARRAY_MAX_DBLK_PAGE_NELMTS_BITS 10 /* i.e. 1024 elements per data block page */
71 
72 /* Extensible array creation values */
73 #define H5D_EARRAY_CREATE_PARAM_SIZE 5 /* Size of the creation parameters in bytes */
74 #define H5D_EARRAY_MAX_NELMTS_BITS 32 /* i.e. 4 giga-elements */
75 #define H5D_EARRAY_IDX_BLK_ELMTS 4
76 #define H5D_EARRAY_SUP_BLK_MIN_DATA_PTRS 4
77 #define H5D_EARRAY_DATA_BLK_MIN_ELMTS 16
78 #define H5D_EARRAY_MAX_DBLOCK_PAGE_NELMTS_BITS 10 /* i.e. 1024 elements per data block page */
79 
80 /* v2 B-tree creation values for raw meta_size */
81 #define H5D_BT2_CREATE_PARAM_SIZE 6 /* Size of the creation parameters in bytes */
82 #define H5D_BT2_NODE_SIZE 2048
83 #define H5D_BT2_SPLIT_PERC 100
84 #define H5D_BT2_MERGE_PERC 40
85 
86 
87 /****************************/
88 /* Package Private Typedefs */
89 /****************************/
90 
91 /* Typedef for datatype information for raw data I/O operation */
92 typedef struct H5D_type_info_t {
93  /* Initial values */
94  const H5T_t *mem_type; /* Pointer to memory datatype */
95  const H5T_t *dset_type; /* Pointer to dataset datatype */
96  H5T_path_t *tpath; /* Datatype conversion path */
97  hid_t src_type_id; /* Source datatype ID */
98  hid_t dst_type_id; /* Destination datatype ID */
99 
100  /* Computed/derived values */
101  size_t src_type_size; /* Size of source type */
102  size_t dst_type_size; /* Size of destination type */
103  size_t max_type_size; /* Size of largest source/destination type */
104  hbool_t is_conv_noop; /* Whether the type conversion is a NOOP */
105  hbool_t is_xform_noop; /* Whether the data transform is a NOOP */
106  const H5T_subset_info_t *cmpd_subset; /* Info related to the compound subset conversion functions */
107  H5T_bkg_t need_bkg; /* Type of background buf needed */
108  size_t request_nelmts; /* Requested strip mine */
109  uint8_t *tconv_buf; /* Datatype conv buffer */
110  hbool_t tconv_buf_allocated; /* Whether the type conversion buffer was allocated */
111  uint8_t *bkg_buf; /* Background buffer */
112  hbool_t bkg_buf_allocated; /* Whether the background buffer was allocated */
114 
115 /* Forward declaration of structs used below */
116 struct H5D_io_info_t;
117 struct H5D_chunk_map_t;
118 typedef struct H5D_shared_t H5D_shared_t;
119 
120 /* Function pointers for I/O on particular types of dataset layouts */
122 typedef herr_t (*H5D_layout_init_func_t)(H5F_t *f, const H5D_t *dset,
123  hid_t dapl_id);
126 typedef herr_t (*H5D_layout_io_init_func_t)(const struct H5D_io_info_t *io_info,
127  const H5D_type_info_t *type_info,
128  hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
129  struct H5D_chunk_map_t *cm);
130 typedef herr_t (*H5D_layout_read_func_t)(struct H5D_io_info_t *io_info,
131  const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space,
132  const H5S_t *mem_space, struct H5D_chunk_map_t *fm);
133 typedef herr_t (*H5D_layout_write_func_t)(struct H5D_io_info_t *io_info,
134  const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space,
135  const H5S_t *mem_space, struct H5D_chunk_map_t *fm);
136 typedef ssize_t (*H5D_layout_readvv_func_t)(const struct H5D_io_info_t *io_info,
137  size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[],
138  size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[]);
139 typedef ssize_t (*H5D_layout_writevv_func_t)(const struct H5D_io_info_t *io_info,
140  size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[],
141  size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[]);
142 typedef herr_t (*H5D_layout_flush_func_t)(H5D_t *dataset);
143 typedef herr_t (*H5D_layout_io_term_func_t)(const struct H5D_chunk_map_t *cm);
144 typedef herr_t (*H5D_layout_dest_func_t)(H5D_t *dataset);
145 
146 /* Typedef for grouping layout I/O routines */
147 typedef struct H5D_layout_ops_t {
148  H5D_layout_construct_func_t construct; /* Layout constructor for new datasets */
149  H5D_layout_init_func_t init; /* Layout initializer for dataset */
150  H5D_layout_is_space_alloc_func_t is_space_alloc; /* Query routine to determine if storage is allocated */
151  H5D_layout_is_data_cached_func_t is_data_cached; /* Query routine to determine if any raw data is cached. If routine is not present then the layout type never caches raw data. */
152  H5D_layout_io_init_func_t io_init; /* I/O initialization routine */
153  H5D_layout_read_func_t ser_read; /* High-level I/O routine for reading data in serial */
154  H5D_layout_write_func_t ser_write; /* High-level I/O routine for writing data in serial */
155 #ifdef H5_HAVE_PARALLEL
156  H5D_layout_read_func_t par_read; /* High-level I/O routine for reading data in parallel */
157  H5D_layout_write_func_t par_write; /* High-level I/O routine for writing data in parallel */
158 #endif /* H5_HAVE_PARALLEL */
159  H5D_layout_readvv_func_t readvv; /* Low-level I/O routine for reading data */
160  H5D_layout_writevv_func_t writevv; /* Low-level I/O routine for writing data */
161  H5D_layout_flush_func_t flush; /* Low-level I/O routine for flushing raw data */
162  H5D_layout_io_term_func_t io_term; /* I/O shutdown routine */
163  H5D_layout_dest_func_t dest; /* Destroy layout info */
165 
166 /* Function pointers for either multiple or single block I/O access */
167 typedef herr_t (*H5D_io_single_read_func_t)(const struct H5D_io_info_t *io_info,
168  const H5D_type_info_t *type_info,
169  hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
170 typedef herr_t (*H5D_io_single_write_func_t)(const struct H5D_io_info_t *io_info,
171  const H5D_type_info_t *type_info,
172  hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
173 
174 /* Typedef for raw data I/O framework info */
175 typedef struct H5D_io_ops_t {
176  H5D_layout_read_func_t multi_read; /* High-level I/O routine for reading data */
177  H5D_layout_write_func_t multi_write; /* High-level I/O routine for writing data */
178  H5D_io_single_read_func_t single_read; /* I/O routine for reading single block */
179  H5D_io_single_write_func_t single_write; /* I/O routine for writing single block */
181 
182 /* Typedefs for dataset storage information */
183 typedef struct {
184  haddr_t dset_addr; /* Address of dataset in file */
185  hsize_t dset_size; /* Total size of dataset in file */
187 
188 typedef struct {
189  hsize_t *scaled; /* Scaled coordinates for a chunk */
191 
192 typedef struct {
193  void *buf; /* Buffer for compact dataset */
194  hbool_t *dirty; /* Pointer to dirty flag to mark */
196 
197 typedef union H5D_storage_t {
198  H5D_contig_storage_t contig; /* Contiguous information for dataset */
199  H5D_chunk_storage_t chunk; /* Chunk information for dataset */
200  H5D_compact_storage_t compact; /* Compact information for dataset */
201  H5O_efl_t efl; /* External file list information for dataset */
203 
204 /* Typedef for raw data I/O operation info */
205 typedef enum H5D_io_op_type_t {
206  H5D_IO_OP_READ, /* Read operation */
207  H5D_IO_OP_WRITE /* Write operation */
209 
210 typedef struct H5D_io_info_t {
211  const H5D_t *dset; /* Pointer to dataset being operated on */
212 /* QAK: Delete the f_sh field when oloc has a shared file pointer? */
213  H5F_shared_t *f_sh; /* Pointer to shared file struct that dataset is within */
214 #ifdef H5_HAVE_PARALLEL
215  MPI_Comm comm; /* MPI communicator for file */
216  hbool_t using_mpi_vfd; /* Whether the file is using an MPI-based VFD */
217 #endif /* H5_HAVE_PARALLEL */
218  H5D_storage_t *store; /* Dataset storage info */
219  H5D_layout_ops_t layout_ops; /* Dataset layout I/O operation function pointers */
220  H5D_io_ops_t io_ops; /* I/O operation function pointers */
222  union {
223  void *rbuf; /* Pointer to buffer for read */
224  const void *wbuf; /* Pointer to buffer to write */
225  } u;
227 
228 
229 /******************/
230 /* Chunk typedefs */
231 /******************/
232 
233 /* Typedef for chunked dataset index operation info */
234 typedef struct H5D_chk_idx_info_t {
235  H5F_t *f; /* File pointer for operation */
236  const H5O_pline_t *pline; /* I/O pipeline info */
237  H5O_layout_chunk_t *layout; /* Chunk layout description */
238  H5O_storage_chunk_t *storage; /* Chunk storage description */
240 
241 /*
242  * "Generic" chunk record. Each chunk is keyed by the minimum logical
243  * N-dimensional coordinates and the datatype size of the chunk.
244  * The fastest-varying dimension is assumed to reference individual bytes of
245  * the array, so a 100-element 1-D array of 4-byte integers would really be a
246  * 2-D array with the slow varying dimension of size 100 and the fast varying
247  * dimension of size 4 (the storage dimensionality has very little to do with
248  * the real dimensionality).
249  *
250  * The chunk's file address, filter mask and size on disk are not key values.
251  */
252 typedef struct H5D_chunk_rec_t {
253  hsize_t scaled[H5O_LAYOUT_NDIMS]; /* Logical offset to start */
254  uint32_t nbytes; /* Size of stored data */
255  uint32_t filter_mask; /* Excluded filters */
256  haddr_t chunk_addr; /* Address of chunk in file */
258 
259 /*
260  * Common data exchange structure for indexed storage nodes. This structure is
261  * passed through the indexing layer to the methods for the objects
262  * to which the index points.
263  */
264 typedef struct H5D_chunk_common_ud_t {
265  const H5O_layout_chunk_t *layout; /* Chunk layout description */
266  const H5O_storage_chunk_t *storage; /* Chunk storage description */
267  const hsize_t *scaled; /* Scaled coordinates for a chunk */
269 
270 /* B-tree callback info for various operations */
271 typedef struct H5D_chunk_ud_t {
272  /* Downward */
273  H5D_chunk_common_ud_t common; /* Common info for B-tree user data (must be first) */
274 
275  /* Upward */
276  unsigned idx_hint; /* Index of chunk in cache, if present */
277  H5F_block_t chunk_block; /* Offset/length of chunk in file */
278  unsigned filter_mask; /* Excluded filters */
279  hbool_t new_unfilt_chunk; /* Whether the chunk just became unfiltered */
280  hsize_t chunk_idx; /* Chunk index for EA, FA indexing */
282 
283 /* Typedef for "generic" chunk callbacks */
284 typedef int (*H5D_chunk_cb_func_t)(const H5D_chunk_rec_t *chunk_rec,
285  void *udata);
286 
287 /* Typedefs for chunk operations */
289  const H5S_t *space, haddr_t dset_ohdr_addr);
293  H5D_chunk_ud_t *udata, const H5D_t *dset);
295  H5D_chunk_ud_t *udata);
298  H5D_chunk_cb_func_t chunk_cb, void *chunk_udata);
300  H5D_chunk_common_ud_t *udata);
303  const H5D_chk_idx_info_t *idx_info_dst);
305  H5O_storage_chunk_t *storage_dst);
307  hsize_t *idx_size);
308 typedef herr_t (*H5D_chunk_reset_func_t)(H5O_storage_chunk_t *storage, hbool_t reset_addr);
310  FILE *stream);
311 typedef herr_t (*H5D_chunk_dest_func_t)(const H5D_chk_idx_info_t *idx_info);
312 
313 /* Typedef for grouping chunk I/O routines */
314 typedef struct H5D_chunk_ops_t {
315  hbool_t can_swim; /* Flag to indicate that the index supports SWMR access */
316  H5D_chunk_init_func_t init; /* Routine to initialize indexing information in memory */
317  H5D_chunk_create_func_t create; /* Routine to create chunk index */
318  H5D_chunk_is_space_alloc_func_t is_space_alloc; /* Query routine to determine if storage/index is allocated */
319  H5D_chunk_insert_func_t insert; /* Routine to insert a chunk into an index */
320  H5D_chunk_get_addr_func_t get_addr; /* Routine to retrieve address of chunk in file */
321  H5D_chunk_resize_func_t resize; /* Routine to update chunk index info after resizing dataset */
322  H5D_chunk_iterate_func_t iterate; /* Routine to iterate over chunks */
323  H5D_chunk_remove_func_t remove; /* Routine to remove a chunk from an index */
324  H5D_chunk_delete_func_t idx_delete; /* Routine to delete index & all chunks from file*/
325  H5D_chunk_copy_setup_func_t copy_setup; /* Routine to perform any necessary setup for copying chunks */
326  H5D_chunk_copy_shutdown_func_t copy_shutdown; /* Routine to perform any necessary shutdown for copying chunks */
327  H5D_chunk_size_func_t size; /* Routine to get size of indexing information */
328  H5D_chunk_reset_func_t reset; /* Routine to reset indexing information */
329  H5D_chunk_dump_func_t dump; /* Routine to dump indexing information */
330  H5D_chunk_dest_func_t dest; /* Routine to destroy indexing information in memory */
332 
333 /* Structure holding information about a chunk's selection for mapping */
334 typedef struct H5D_chunk_info_t {
335  hsize_t index; /* "Index" of chunk in dataset */
336  uint32_t chunk_points; /* Number of elements selected in chunk */
337  hsize_t scaled[H5O_LAYOUT_NDIMS]; /* Scaled coordinates of chunk (in file dataset's dataspace) */
338  H5S_t *fspace; /* Dataspace describing chunk & selection in it */
339  hbool_t fspace_shared; /* Indicate that the file space for a chunk is shared and shouldn't be freed */
340  H5S_t *mspace; /* Dataspace describing selection in memory corresponding to this chunk */
341  hbool_t mspace_shared; /* Indicate that the memory space for a chunk is shared and shouldn't be freed */
343 
344 /* Main structure holding the mapping between file chunks and memory */
345 typedef struct H5D_chunk_map_t {
346  H5O_layout_t *layout; /* Dataset layout information*/
347  hsize_t nelmts; /* Number of elements selected in file & memory dataspaces */
348 
349  const H5S_t *file_space; /* Pointer to the file dataspace */
350  unsigned f_ndims; /* Number of dimensions for file dataspace */
351 
352  const H5S_t *mem_space; /* Pointer to the memory dataspace */
353  H5S_t *mchunk_tmpl; /* Dataspace template for new memory chunks */
354  H5S_sel_iter_t mem_iter; /* Iterator for elements in memory selection */
355  unsigned m_ndims; /* Number of dimensions for memory dataspace */
356  H5S_sel_type msel_type; /* Selection type in memory */
357  H5S_sel_type fsel_type; /* Selection type in file */
358 
359  H5SL_t *sel_chunks; /* Skip list containing information for each chunk selected */
360 
361  H5S_t *single_space; /* Dataspace for single chunk */
362  H5D_chunk_info_t *single_chunk_info; /* Pointer to single chunk's info */
363  hbool_t use_single; /* Whether I/O is on a single element */
364 
365  hsize_t last_index; /* Index of last chunk operated on */
366  H5D_chunk_info_t *last_chunk_info; /* Pointer to last chunk's info */
367 
368  hsize_t chunk_dim[H5O_LAYOUT_NDIMS]; /* Size of chunk in each dimension */
369 
370 #ifdef H5_HAVE_PARALLEL
371  H5D_chunk_info_t **select_chunk; /* Store the information about whether this chunk is selected or not */
372 #endif /* H5_HAVE_PARALLEL */
374 
375 /* Cached information about a particular chunk */
376 typedef struct H5D_chunk_cached_t {
377  hbool_t valid; /*whether cache info is valid*/
378  hsize_t scaled[H5O_LAYOUT_NDIMS]; /*scaled offset of chunk*/
379  haddr_t addr; /*file address of chunk */
380  uint32_t nbytes; /*size of stored data */
381  hsize_t chunk_idx; /*index of chunk in dataset */
382  unsigned filter_mask; /*excluded filters */
384 
385 /****************************/
386 /* Virtual dataset typedefs */
387 /****************************/
388 
389 /* List of files held open during refresh operations */
390 typedef struct H5D_virtual_held_file_t {
391  H5F_t *file; /* Pointer to file held open */
392  struct H5D_virtual_held_file_t *next; /* Pointer to next node in list */
394 
395 /* The raw data chunk cache */
396 struct H5D_rdcc_ent_t; /* Forward declaration of struct used below */
397 typedef struct H5D_rdcc_t {
398  struct {
399  unsigned ninits; /* Number of chunk creations */
400  unsigned nhits; /* Number of cache hits */
401  unsigned nmisses; /* Number of cache misses */
402  unsigned nflushes; /* Number of cache flushes */
403  } stats;
404  size_t nbytes_max; /* Maximum cached raw data in bytes */
405  size_t nslots; /* Number of chunk slots allocated */
406  double w0; /* Chunk preemption policy */
407  struct H5D_rdcc_ent_t *head; /* Head of doubly linked list */
408  struct H5D_rdcc_ent_t *tail; /* Tail of doubly linked list */
409  struct H5D_rdcc_ent_t *tmp_head; /* Head of temporary doubly linked list. Chunks on this list are not in the hash table (slot). The head entry is a sentinel (does not refer to an actual chunk). */
410  size_t nbytes_used; /* Current cached raw data in bytes */
411  int nused; /* Number of chunk slots in use */
412  H5D_chunk_cached_t last; /* Cached copy of last chunk information */
413  struct H5D_rdcc_ent_t **slot; /* Chunk slots, each points to a chunk*/
414  H5SL_t *sel_chunks; /* Skip list containing information for each chunk selected */
415  H5S_t *single_space; /* Dataspace for single element I/O on chunks */
416  H5D_chunk_info_t *single_chunk_info; /* Pointer to single chunk's info */
417 
418  /* Cached information about scaled dataspace dimensions */
419  hsize_t scaled_dims[H5S_MAX_RANK]; /* The scaled dim sizes */
420  hsize_t scaled_power2up[H5S_MAX_RANK]; /* The scaled dim sizes, rounded up to next power of 2 */
421  unsigned scaled_encode_bits[H5S_MAX_RANK]; /* The number of bits needed to encode the scaled dim sizes */
423 
424 /* The raw data contiguous data cache */
425 typedef struct H5D_rdcdc_t {
426  unsigned char *sieve_buf; /* Buffer to hold data sieve buffer */
427  haddr_t sieve_loc; /* File location (offset) of the data sieve buffer */
428  size_t sieve_size; /* Size of the data sieve buffer used (in bytes) */
429  size_t sieve_buf_size; /* Size of the data sieve buffer allocated (in bytes) */
430  hbool_t sieve_dirty; /* Flag to indicate that the data sieve buffer is dirty */
432 
433 /*
434  * A dataset is made of two layers, an H5D_t struct that is unique to
435  * each instance of an opened datset, and a shared struct that is only
436  * created once for a given dataset. Thus, if a dataset is opened twice,
437  * there will be two IDs and two H5D_t structs, both sharing one H5D_shared_t.
438  */
439 struct H5D_shared_t {
440  size_t fo_count; /* Reference count */
441  hbool_t closing; /* Flag to indicate dataset is closing */
442  hid_t type_id; /* ID for dataset's datatype */
443  H5T_t *type; /* Datatype for this dataset */
444  H5S_t *space; /* Dataspace of this dataset */
445  hid_t dcpl_id; /* Dataset creation property id */
446  hid_t dapl_id; /* Dataset access property id */
447  H5D_dcpl_cache_t dcpl_cache; /* Cached DCPL values */
448  H5O_layout_t layout; /* Data layout */
449  hbool_t checked_filters;/* TRUE if dataset passes can_apply check */
450 
451  /* Cached dataspace info */
452  unsigned ndims; /* The dataset's dataspace rank */
453  hsize_t curr_dims[H5S_MAX_RANK]; /* The curr. size of dataset dimensions */
454  hsize_t curr_power2up[H5S_MAX_RANK]; /* The curr. dim sizes, rounded up to next power of 2 */
455  hsize_t max_dims[H5S_MAX_RANK]; /* The max. size of dataset dimensions */
456 
457  /* Buffered/cached information for types of raw data storage*/
458  struct {
459  H5D_rdcdc_t contig; /* Information about contiguous data */
460  /* (Note that the "contig" cache
461  * information can be used by a chunked
462  * dataset in certain circumstances)
463  */
464  H5D_rdcc_t chunk; /* Information about chunked data */
465  } cache;
466 
467  H5D_append_flush_t append_flush; /* Append flush property information */
468  char *extfile_prefix; /* expanded external file prefix */
469  char *vds_prefix; /* expanded vds prefix */
470 };
471 
472 struct H5D_t {
473  H5O_loc_t oloc; /* Object header location */
474  H5G_name_t path; /* Group hierarchy path */
475  H5D_shared_t *shared; /* cached information from file */
476 };
477 
478 /* Enumerated type for allocating dataset's storage */
479 typedef enum {
480  H5D_ALLOC_CREATE, /* Dataset is being created */
481  H5D_ALLOC_OPEN, /* Dataset is being opened */
482  H5D_ALLOC_EXTEND, /* Dataset's dataspace is being extended */
483  H5D_ALLOC_WRITE /* Dataset is being extended */
485 
486 
487 /* Typedef for dataset creation operation */
488 typedef struct {
489  hid_t type_id; /* Datatype for dataset */
490  const H5S_t *space; /* Dataspace for dataset */
491  hid_t dcpl_id; /* Dataset creation property list */
492  hid_t dapl_id; /* Dataset access property list */
494 
495 /* Typedef for filling a buffer with a fill value */
496 typedef struct H5D_fill_buf_info_t {
497  H5MM_allocate_t fill_alloc_func; /* Routine to call for allocating fill buffer */
498  void *fill_alloc_info; /* Extra info for allocation routine */
499  H5MM_free_t fill_free_func; /* Routine to call for freeing fill buffer */
500  void *fill_free_info; /* Extra info for free routine */
501  H5T_path_t *fill_to_mem_tpath; /* Datatype conversion path for converting the fill value to the memory buffer */
502  H5T_path_t *mem_to_dset_tpath; /* Datatype conversion path for converting the memory buffer to the dataset elements */
503  const H5O_fill_t *fill; /* Pointer to fill value */
504  void *fill_buf; /* Fill buffer */
505  size_t fill_buf_size; /* Size of fill buffer */
506  hbool_t use_caller_fill_buf; /* Whether the caller provided the fill buffer */
507  void *bkg_buf; /* Background conversion buffer */
508  size_t bkg_buf_size; /* Size of background buffer */
509  H5T_t *mem_type; /* Pointer to memory datatype */
510  const H5T_t *file_type; /* Pointer to file datatype */
511  hid_t mem_tid; /* ID for memory version of disk datatype */
512  hid_t file_tid; /* ID for disk datatype */
513  size_t mem_elmt_size, file_elmt_size; /* Size of element in memory and on disk */
514  size_t max_elmt_size; /* Max. size of memory or file datatype */
515  size_t elmts_per_buf; /* # of elements that fit into a buffer */
516  hbool_t has_vlen_fill_type; /* Whether the datatype for the fill value has a variable-length component */
518 
519 
520 /*****************************/
521 /* Package Private Variables */
522 /*****************************/
523 
524 /* Storage layout class I/O operations */
530 
531 /* Chunked layout operations */
538 
539 /* The v2 B-tree class for indexing chunked datasets with >1 unlimited dimensions */
542 
543 /* Array of versions for Layout */
545 
546 
547 /******************************/
548 /* Package Private Prototypes */
549 /******************************/
550 
551 H5_DLL H5D_t *H5D__create(H5F_t *file, hid_t type_id, const H5S_t *space,
552  hid_t dcpl_id, hid_t dapl_id);
553 H5_DLL H5D_t *H5D__create_named(const H5G_loc_t *loc, const char *name,
554  hid_t type_id, const H5S_t *space, hid_t lcpl_id, hid_t dcpl_id,
555  hid_t dapl_id);
556 H5_DLL H5D_t *H5D__open_name(const H5G_loc_t *loc, const char *name, hid_t dapl_id);
557 H5_DLL hid_t H5D__get_space(const H5D_t *dset);
558 H5_DLL hid_t H5D__get_type(const H5D_t *dset);
560 H5_DLL herr_t H5D__alloc_storage(const H5D_io_info_t *io_info, H5D_time_alloc_t time_alloc, hbool_t full_overwrite, hsize_t old_dim[]);
561 H5_DLL herr_t H5D__get_storage_size(const H5D_t *dset, hsize_t *storage_size);
562 H5_DLL herr_t H5D__get_chunk_storage_size(H5D_t *dset, const hsize_t *offset, hsize_t *storage_size);
563 H5_DLL herr_t H5D__get_num_chunks(const H5D_t *dset, const H5S_t *space, hsize_t *nchunks);
564 H5_DLL herr_t H5D__get_chunk_info(const H5D_t *dset, const H5S_t *space, hsize_t chk_idx, hsize_t *coord, unsigned *filter_mask, haddr_t *offset, hsize_t *size);
565 H5_DLL herr_t H5D__get_chunk_info_by_coord(const H5D_t *dset, const hsize_t *coord, unsigned *filter_mask, haddr_t *addr, hsize_t *size);
566 H5_DLL haddr_t H5D__get_offset(const H5D_t *dset);
567 H5_DLL herr_t H5D__vlen_get_buf_size(H5D_t *dset, hid_t type_id, hid_t space_id, hsize_t *size);
570 H5_DLL herr_t H5D__set_extent(H5D_t *dataset, const hsize_t *size);
573 H5_DLL herr_t H5D__flush(H5D_t *dset, hid_t dset_id);
574 H5_DLL herr_t H5D__mark(const H5D_t *dataset, unsigned flags);
575 H5_DLL herr_t H5D__refresh(hid_t dset_id, H5D_t *dataset);
576 
577 /* To convert a dataset's chunk indexing type to v1 B-tree */
579 
580 /* Internal I/O routines */
581 H5_DLL herr_t H5D__read(H5D_t *dataset, hid_t mem_type_id,
582  const H5S_t *mem_space, const H5S_t *file_space, void *buf/*out*/);
583 H5_DLL herr_t H5D__write(H5D_t *dataset, hid_t mem_type_id,
584  const H5S_t *mem_space, const H5S_t *file_space, const void *buf);
585 
586 /* Functions that perform direct serial I/O operations */
588  const H5D_type_info_t *type_info,
589  hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
591  const H5D_type_info_t *type_info,
592  hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
593 
594 /* Functions that perform scatter-gather serial I/O operations */
595 H5_DLL herr_t H5D__scatter_mem(const void *_tscat_buf, H5S_sel_iter_t *iter,
596  size_t nelmts, void *_buf);
597 H5_DLL size_t H5D__gather_mem(const void *_buf, H5S_sel_iter_t *iter,
598  size_t nelmts, void *_tgath_buf/*out*/);
600  const H5D_type_info_t *type_info,
601  hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
603  const H5D_type_info_t *type_info,
604  hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
605 
606 /* Functions that operate on dataset's layout information */
607 H5_DLL herr_t H5D__layout_set_io_ops(const H5D_t *dataset);
608 H5_DLL size_t H5D__layout_meta_size(const H5F_t *f, const H5O_layout_t *layout,
609  hbool_t include_compact_data);
612  const H5S_t *space, const H5D_dcpl_cache_t *dcpl_cache);
614  hid_t dapl_id);
616  H5P_genplist_t *plist);
617 H5_DLL herr_t H5D__layout_oh_write(const H5D_t *dataset, H5O_t *oh, unsigned update_flags);
618 
619 /* Functions that operate on contiguous storage */
625  hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
626  H5D_chunk_map_t *fm);
628  hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space,
629  H5D_chunk_map_t *fm);
630 H5_DLL herr_t H5D__contig_copy(H5F_t *f_src, const H5O_storage_contig_t *storage_src,
631  H5F_t *f_dst, H5O_storage_contig_t *storage_dst, H5T_t *src_dtype,
632  H5O_copy_t *cpy_info);
634 
635 /* Functions that operate on chunked dataset storage */
637  hbool_t write_op);
638 H5_DLL herr_t H5D__chunk_create(const H5D_t *dset /*in,out*/);
642 H5_DLL herr_t H5D__chunk_lookup(const H5D_t *dset, const hsize_t *scaled,
643  H5D_chunk_ud_t *udata);
644 H5_DLL herr_t H5D__chunk_allocated(const H5D_t *dset, hsize_t *nbytes);
645 H5_DLL herr_t H5D__chunk_allocate(const H5D_io_info_t *io_info, hbool_t full_overwrite, hsize_t old_dim[]);
646 H5_DLL herr_t H5D__chunk_file_alloc(const H5D_chk_idx_info_t *idx_info, const H5F_block_t *old_chunk,
647  H5F_block_t *new_chunk, hbool_t *need_insert, const hsize_t *scaled);
649 H5_DLL herr_t H5D__chunk_prune_by_extent(H5D_t *dset, const hsize_t *old_dim);
651 #ifdef H5_HAVE_PARALLEL
652 H5_DLL herr_t H5D__chunk_addrmap(const H5D_io_info_t *io_info, haddr_t chunk_addr[]);
653 #endif /* H5_HAVE_PARALLEL */
656  H5O_layout_chunk_t *layout_src, H5F_t *f_dst, H5O_storage_chunk_t *storage_dst,
657  const H5S_extent_t *ds_extent_src, const H5T_t *dt_src,
658  const H5O_pline_t *pline_src, H5O_copy_t *cpy_info);
660  H5O_layout_t *layout, hsize_t *btree_size);
663 H5_DLL herr_t H5D__get_offset_copy(const H5D_t *dset, const hsize_t *offset, hsize_t *offset_copy);
664 H5_DLL herr_t H5D__chunk_direct_write(const H5D_t *dset, uint32_t filters,
665  hsize_t *offset, uint32_t data_size, const void *buf);
666 H5_DLL herr_t H5D__chunk_direct_read(const H5D_t *dset, hsize_t *offset,
667  uint32_t *filters, void *buf);
668 #ifdef H5D_CHUNK_DEBUG
669 H5_DLL herr_t H5D__chunk_stats(const H5D_t *dset, hbool_t headers);
670 #endif /* H5D_CHUNK_DEBUG */
671 
672 /* format convert */
674 
675 /* Functions that operate on compact dataset storage */
676 H5_DLL herr_t H5D__compact_fill(const H5D_t *dset);
678  H5F_t *f_dst, H5O_storage_compact_t *storage_dst, H5T_t *src_dtype,
679  H5O_copy_t *cpy_info);
680 
681 /* Functions that operate on virtual dataset storage */
687 H5_DLL herr_t H5D__virtual_copy(H5F_t *f_src, H5O_layout_t *layout_dst);
688 H5_DLL herr_t H5D__virtual_init(H5F_t *f, const H5D_t *dset, hid_t dapl_id);
691  H5D_virtual_held_file_t **head);
694 
695 /* Functions that operate on EFL (External File List)*/
698 
699 /* Functions that perform fill value operations on datasets */
700 H5_DLL herr_t H5D__fill(const void *fill, const H5T_t *fill_type, void *buf,
701  const H5T_t *buf_type, const H5S_t *space);
702 H5_DLL herr_t H5D__fill_init(H5D_fill_buf_info_t *fb_info, void *caller_fill_buf,
703  H5MM_allocate_t alloc_func, void *alloc_info,
704  H5MM_free_t free_func, void *free_info,
705  const H5O_fill_t *fill, const H5T_t *dset_type, hid_t dset_type_id,
706  size_t nelmts, size_t min_buf_size);
709 
710 #ifdef H5_HAVE_PARALLEL
711 
712 #ifdef H5S_DEBUG
713 #ifndef H5Dmpio_DEBUG
714 #define H5Dmpio_DEBUG
715 #endif /*H5Dmpio_DEBUG*/
716 #endif/*H5S_DEBUG*/
717 /* MPI-IO function to read, it will select either regular or irregular read */
718 H5_DLL herr_t H5D__mpio_select_read(const H5D_io_info_t *io_info,
719  const H5D_type_info_t *type_info,
720  hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
721 
722 /* MPI-IO function to write, it will select either regular or irregular read */
723 H5_DLL herr_t H5D__mpio_select_write(const H5D_io_info_t *io_info,
724  const H5D_type_info_t *type_info,
725  hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space);
726 
727 /* MPI-IO functions to handle contiguous collective IO */
728 H5_DLL herr_t H5D__contig_collective_read(H5D_io_info_t *io_info,
729  const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space,
730  const H5S_t *mem_space, H5D_chunk_map_t *fm);
731 H5_DLL herr_t H5D__contig_collective_write(H5D_io_info_t *io_info,
732  const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space,
733  const H5S_t *mem_space, H5D_chunk_map_t *fm);
734 
735 /* MPI-IO functions to handle chunked collective IO */
736 H5_DLL herr_t H5D__chunk_collective_read(H5D_io_info_t *io_info,
737  const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space,
738  const H5S_t *mem_space, H5D_chunk_map_t *fm);
739 H5_DLL herr_t H5D__chunk_collective_write(H5D_io_info_t *io_info,
740  const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space,
741  const H5S_t *mem_space, H5D_chunk_map_t *fm);
742 
743 /* MPI-IO function to check if a direct I/O transfer is possible between
744  * memory and the file */
745 H5_DLL htri_t H5D__mpio_opt_possible(const H5D_io_info_t *io_info,
746  const H5S_t *file_space, const H5S_t *mem_space,
747  const H5D_type_info_t *type_info);
748 
749 #endif /* H5_HAVE_PARALLEL */
750 
751 /* Testing functions */
752 #ifdef H5D_TESTING
753 H5_DLL herr_t H5D__layout_version_test(hid_t did, unsigned *version);
758 H5_DLL herr_t H5D__current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused);
759 #endif /* H5D_TESTING */
760 
761 #endif /*_H5Dpkg_H*/
762 
H5D_layout_ops_t::flush
H5D_layout_flush_func_t flush
Definition: H5Dpkg.h:161
H5O_efl_t
Definition: H5Oprivate.h:381
H5D_contig_storage_t::dset_addr
haddr_t dset_addr
Definition: H5Dpkg.h:184
H5D__get_chunk_storage_size
H5_DLL herr_t H5D__get_chunk_storage_size(H5D_t *dset, const hsize_t *offset, hsize_t *storage_size)
Definition: H5Dchunk.c:622
H5D__layout_version_test
herr_t H5D__layout_version_test(hid_t did, unsigned *version)
Definition: H5Dtest.c:84
H5D_type_info_t::request_nelmts
size_t request_nelmts
Definition: H5Dpkg.h:108
H5D_space_status_t
H5D_space_status_t
Definition: H5Dpublic.h:74
H5D_type_info_t::bkg_buf
uint8_t * bkg_buf
Definition: H5Dpkg.h:111
H5D_chunk_ud_t::chunk_idx
hsize_t chunk_idx
Definition: H5Dpkg.h:280
H5O_loc_t
Definition: H5Oprivate.h:152
H5D_storage_t::chunk
H5D_chunk_storage_t chunk
Definition: H5Dpkg.h:199
ssize_t
int ssize_t
Definition: H5public.h:167
H5D_shared_t::layout
H5O_layout_t layout
Definition: H5Dpkg.h:448
H5D__virtual_copy
H5_DLL herr_t H5D__virtual_copy(H5F_t *f_src, H5O_layout_t *layout_dst)
Definition: H5Dvirtual.c:801
H5D__chunk_lookup
H5_DLL herr_t H5D__chunk_lookup(const H5D_t *dset, const hsize_t *scaled, H5D_chunk_ud_t *udata)
Definition: H5Dchunk.c:3201
H5D__refresh
H5_DLL herr_t H5D__refresh(hid_t dset_id, H5D_t *dataset)
Definition: H5Dint.c:3926
H5D_LOPS_VIRTUAL
H5_DLLVAR const H5D_layout_ops_t H5D_LOPS_VIRTUAL[1]
Definition: H5Dpkg.h:529
H5D_rdcc_t::nused
int nused
Definition: H5Dpkg.h:411
H5D_fill_buf_info_t::elmts_per_buf
size_t elmts_per_buf
Definition: H5Dpkg.h:515
H5SL_t
Definition: H5SL.c:557
H5D_layout_is_space_alloc_func_t
hbool_t(* H5D_layout_is_space_alloc_func_t)(const H5O_storage_t *storage)
Definition: H5Dpkg.h:124
H5D_virtual_held_file_t
Definition: H5Dpkg.h:390
H5D__select_write
H5_DLL herr_t H5D__select_write(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space)
Definition: H5Dselect.c:305
H5F_LIBVER_NBOUNDS
@ H5F_LIBVER_NBOUNDS
Definition: H5Fpublic.h:168
H5D_contig_storage_t::dset_size
hsize_t dset_size
Definition: H5Dpkg.h:185
H5D_chunk_map_t::msel_type
H5S_sel_type msel_type
Definition: H5Dpkg.h:356
H5D_rdcc_t::ninits
unsigned ninits
Definition: H5Dpkg.h:399
H5D_rdcc_t::stats
struct H5D_rdcc_t::@2 stats
H5D_chunk_info_t::mspace_shared
hbool_t mspace_shared
Definition: H5Dpkg.h:341
size
iblock size
Definition: H5EAcache.c:787
H5D_t
Definition: H5Dpkg.h:472
H5D_chunk_map_t::use_single
hbool_t use_single
Definition: H5Dpkg.h:363
H5D__virtual_reset_layout
H5_DLL herr_t H5D__virtual_reset_layout(H5O_layout_t *layout)
Definition: H5Dvirtual.c:721
H5D_chunk_remove_func_t
herr_t(* H5D_chunk_remove_func_t)(const H5D_chk_idx_info_t *idx_info, H5D_chunk_common_ud_t *udata)
Definition: H5Dpkg.h:299
f
hdr f
Definition: H5EA.c:755
H5D__current_cache_size_test
herr_t H5D__current_cache_size_test(hid_t did, size_t *nbytes_used, int *nused)
Definition: H5Dtest.c:287
H5D_rdcc_t::nbytes_used
size_t nbytes_used
Definition: H5Dpkg.h:410
H5F_block_t
Definition: H5Fprivate.h:675
H5D_chunk_common_ud_t
Definition: H5Dpkg.h:264
H5D__create_named
H5_DLL H5D_t * H5D__create_named(const H5G_loc_t *loc, const char *name, hid_t type_id, const H5S_t *space, hid_t lcpl_id, hid_t dcpl_id, hid_t dapl_id)
Definition: H5Dint.c:380
H5S_extent_t
Definition: H5Spkg.h:109
H5D__get_offset_copy
H5_DLL herr_t H5D__get_offset_copy(const H5D_t *dset, const hsize_t *offset, hsize_t *offset_copy)
Definition: H5Dio.c:93
H5D_rdcc_t::tmp_head
struct H5D_rdcc_ent_t * tmp_head
Definition: H5Dpkg.h:409
H5D_fill_buf_info_t::file_elmt_size
size_t file_elmt_size
Definition: H5Dpkg.h:513
H5Dprivate.h
H5D_fill_buf_info_t::bkg_buf
void * bkg_buf
Definition: H5Dpkg.h:507
H5D_io_info_t::layout_ops
H5D_layout_ops_t layout_ops
Definition: H5Dpkg.h:219
H5S_MAX_RANK
#define H5S_MAX_RANK
Definition: H5Spublic.h:29
H5D__get_type
H5_DLL hid_t H5D__get_type(const H5D_t *dset)
Definition: H5Dint.c:3872
H5D_chunk_cached_t::addr
haddr_t addr
Definition: H5Dpkg.h:379
H5D_storage_t
Definition: H5Dpkg.h:197
H5D_chunk_map_t::m_ndims
unsigned m_ndims
Definition: H5Dpkg.h:355
H5D_rdcdc_t::sieve_buf_size
size_t sieve_buf_size
Definition: H5Dpkg.h:429
H5D_chunk_ops_t::create
H5D_chunk_create_func_t create
Definition: H5Dpkg.h:317
H5D_layout_readvv_func_t
ssize_t(* H5D_layout_readvv_func_t)(const struct H5D_io_info_t *io_info, size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[], size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[])
Definition: H5Dpkg.h:136
H5D_dcpl_cache_t
Definition: H5Dprivate.h:131
H5D_fill_buf_info_t::has_vlen_fill_type
hbool_t has_vlen_fill_type
Definition: H5Dpkg.h:516
H5D__efl_bh_info
H5_DLL herr_t H5D__efl_bh_info(H5F_t *f, H5O_efl_t *efl, hsize_t *heap_size)
Definition: H5Defl.c:599
H5D_layout_ops_t::ser_write
H5D_layout_write_func_t ser_write
Definition: H5Dpkg.h:154
H5D_chunk_copy_setup_func_t
herr_t(* H5D_chunk_copy_setup_func_t)(const H5D_chk_idx_info_t *idx_info_src, const H5D_chk_idx_info_t *idx_info_dst)
Definition: H5Dpkg.h:302
H5D_io_ops_t::single_read
H5D_io_single_read_func_t single_read
Definition: H5Dpkg.h:178
H5D_rdcc_t::last
H5D_chunk_cached_t last
Definition: H5Dpkg.h:412
H5D_chunk_storage_t
Definition: H5Dpkg.h:188
H5D_chunk_rec_t::scaled
hsize_t scaled[H5O_LAYOUT_NDIMS]
Definition: H5Dpkg.h:253
H5D__contig_write
H5_DLL herr_t H5D__contig_write(H5D_io_info_t *io_info, const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space, H5D_chunk_map_t *fm)
H5D_type_info_t::cmpd_subset
const H5T_subset_info_t * cmpd_subset
Definition: H5Dpkg.h:106
H5D_chunk_ops_t::remove
H5D_chunk_remove_func_t remove
Definition: H5Dpkg.h:323
H5D__chunk_is_data_cached
H5_DLL hbool_t H5D__chunk_is_data_cached(const H5D_shared_t *shared_dset)
Definition: H5Dchunk.c:1074
H5VL_object_t
Definition: H5VLprivate.h:39
H5D_chunk_resize_func_t
herr_t(* H5D_chunk_resize_func_t)(H5O_layout_chunk_t *layout)
Definition: H5Dpkg.h:296
H5Gprivate.h
H5D_rdcdc_t::sieve_size
size_t sieve_size
Definition: H5Dpkg.h:428
H5D_fill_buf_info_t::use_caller_fill_buf
hbool_t use_caller_fill_buf
Definition: H5Dpkg.h:506
H5D_chunk_dest_func_t
herr_t(* H5D_chunk_dest_func_t)(const H5D_chk_idx_info_t *idx_info)
Definition: H5Dpkg.h:311
H5D_LOPS_CONTIG
H5_DLLVAR const H5D_layout_ops_t H5D_LOPS_CONTIG[1]
Definition: H5Dpkg.h:525
H5D_rdcdc_t
Definition: H5Dpkg.h:425
H5D_rdcc_ent_t
Definition: H5Dchunk.c:120
uint32_t
uint32_t
Definition: H5overflow.txt:38
H5D__contig_copy
H5_DLL herr_t H5D__contig_copy(H5F_t *f_src, const H5O_storage_contig_t *storage_src, H5F_t *f_dst, H5O_storage_contig_t *storage_dst, H5T_t *src_dtype, H5O_copy_t *cpy_info)
Definition: H5Dcontig.c:1327
H5D_chunk_rec_t::nbytes
uint32_t nbytes
Definition: H5Dpkg.h:254
H5D__layout_oh_write
H5_DLL herr_t H5D__layout_oh_write(const H5D_t *dataset, H5O_t *oh, unsigned update_flags)
Definition: H5Dlayout.c:698
H5D_COPS_NONE
H5_DLLVAR const H5D_chunk_ops_t H5D_COPS_NONE[1]
Definition: H5Dpkg.h:533
H5D_chunk_ops_t
Definition: H5Dpkg.h:314
H5D_io_info_t::store
H5D_storage_t * store
Definition: H5Dpkg.h:218
H5D_BT2
H5_DLLVAR const H5B2_class_t H5D_BT2[1]
Definition: H5Dpkg.h:540
H5D_io_info_t
struct H5D_io_info_t H5D_io_info_t
H5D_append_flush_t
Definition: H5Dprivate.h:145
H5D__chunk_update_cache
H5_DLL herr_t H5D__chunk_update_cache(H5D_t *dset)
Definition: H5Dchunk.c:5844
H5D_chk_idx_info_t::f
H5F_t * f
Definition: H5Dpkg.h:235
H5D__select_read
H5_DLL herr_t H5D__select_read(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space)
Definition: H5Dselect.c:274
H5O_LAYOUT_NDIMS
#define H5O_LAYOUT_NDIMS
Definition: H5Oprivate.h:393
H5D_fill_buf_info_t::fill_alloc_info
void * fill_alloc_info
Definition: H5Dpkg.h:498
H5D__chunk_bh_info
H5_DLL herr_t H5D__chunk_bh_info(const H5O_loc_t *loc, H5O_t *oh, H5O_layout_t *layout, hsize_t *btree_size)
Definition: H5Dchunk.c:6472
H5D__gather_mem
H5_DLL size_t H5D__gather_mem(const void *_buf, H5S_sel_iter_t *iter, size_t nelmts, void *_tgath_buf)
Definition: H5Dscatgath.c:373
H5D_chunk_cached_t
struct H5D_chunk_cached_t H5D_chunk_cached_t
H5D__chunk_prune_by_extent
H5_DLL herr_t H5D__chunk_prune_by_extent(H5D_t *dset, const hsize_t *old_dim)
Definition: H5Dchunk.c:5345
H5D__fill_init
H5_DLL herr_t H5D__fill_init(H5D_fill_buf_info_t *fb_info, void *caller_fill_buf, H5MM_allocate_t alloc_func, void *alloc_info, H5MM_free_t free_func, void *free_info, const H5O_fill_t *fill, const H5T_t *dset_type, hid_t dset_type_id, size_t nelmts, size_t min_buf_size)
Definition: H5Dfill.c:368
H5T_subset_info_t
Definition: H5Tprivate.h:98
H5D_chunk_cached_t::valid
hbool_t valid
Definition: H5Dpkg.h:377
H5D_chunk_map_t::mchunk_tmpl
H5S_t * mchunk_tmpl
Definition: H5Dpkg.h:353
H5D__get_space
H5_DLL hid_t H5D__get_space(const H5D_t *dset)
Definition: H5Dint.c:3831
H5D_virtual_held_file_t
struct H5D_virtual_held_file_t H5D_virtual_held_file_t
haddr_t
CATCH haddr_t
Definition: H5EAdblock.c:162
H5D_io_info_t
Definition: H5Dpkg.h:210
H5D_layout_ops_t::dest
H5D_layout_dest_func_t dest
Definition: H5Dpkg.h:163
H5D_layout_ops_t::io_init
H5D_layout_io_init_func_t io_init
Definition: H5Dpkg.h:152
H5D__set_extent
H5_DLL herr_t H5D__set_extent(H5D_t *dataset, const hsize_t *size)
Definition: H5Dint.c:2999
H5D_shared_t::dapl_id
hid_t dapl_id
Definition: H5Dpkg.h:446
H5D_rdcdc_t
struct H5D_rdcdc_t H5D_rdcdc_t
H5D_chunk_dump_func_t
herr_t(* H5D_chunk_dump_func_t)(const H5O_storage_chunk_t *storage, FILE *stream)
Definition: H5Dpkg.h:309
H5D_shared_t::curr_dims
hsize_t curr_dims[H5S_MAX_RANK]
Definition: H5Dpkg.h:453
H5D_chunk_storage_t::scaled
hsize_t * scaled
Definition: H5Dpkg.h:189
H5D_ALLOC_CREATE
@ H5D_ALLOC_CREATE
Definition: H5Dpkg.h:480
H5D__layout_oh_read
H5_DLL herr_t H5D__layout_oh_read(H5D_t *dset, hid_t dapl_id, H5P_genplist_t *plist)
Definition: H5Dlayout.c:604
H5D_io_ops_t::multi_write
H5D_layout_write_func_t multi_write
Definition: H5Dpkg.h:177
H5D_compact_storage_t::buf
void * buf
Definition: H5Dpkg.h:193
H5D_shared_t::contig
H5D_rdcdc_t contig
Definition: H5Dpkg.h:459
H5D__virtual_copy_layout
H5_DLL herr_t H5D__virtual_copy_layout(H5O_layout_t *layout)
Definition: H5Dvirtual.c:556
H5D_chunk_ops_t::iterate
H5D_chunk_iterate_func_t iterate
Definition: H5Dpkg.h:322
H5D_layout_ops_t::writevv
H5D_layout_writevv_func_t writevv
Definition: H5Dpkg.h:160
H5D_layout_ops_t::construct
H5D_layout_construct_func_t construct
Definition: H5Dpkg.h:148
H5D_ALLOC_WRITE
@ H5D_ALLOC_WRITE
Definition: H5Dpkg.h:483
H5_DLLVAR
#define H5_DLLVAR
Definition: H5api_adpt.h:235
H5D_rdcc_t::nslots
size_t nslots
Definition: H5Dpkg.h:405
H5O_pline_t
Definition: H5Oprivate.h:701
H5D_io_info_t::io_ops
H5D_io_ops_t io_ops
Definition: H5Dpkg.h:220
H5D_rdcc_t
Definition: H5Dpkg.h:397
H5D_layout_t
H5D_layout_t
Definition: H5Dpublic.h:43
H5D_chunk_cached_t::scaled
hsize_t scaled[H5O_LAYOUT_NDIMS]
Definition: H5Dpkg.h:378
H5D_chunk_ud_t::idx_hint
unsigned idx_hint
Definition: H5Dpkg.h:276
H5D_type_info_t::tconv_buf
uint8_t * tconv_buf
Definition: H5Dpkg.h:109
H5D_chunk_info_t::chunk_points
uint32_t chunk_points
Definition: H5Dpkg.h:336
H5D_chunk_cached_t::filter_mask
unsigned filter_mask
Definition: H5Dpkg.h:382
H5D_shared_t::ndims
unsigned ndims
Definition: H5Dpkg.h:452
H5D_chunk_map_t::fsel_type
H5S_sel_type fsel_type
Definition: H5Dpkg.h:357
H5D_IO_OP_WRITE
@ H5D_IO_OP_WRITE
Definition: H5Dpkg.h:207
H5G_loc_t
Definition: H5Gprivate.h:144
H5D_rdcc_t::scaled_power2up
hsize_t scaled_power2up[H5S_MAX_RANK]
Definition: H5Dpkg.h:420
H5D__get_space_status
H5_DLL herr_t H5D__get_space_status(const H5D_t *dset, H5D_space_status_t *allocation)
Definition: H5Dint.c:433
H5MM_free_t
void(* H5MM_free_t)(void *mem, void *free_info)
Definition: H5MMpublic.h:35
H5D_layout_dest_func_t
herr_t(* H5D_layout_dest_func_t)(H5D_t *dataset)
Definition: H5Dpkg.h:144
H5D_storage_t::efl
H5O_efl_t efl
Definition: H5Dpkg.h:201
H5D_type_info_t::dst_type_size
size_t dst_type_size
Definition: H5Dpkg.h:102
H5D__chunk_copy
H5_DLL herr_t H5D__chunk_copy(H5F_t *f_src, H5O_storage_chunk_t *storage_src, H5O_layout_chunk_t *layout_src, H5F_t *f_dst, H5O_storage_chunk_t *storage_dst, const H5S_extent_t *ds_extent_src, const H5T_t *dt_src, const H5O_pline_t *pline_src, H5O_copy_t *cpy_info)
Definition: H5Dchunk.c:6188
H5D_io_single_read_func_t
herr_t(* H5D_io_single_read_func_t)(const struct H5D_io_info_t *io_info, const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space)
Definition: H5Dpkg.h:167
H5D_chk_idx_info_t::storage
H5O_storage_chunk_t * storage
Definition: H5Dpkg.h:238
uint8_t
unsigned char uint8_t
Definition: H5private.h:429
H5D_fill_buf_info_t::fill
const H5O_fill_t * fill
Definition: H5Dpkg.h:503
H5D_chunk_ud_t
struct H5D_chunk_ud_t H5D_chunk_ud_t
H5D_chunk_size_func_t
herr_t(* H5D_chunk_size_func_t)(const H5D_chk_idx_info_t *idx_info, hsize_t *idx_size)
Definition: H5Dpkg.h:306
H5D_storage_t::contig
H5D_contig_storage_t contig
Definition: H5Dpkg.h:198
H5D_type_info_t
Definition: H5Dpkg.h:92
H5D__virtual_refresh_source_dsets
H5_DLL herr_t H5D__virtual_refresh_source_dsets(H5D_t *dset)
Definition: H5Dvirtual.c:3070
H5D_rdcc_t::single_space
H5S_t * single_space
Definition: H5Dpkg.h:415
H5D_rdcc_t::w0
double w0
Definition: H5Dpkg.h:406
H5D_chunk_reset_func_t
herr_t(* H5D_chunk_reset_func_t)(H5O_storage_chunk_t *storage, hbool_t reset_addr)
Definition: H5Dpkg.h:308
H5D_chunk_info_t
Definition: H5Dpkg.h:334
H5D__fill_term
H5_DLL herr_t H5D__fill_term(H5D_fill_buf_info_t *fb_info)
Definition: H5Dfill.c:686
H5D_layout_ops_t::is_data_cached
H5D_layout_is_data_cached_func_t is_data_cached
Definition: H5Dpkg.h:151
H5D__layout_oh_create
H5_DLL herr_t H5D__layout_oh_create(H5F_t *file, H5O_t *oh, H5D_t *dset, hid_t dapl_id)
Definition: H5Dlayout.c:463
H5D_type_info_t::max_type_size
size_t max_type_size
Definition: H5Dpkg.h:103
H5D_shared_t::dcpl_cache
H5D_dcpl_cache_t dcpl_cache
Definition: H5Dpkg.h:447
H5D_obj_create_t::dapl_id
hid_t dapl_id
Definition: H5Dpkg.h:492
H5P_genplist_t
Definition: H5Ppkg.h:107
H5D_chunk_cached_t::nbytes
uint32_t nbytes
Definition: H5Dpkg.h:380
H5D_chunk_ops_t::insert
H5D_chunk_insert_func_t insert
Definition: H5Dpkg.h:319
H5D_fill_buf_info_t::fill_alloc_func
H5MM_allocate_t fill_alloc_func
Definition: H5Dpkg.h:497
H5D_compact_storage_t::dirty
hbool_t * dirty
Definition: H5Dpkg.h:194
H5D_COPS_FARRAY
H5_DLLVAR const H5D_chunk_ops_t H5D_COPS_FARRAY[1]
Definition: H5Dpkg.h:536
H5D_fill_buf_info_t::fill_buf_size
size_t fill_buf_size
Definition: H5Dpkg.h:505
H5D_ALLOC_OPEN
@ H5D_ALLOC_OPEN
Definition: H5Dpkg.h:481
htri_t
int htri_t
Definition: H5public.h:160
H5D__virtual_init
H5_DLL herr_t H5D__virtual_init(H5F_t *f, const H5D_t *dset, hid_t dapl_id)
Definition: H5Dvirtual.c:2110
H5D_chunk_map_t::mem_space
const H5S_t * mem_space
Definition: H5Dpkg.h:352
H5D_shared_t::checked_filters
hbool_t checked_filters
Definition: H5Dpkg.h:449
H5D_shared_t::max_dims
hsize_t max_dims[H5S_MAX_RANK]
Definition: H5Dpkg.h:455
H5D_shared_t::extfile_prefix
char * extfile_prefix
Definition: H5Dpkg.h:468
H5D_chunk_info_t::index
hsize_t index
Definition: H5Dpkg.h:335
H5D_fill_buf_info_t::fill_free_info
void * fill_free_info
Definition: H5Dpkg.h:500
H5D__chunk_set_sizes
H5_DLL herr_t H5D__chunk_set_sizes(H5D_t *dset)
Definition: H5Dchunk.c:812
H5D_storage_t::compact
H5D_compact_storage_t compact
Definition: H5Dpkg.h:200
H5D__virtual_set_extent_unlim
H5_DLL herr_t H5D__virtual_set_extent_unlim(const H5D_t *dset)
Definition: H5Dvirtual.c:1460
H5D_rdcdc_t::sieve_buf
unsigned char * sieve_buf
Definition: H5Dpkg.h:426
H5D__open_name
H5_DLL H5D_t * H5D__open_name(const H5G_loc_t *loc, const char *name, hid_t dapl_id)
Definition: H5Dint.c:1459
H5D_layout_io_term_func_t
herr_t(* H5D_layout_io_term_func_t)(const struct H5D_chunk_map_t *cm)
Definition: H5Dpkg.h:143
H5T_path_t
Definition: H5Tpkg.h:172
H5D_shared_t::append_flush
H5D_append_flush_t append_flush
Definition: H5Dpkg.h:467
H5D_fill_buf_info_t::bkg_buf_size
size_t bkg_buf_size
Definition: H5Dpkg.h:508
H5D_layout_is_data_cached_func_t
hbool_t(* H5D_layout_is_data_cached_func_t)(const H5D_shared_t *shared_dset)
Definition: H5Dpkg.h:125
H5D_LOPS_CHUNK
H5_DLLVAR const H5D_layout_ops_t H5D_LOPS_CHUNK[1]
Definition: H5Dpkg.h:528
H5D_compact_storage_t
Definition: H5Dpkg.h:192
H5D__contig_alloc
H5_DLL herr_t H5D__contig_alloc(H5F_t *f, H5O_storage_contig_t *storage)
Definition: H5Dcontig.c:163
H5D_layout_init_func_t
herr_t(* H5D_layout_init_func_t)(H5F_t *f, const H5D_t *dset, hid_t dapl_id)
Definition: H5Dpkg.h:122
H5F_shared_t
Definition: H5Fpkg.h:242
H5D__flush_real
H5_DLL herr_t H5D__flush_real(H5D_t *dataset)
Definition: H5Dint.c:3220
H5SLprivate.h
H5O_t
Definition: H5Opkg.h:279
H5D_io_info_t::u
union H5D_io_info_t::@1 u
H5D__vlen_get_buf_size
H5_DLL herr_t H5D__vlen_get_buf_size(H5D_t *dset, hid_t type_id, hid_t space_id, hsize_t *size)
Definition: H5Dint.c:2696
hid_t
int64_t hid_t
Definition: H5Ipublic.h:55
H5D_chunk_ops_t::copy_shutdown
H5D_chunk_copy_shutdown_func_t copy_shutdown
Definition: H5Dpkg.h:326
H5D__chunk_is_space_alloc
H5_DLL hbool_t H5D__chunk_is_space_alloc(const H5O_storage_t *storage)
Definition: H5Dchunk.c:1043
H5D_time_alloc_t
H5D_time_alloc_t
Definition: H5Dpkg.h:479
H5D_rdcdc_t::sieve_loc
haddr_t sieve_loc
Definition: H5Dpkg.h:427
H5D_layout_ops_t::io_term
H5D_layout_io_term_func_t io_term
Definition: H5Dpkg.h:162
H5D__chunk_file_alloc
H5_DLL herr_t H5D__chunk_file_alloc(const H5D_chk_idx_info_t *idx_info, const H5F_block_t *old_chunk, H5F_block_t *new_chunk, hbool_t *need_insert, const hsize_t *scaled)
Definition: H5Dchunk.c:6861
H5D_shared_t::chunk
H5D_rdcc_t chunk
Definition: H5Dpkg.h:464
H5D_chunk_cached_t
Definition: H5Dpkg.h:376
H5D_chunk_rec_t
struct H5D_chunk_rec_t H5D_chunk_rec_t
H5D_chunk_map_t::last_chunk_info
H5D_chunk_info_t * last_chunk_info
Definition: H5Dpkg.h:366
H5D_layout_flush_func_t
herr_t(* H5D_layout_flush_func_t)(H5D_t *dataset)
Definition: H5Dpkg.h:142
H5D_chunk_map_t::single_chunk_info
H5D_chunk_info_t * single_chunk_info
Definition: H5Dpkg.h:362
H5D_chk_idx_info_t::layout
H5O_layout_chunk_t * layout
Definition: H5Dpkg.h:237
H5D_chunk_cb_func_t
int(* H5D_chunk_cb_func_t)(const H5D_chunk_rec_t *chunk_rec, void *udata)
Definition: H5Dpkg.h:284
H5D_chunk_common_ud_t::scaled
const hsize_t * scaled
Definition: H5Dpkg.h:267
H5D_chunk_ops_t::dump
H5D_chunk_dump_func_t dump
Definition: H5Dpkg.h:329
H5D_fill_buf_info_t::max_elmt_size
size_t max_elmt_size
Definition: H5Dpkg.h:514
H5T_t
Definition: H5Tpkg.h:350
H5D__virtual_delete
H5_DLL herr_t H5D__virtual_delete(H5F_t *f, H5O_storage_t *storage)
Definition: H5Dvirtual.c:844
H5D_obj_create_t::space
const H5S_t * space
Definition: H5Dpkg.h:490
H5D_chunk_ops_t::dest
H5D_chunk_dest_func_t dest
Definition: H5Dpkg.h:330
H5D_LOPS_EFL
H5_DLLVAR const H5D_layout_ops_t H5D_LOPS_EFL[1]
Definition: H5Dpkg.h:526
H5D_chunk_rec_t::chunk_addr
haddr_t chunk_addr
Definition: H5Dpkg.h:256
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
H5D_shared_t::type
H5T_t * type
Definition: H5Dpkg.h:443
H5D__compact_fill
H5_DLL herr_t H5D__compact_fill(const H5D_t *dset)
Definition: H5Dcompact.c:121
H5D__check_filters
H5_DLL herr_t H5D__check_filters(H5D_t *dataset)
Definition: H5Dint.c:2948
H5O_copy_t
Definition: H5Oprivate.h:172
H5D__get_offset
H5_DLL haddr_t H5D__get_offset(const H5D_t *dset)
Definition: H5Dint.c:2563
H5D_chk_idx_info_t
struct H5D_chk_idx_info_t H5D_chk_idx_info_t
H5D_type_info_t::need_bkg
H5T_bkg_t need_bkg
Definition: H5Dpkg.h:107
H5D_chunk_info_t::fspace
H5S_t * fspace
Definition: H5Dpkg.h:338
H5D_virtual_held_file_t::next
struct H5D_virtual_held_file_t * next
Definition: H5Dpkg.h:392
H5D_type_info_t::src_type_id
hid_t src_type_id
Definition: H5Dpkg.h:97
H5D_chunk_map_t::layout
H5O_layout_t * layout
Definition: H5Dpkg.h:346
H5D_chunk_map_t::f_ndims
unsigned f_ndims
Definition: H5Dpkg.h:350
H5D_rdcc_t::nhits
unsigned nhits
Definition: H5Dpkg.h:400
H5D__chunk_dump_index
H5_DLL herr_t H5D__chunk_dump_index(H5D_t *dset, FILE *stream)
Definition: H5Dchunk.c:6597
H5D__chunk_update_old_edge_chunks
H5_DLL herr_t H5D__chunk_update_old_edge_chunks(H5D_t *dset, hsize_t old_dim[])
Definition: H5Dchunk.c:4776
H5D_chunk_map_t::mem_iter
H5S_sel_iter_t mem_iter
Definition: H5Dpkg.h:354
H5D_chunk_info_t
struct H5D_chunk_info_t H5D_chunk_info_t
H5D_fill_buf_info_t::fill_free_func
H5MM_free_t fill_free_func
Definition: H5Dpkg.h:499
H5D_io_ops_t::multi_read
H5D_layout_read_func_t multi_read
Definition: H5Dpkg.h:176
H5D_fill_buf_info_t::fill_buf
void * fill_buf
Definition: H5Dpkg.h:504
H5S_sel_iter_t
Definition: H5Sprivate.h:89
H5S_t
Definition: H5Spkg.h:317
int
CATCH int
Definition: H5EA.c:1002
H5D_io_ops_t::single_write
H5D_io_single_write_func_t single_write
Definition: H5Dpkg.h:179
H5D_chunk_map_t::single_space
H5S_t * single_space
Definition: H5Dpkg.h:361
H5Fprivate.h
H5D__chunk_allocated
H5_DLL herr_t H5D__chunk_allocated(const H5D_t *dset, hsize_t *nbytes)
Definition: H5Dchunk.c:4259
H5D_rdcc_t::nbytes_max
size_t nbytes_max
Definition: H5Dpkg.h:404
H5O_layout_ver_bounds
H5_DLLVAR const unsigned H5O_layout_ver_bounds[H5F_LIBVER_NBOUNDS]
Definition: H5Dpkg.h:544
H5D__virtual_hold_source_dset_files
H5_DLL herr_t H5D__virtual_hold_source_dset_files(const H5D_t *dset, H5D_virtual_held_file_t **head)
Definition: H5Dvirtual.c:2947
H5D_chunk_index_t
H5D_chunk_index_t
Definition: H5Dpublic.h:54
H5D_rdcc_t::slot
struct H5D_rdcc_ent_t ** slot
Definition: H5Dpkg.h:413
H5D__get_storage_size
H5_DLL herr_t H5D__get_storage_size(const H5D_t *dset, hsize_t *storage_size)
Definition: H5Dint.c:2505
H5D__flush
H5_DLL herr_t H5D__flush(H5D_t *dset, hid_t dset_id)
Definition: H5Dint.c:3251
H5D_chunk_map_t::nelmts
hsize_t nelmts
Definition: H5Dpkg.h:347
H5D__contig_is_space_alloc
H5_DLL hbool_t H5D__contig_is_space_alloc(const H5O_storage_t *storage)
Definition: H5Dcontig.c:526
H5D__scatter_mem
H5_DLL herr_t H5D__scatter_mem(const void *_tscat_buf, H5S_sel_iter_t *iter, size_t nelmts, void *_buf)
Definition: H5Dscatgath.c:286
H5D_obj_create_t
Definition: H5Dpkg.h:488
H5D_io_info_t::rbuf
void * rbuf
Definition: H5Dpkg.h:223
H5D__contig_read
H5_DLL herr_t H5D__contig_read(H5D_io_info_t *io_info, const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space, H5D_chunk_map_t *fm)
H5D__vlen_get_buf_size_gen
H5_DLL herr_t H5D__vlen_get_buf_size_gen(H5VL_object_t *vol_obj, hid_t type_id, hid_t space_id, hsize_t *size)
Definition: H5Dint.c:2840
H5D_chunk_common_ud_t::storage
const H5O_storage_chunk_t * storage
Definition: H5Dpkg.h:266
H5D_fill_buf_info_t::file_type
const H5T_t * file_type
Definition: H5Dpkg.h:510
H5D__chunk_direct_read
H5_DLL herr_t H5D__chunk_direct_read(const H5D_t *dset, hsize_t *offset, uint32_t *filters, void *buf)
Definition: H5Dchunk.c:525
H5D_shared_t::type_id
hid_t type_id
Definition: H5Dpkg.h:442
H5D_layout_write_func_t
herr_t(* H5D_layout_write_func_t)(struct H5D_io_info_t *io_info, const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space, struct H5D_chunk_map_t *fm)
Definition: H5Dpkg.h:133
H5D_shared_t::closing
hbool_t closing
Definition: H5Dpkg.h:441
H5D_type_info_t
struct H5D_type_info_t H5D_type_info_t
H5D_io_info_t::dset
const H5D_t * dset
Definition: H5Dpkg.h:211
H5D_chunk_copy_shutdown_func_t
herr_t(* H5D_chunk_copy_shutdown_func_t)(H5O_storage_chunk_t *storage_src, H5O_storage_chunk_t *storage_dst)
Definition: H5Dpkg.h:304
H5D__fill
H5_DLL herr_t H5D__fill(const void *fill, const H5T_t *fill_type, void *buf, const H5T_t *buf_type, const H5S_t *space)
Definition: H5Dfill.c:177
H5D__compact_copy
H5_DLL herr_t H5D__compact_copy(H5F_t *f_src, H5O_storage_compact_t *storage_src, H5F_t *f_dst, H5O_storage_compact_t *storage_dst, H5T_t *src_dtype, H5O_copy_t *cpy_info)
Definition: H5Dcompact.c:423
H5D__get_chunk_info_by_coord
H5_DLL herr_t H5D__get_chunk_info_by_coord(const H5D_t *dset, const hsize_t *coord, unsigned *filter_mask, haddr_t *addr, hsize_t *size)
Definition: H5Dchunk.c:7410
H5D__scatgath_read
H5_DLL herr_t H5D__scatgath_read(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space)
Definition: H5Dscatgath.c:455
H5D_t::shared
H5D_shared_t * shared
Definition: H5Dpkg.h:475
H5D_io_ops_t
Definition: H5Dpkg.h:175
H5D__layout_type_test
herr_t H5D__layout_type_test(hid_t did, H5D_layout_t *layout_type)
Definition: H5Dtest.c:205
H5D_chunk_ud_t::common
H5D_chunk_common_ud_t common
Definition: H5Dpkg.h:273
H5D_type_info_t::is_xform_noop
hbool_t is_xform_noop
Definition: H5Dpkg.h:105
H5D_chunk_iterate_func_t
int(* H5D_chunk_iterate_func_t)(const H5D_chk_idx_info_t *idx_info, H5D_chunk_cb_func_t chunk_cb, void *chunk_udata)
Definition: H5Dpkg.h:297
H5D__virtual_release_source_dset_files
H5_DLL herr_t H5D__virtual_release_source_dset_files(H5D_virtual_held_file_t *head)
Definition: H5Dvirtual.c:3123
H5D_ALLOC_EXTEND
@ H5D_ALLOC_EXTEND
Definition: H5Dpkg.h:482
H5D_chk_idx_info_t::pline
const H5O_pline_t * pline
Definition: H5Dpkg.h:236
H5D_rdcc_t::head
struct H5D_rdcc_ent_t * head
Definition: H5Dpkg.h:407
H5D_fill_buf_info_t::fill_to_mem_tpath
H5T_path_t * fill_to_mem_tpath
Definition: H5Dpkg.h:501
H5D_chunk_get_addr_func_t
herr_t(* H5D_chunk_get_addr_func_t)(const H5D_chk_idx_info_t *idx_info, H5D_chunk_ud_t *udata)
Definition: H5Dpkg.h:294
H5D_type_info_t::src_type_size
size_t src_type_size
Definition: H5Dpkg.h:101
H5D_t::path
H5G_name_t path
Definition: H5Dpkg.h:474
H5D_io_info_t::wbuf
const void * wbuf
Definition: H5Dpkg.h:224
H5D_contig_storage_t
Definition: H5Dpkg.h:183
H5D__chunk_create
H5_DLL herr_t H5D__chunk_create(const H5D_t *dset)
Definition: H5Dchunk.c:3107
H5D_type_info_t::bkg_buf_allocated
hbool_t bkg_buf_allocated
Definition: H5Dpkg.h:112
H5G_name_t
Definition: H5Gprivate.h:130
H5D_layout_ops_t::readvv
H5D_layout_readvv_func_t readvv
Definition: H5Dpkg.h:159
H5D_rdcc_t::scaled_encode_bits
unsigned scaled_encode_bits[H5S_MAX_RANK]
Definition: H5Dpkg.h:421
H5D_layout_writevv_func_t
ssize_t(* H5D_layout_writevv_func_t)(const struct H5D_io_info_t *io_info, size_t dset_max_nseq, size_t *dset_curr_seq, size_t dset_len_arr[], hsize_t dset_offset_arr[], size_t mem_max_nseq, size_t *mem_curr_seq, size_t mem_len_arr[], hsize_t mem_offset_arr[])
Definition: H5Dpkg.h:139
H5D__virtual_store_layout
H5_DLL herr_t H5D__virtual_store_layout(H5F_t *f, H5O_layout_t *layout)
Definition: H5Dvirtual.c:420
H5D__write
H5_DLL herr_t H5D__write(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space, const H5S_t *file_space, const void *buf)
Definition: H5Dio.c:603
H5D_io_info_t::op_type
H5D_io_op_type_t op_type
Definition: H5Dpkg.h:221
H5D__read
H5_DLL herr_t H5D__read(H5D_t *dataset, hid_t mem_type_id, const H5S_t *mem_space, const H5S_t *file_space, void *buf)
Definition: H5Dio.c:392
H5D_chunk_ud_t::filter_mask
unsigned filter_mask
Definition: H5Dpkg.h:278
H5D_layout_read_func_t
herr_t(* H5D_layout_read_func_t)(struct H5D_io_info_t *io_info, const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space, struct H5D_chunk_map_t *fm)
Definition: H5Dpkg.h:130
H5O_layout_chunk_t
Definition: H5Oprivate.h:617
H5D_fill_buf_info_t::mem_tid
hid_t mem_tid
Definition: H5Dpkg.h:511
H5D_chunk_ud_t
Definition: H5Dpkg.h:271
H5D_chunk_map_t::sel_chunks
H5SL_t * sel_chunks
Definition: H5Dpkg.h:359
H5D_fill_buf_info_t::mem_type
H5T_t * mem_type
Definition: H5Dpkg.h:509
H5D__layout_idx_type_test
herr_t H5D__layout_idx_type_test(hid_t did, H5D_chunk_index_t *idx_type)
Definition: H5Dtest.c:246
H5S_sel_type
H5S_sel_type
Definition: H5Spublic.h:83
H5D_type_info_t::tpath
H5T_path_t * tpath
Definition: H5Dpkg.h:96
H5D_BT2_FILT
H5_DLLVAR const H5B2_class_t H5D_BT2_FILT[1]
Definition: H5Dpkg.h:541
H5D__flush_sieve_buf
H5_DLL herr_t H5D__flush_sieve_buf(H5D_t *dataset)
Definition: H5Dint.c:3183
H5D_chunk_map_t::last_index
hsize_t last_index
Definition: H5Dpkg.h:365
H5D_COPS_EARRAY
H5_DLLVAR const H5D_chunk_ops_t H5D_COPS_EARRAY[1]
Definition: H5Dpkg.h:535
H5D_storage_t
union H5D_storage_t H5D_storage_t
H5D_layout_ops_t::ser_read
H5D_layout_read_func_t ser_read
Definition: H5Dpkg.h:153
H5D_chunk_map_t::chunk_dim
hsize_t chunk_dim[H5O_LAYOUT_NDIMS]
Definition: H5Dpkg.h:368
H5D__layout_set_version
H5_DLL herr_t H5D__layout_set_version(H5F_t *f, H5O_layout_t *layout)
Definition: H5Dlayout.c:299
H5O_storage_chunk_t
Definition: H5Oprivate.h:479
H5D_rdcc_t
struct H5D_rdcc_t H5D_rdcc_t
H5D_fill_buf_info_t
Definition: H5Dpkg.h:496
H5_DLL
#define H5_DLL
Definition: H5api_adpt.h:234
H5D__virtual_is_space_alloc
H5_DLL hbool_t H5D__virtual_is_space_alloc(const H5O_storage_t *storage)
H5D_type_info_t::dset_type
const H5T_t * dset_type
Definition: H5Dpkg.h:95
H5D_shared_t
Definition: H5Dpkg.h:439
H5D_layout_construct_func_t
herr_t(* H5D_layout_construct_func_t)(H5F_t *f, H5D_t *dset)
Definition: H5Dpkg.h:121
H5D_chunk_ud_t::new_unfilt_chunk
hbool_t new_unfilt_chunk
Definition: H5Dpkg.h:279
H5D_layout_ops_t::is_space_alloc
H5D_layout_is_space_alloc_func_t is_space_alloc
Definition: H5Dpkg.h:150
H5D_layout_io_init_func_t
herr_t(* H5D_layout_io_init_func_t)(const struct H5D_io_info_t *io_info, const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space, struct H5D_chunk_map_t *cm)
Definition: H5Dpkg.h:126
H5O_storage_compact_t
Definition: H5Oprivate.h:492
H5D__fill_refill_vl
H5_DLL herr_t H5D__fill_refill_vl(H5D_fill_buf_info_t *fb_info, size_t nelmts)
Definition: H5Dfill.c:567
H5D__chunk_set_info
H5_DLL herr_t H5D__chunk_set_info(const H5D_t *dset)
Definition: H5Dchunk.c:777
H5D_chunk_create_func_t
herr_t(* H5D_chunk_create_func_t)(const H5D_chk_idx_info_t *idx_info)
Definition: H5Dpkg.h:290
H5D_chunk_rec_t
Definition: H5Dpkg.h:252
H5D__mark
H5_DLL herr_t H5D__mark(const H5D_t *dataset, unsigned flags)
Definition: H5Dint.c:3435
H5D_shared_t::vds_prefix
char * vds_prefix
Definition: H5Dpkg.h:469
H5D_chunk_ops_t::get_addr
H5D_chunk_get_addr_func_t get_addr
Definition: H5Dpkg.h:320
H5D_type_info_t::is_conv_noop
hbool_t is_conv_noop
Definition: H5Dpkg.h:104
H5D_chunk_init_func_t
herr_t(* H5D_chunk_init_func_t)(const H5D_chk_idx_info_t *idx_info, const H5S_t *space, haddr_t dset_ohdr_addr)
Definition: H5Dpkg.h:288
H5O_fill_t
Definition: H5Oprivate.h:325
H5D_chunk_info_t::mspace
H5S_t * mspace
Definition: H5Dpkg.h:340
H5D_io_op_type_t
H5D_io_op_type_t
Definition: H5Dpkg.h:205
H5Tprivate.h
H5D__format_convert
H5_DLL herr_t H5D__format_convert(H5D_t *dataset)
Definition: H5Dint.c:3285
H5D_rdcc_t::single_chunk_info
H5D_chunk_info_t * single_chunk_info
Definition: H5Dpkg.h:416
H5D_rdcc_t::sel_chunks
H5SL_t * sel_chunks
Definition: H5Dpkg.h:414
H5D__alloc_storage
H5_DLL herr_t H5D__alloc_storage(const H5D_io_info_t *io_info, H5D_time_alloc_t time_alloc, hbool_t full_overwrite, hsize_t old_dim[])
Definition: H5Dint.c:2266
H5D_io_single_write_func_t
herr_t(* H5D_io_single_write_func_t)(const struct H5D_io_info_t *io_info, const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space)
Definition: H5Dpkg.h:170
H5D__chunk_allocate
H5_DLL herr_t H5D__chunk_allocate(const H5D_io_info_t *io_info, hbool_t full_overwrite, hsize_t old_dim[])
Definition: H5Dchunk.c:4313
H5D_io_ops_t
struct H5D_io_ops_t H5D_io_ops_t
H5D__chunk_cacheable
H5_DLL htri_t H5D__chunk_cacheable(const H5D_io_info_t *io_info, haddr_t caddr, hbool_t write_op)
Definition: H5Dchunk.c:2402
H5D__contig_is_data_cached
H5_DLL hbool_t H5D__contig_is_data_cached(const H5D_shared_t *shared_dset)
Definition: H5Dcontig.c:555
H5D_chunk_rec_t::filter_mask
uint32_t filter_mask
Definition: H5Dpkg.h:255
H5D_chunk_map_t
Definition: H5Dpkg.h:345
H5D__scatgath_write
H5_DLL herr_t H5D__scatgath_write(const H5D_io_info_t *io_info, const H5D_type_info_t *type_info, hsize_t nelmts, const H5S_t *file_space, const H5S_t *mem_space)
Definition: H5Dscatgath.c:595
H5D_type_info_t::tconv_buf_allocated
hbool_t tconv_buf_allocated
Definition: H5Dpkg.h:110
H5D__efl_is_space_alloc
H5_DLL hbool_t H5D__efl_is_space_alloc(const H5O_storage_t *storage)
H5D_shared_t::fo_count
size_t fo_count
Definition: H5Dpkg.h:440
H5D_shared_t::cache
struct H5D_shared_t::@3 cache
H5D_chunk_ud_t::chunk_block
H5F_block_t chunk_block
Definition: H5Dpkg.h:277
H5D_rdcc_t::scaled_dims
hsize_t scaled_dims[H5S_MAX_RANK]
Definition: H5Dpkg.h:419
H5D_chunk_common_ud_t
struct H5D_chunk_common_ud_t H5D_chunk_common_ud_t
H5D_COPS_BTREE
H5_DLLVAR const H5D_chunk_ops_t H5D_COPS_BTREE[1]
Definition: H5Dpkg.h:532
H5T_bkg_t
H5T_bkg_t
Definition: H5Tpublic.h:142
H5D__create
H5_DLL H5D_t * H5D__create(H5F_t *file, hid_t type_id, const H5S_t *space, hid_t dcpl_id, hid_t dapl_id)
Definition: H5Dint.c:1226
H5D_chunk_info_t::fspace_shared
hbool_t fspace_shared
Definition: H5Dpkg.h:339
H5D_rdcc_t::nflushes
unsigned nflushes
Definition: H5Dpkg.h:402
H5D__chunk_format_convert
H5_DLL herr_t H5D__chunk_format_convert(H5D_t *dset, H5D_chk_idx_info_t *idx_info, H5D_chk_idx_info_t *new_idx_info)
Definition: H5Dchunk.c:7091
H5D_COPS_SINGLE
H5_DLLVAR const H5D_chunk_ops_t H5D_COPS_SINGLE[1]
Definition: H5Dpkg.h:534
H5F_t
Definition: H5Fpkg.h:374
H5D_fill_buf_info_t::mem_elmt_size
size_t mem_elmt_size
Definition: H5Dpkg.h:513
H5D_obj_create_t::type_id
hid_t type_id
Definition: H5Dpkg.h:489
H5D_rdcdc_t::sieve_dirty
hbool_t sieve_dirty
Definition: H5Dpkg.h:430
H5D_chunk_delete_func_t
herr_t(* H5D_chunk_delete_func_t)(const H5D_chk_idx_info_t *idx_info)
Definition: H5Dpkg.h:301
H5D_t::oloc
H5O_loc_t oloc
Definition: H5Dpkg.h:473
nelmts
hdr stats stored nelmts
Definition: H5EAdblock.c:214
H5D_chunk_is_space_alloc_func_t
hbool_t(* H5D_chunk_is_space_alloc_func_t)(const H5O_storage_chunk_t *storage)
Definition: H5Dpkg.h:291
H5D_layout_ops_t
struct H5D_layout_ops_t H5D_layout_ops_t
H5D_type_info_t::dst_type_id
hid_t dst_type_id
Definition: H5Dpkg.h:98
H5D_IO_OP_READ
@ H5D_IO_OP_READ
Definition: H5Dpkg.h:206
H5D_COPS_BT2
H5_DLLVAR const H5D_chunk_ops_t H5D_COPS_BT2[1]
Definition: H5Dpkg.h:537
H5D__get_num_chunks
H5_DLL herr_t H5D__get_num_chunks(const H5D_t *dset, const H5S_t *space, hsize_t *nchunks)
H5D_fill_buf_info_t::file_tid
hid_t file_tid
Definition: H5Dpkg.h:512
H5D_chunk_ops_t::init
H5D_chunk_init_func_t init
Definition: H5Dpkg.h:316
H5O_storage_t
Definition: H5Oprivate.h:573
H5D_chunk_ops_t::size
H5D_chunk_size_func_t size
Definition: H5Dpkg.h:327
H5D_obj_create_t::dcpl_id
hid_t dcpl_id
Definition: H5Dpkg.h:491
H5D__layout_contig_size_test
herr_t H5D__layout_contig_size_test(hid_t did, hsize_t *size)
Definition: H5Dtest.c:123
herr_t
int herr_t
Definition: H5public.h:128
H5D__contig_delete
H5_DLL herr_t H5D__contig_delete(H5F_t *f, const H5O_storage_t *store)
Definition: H5Dcontig.c:347
H5D_layout_ops_t::init
H5D_layout_init_func_t init
Definition: H5Dpkg.h:149
H5D_chk_idx_info_t
Definition: H5Dpkg.h:234
H5D_chunk_map_t
struct H5D_chunk_map_t H5D_chunk_map_t
H5D__chunk_delete
H5_DLL herr_t H5D__chunk_delete(H5F_t *f, H5O_t *oh, H5O_storage_t *store)
Definition: H5Dchunk.c:5766
hbool_t
bool hbool_t
Definition: H5public.h:159
H5D_rdcc_t::nmisses
unsigned nmisses
Definition: H5Dpkg.h:401
H5D_chunk_ops_t::resize
H5D_chunk_resize_func_t resize
Definition: H5Dpkg.h:321
H5D_chunk_ops_t::idx_delete
H5D_chunk_delete_func_t idx_delete
Definition: H5Dpkg.h:324
H5D_chunk_insert_func_t
herr_t(* H5D_chunk_insert_func_t)(const H5D_chk_idx_info_t *idx_info, H5D_chunk_ud_t *udata, const H5D_t *dset)
Definition: H5Dpkg.h:292
H5D__layout_set_latest_indexing
H5_DLL herr_t H5D__layout_set_latest_indexing(H5O_layout_t *layout, const H5S_t *space, const H5D_dcpl_cache_t *dcpl_cache)
Definition: H5Dlayout.c:338
H5D_chunk_info_t::scaled
hsize_t scaled[H5O_LAYOUT_NDIMS]
Definition: H5Dpkg.h:337
H5D_chunk_common_ud_t::layout
const H5O_layout_chunk_t * layout
Definition: H5Dpkg.h:265
H5D_rdcc_t::tail
struct H5D_rdcc_ent_t * tail
Definition: H5Dpkg.h:408
H5D_shared_t::dcpl_id
hid_t dcpl_id
Definition: H5Dpkg.h:445
H5D__layout_set_io_ops
H5_DLL herr_t H5D__layout_set_io_ops(const H5D_t *dataset)
Definition: H5Dlayout.c:83
H5D_layout_ops_t
Definition: H5Dpkg.h:147
H5D_fill_buf_info_t::mem_to_dset_tpath
H5T_path_t * mem_to_dset_tpath
Definition: H5Dpkg.h:502
H5D__get_chunk_info
H5_DLL herr_t H5D__get_chunk_info(const H5D_t *dset, const H5S_t *space, hsize_t chk_idx, hsize_t *coord, unsigned *filter_mask, haddr_t *offset, hsize_t *size)
hsize_t
hsize_t
Definition: H5overflow.txt:44
H5D__layout_compact_dirty_test
herr_t H5D__layout_compact_dirty_test(hid_t did, hbool_t *dirty)
Definition: H5Dtest.c:164
H5B2_class_t
Definition: H5B2private.h:82
H5D_chunk_ops_t::reset
H5D_chunk_reset_func_t reset
Definition: H5Dpkg.h:328
H5O_layout_t
Definition: H5Oprivate.h:637
H5D_fill_buf_info_t
struct H5D_fill_buf_info_t H5D_fill_buf_info_t
H5D_LOPS_COMPACT
H5_DLLVAR const H5D_layout_ops_t H5D_LOPS_COMPACT[1]
Definition: H5Dpkg.h:527
H5D_shared_t::space
H5S_t * space
Definition: H5Dpkg.h:444
H5D_chunk_ops_t::can_swim
hbool_t can_swim
Definition: H5Dpkg.h:315
H5D_chunk_cached_t::chunk_idx
hsize_t chunk_idx
Definition: H5Dpkg.h:381
H5D_virtual_held_file_t::file
H5F_t * file
Definition: H5Dpkg.h:391
H5D_chunk_ops_t
struct H5D_chunk_ops_t H5D_chunk_ops_t
H5D_shared_t::curr_power2up
hsize_t curr_power2up[H5S_MAX_RANK]
Definition: H5Dpkg.h:454
H5D_chunk_ops_t::copy_setup
H5D_chunk_copy_setup_func_t copy_setup
Definition: H5Dpkg.h:325
H5D__chunk_direct_write
H5_DLL herr_t H5D__chunk_direct_write(const H5D_t *dset, uint32_t filters, hsize_t *offset, uint32_t data_size, const void *buf)
Definition: H5Dchunk.c:409
H5B2private.h
H5D__layout_meta_size
H5_DLL size_t H5D__layout_meta_size(const H5F_t *f, const H5O_layout_t *layout, hbool_t include_compact_data)
Definition: H5Dlayout.c:172
H5D_type_info_t::mem_type
const H5T_t * mem_type
Definition: H5Dpkg.h:94
H5MM_allocate_t
void *(* H5MM_allocate_t)(size_t size, void *alloc_info)
Definition: H5MMpublic.h:34
H5D_chunk_map_t::file_space
const H5S_t * file_space
Definition: H5Dpkg.h:349
H5D_io_info_t::f_sh
H5F_shared_t * f_sh
Definition: H5Dpkg.h:213
H5O_storage_contig_t
Definition: H5Oprivate.h:439
H5D__contig_fill
H5_DLL herr_t H5D__contig_fill(const H5D_io_info_t *io_info)
Definition: H5Dcontig.c:195
H5D_chunk_ops_t::is_space_alloc
H5D_chunk_is_space_alloc_func_t is_space_alloc
Definition: H5Dpkg.h:318