HDF5  1.12.0
H5FDpublic.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: Robb Matzke <matzke@llnl.gov>
16  * Monday, July 26, 1999
17  */
18 #ifndef _H5FDpublic_H
19 #define _H5FDpublic_H
20 
21 #include "H5public.h"
22 #include "H5Fpublic.h" /*for H5F_close_degree_t */
23 
24 #define H5_HAVE_VFL 1 /*define a convenient app feature test*/
25 #define H5FD_VFD_DEFAULT 0 /* Default VFL driver value */
26 
27 /* Types of allocation requests: see H5Fpublic.h */
28 typedef enum H5F_mem_t H5FD_mem_t;
29 
30 /* Map "fractal heap" header blocks to 'ohdr' type file memory, since its
31  * a fair amount of work to add a new kind of file memory and they are similar
32  * enough to object headers and probably too minor to deserve their own type.
33  *
34  * Map "fractal heap" indirect blocks to 'ohdr' type file memory, since they
35  * are similar to fractal heap header blocks.
36  *
37  * Map "fractal heap" direct blocks to 'lheap' type file memory, since they
38  * will be replacing local heaps.
39  *
40  * Map "fractal heap" 'huge' objects to 'draw' type file memory, since they
41  * represent large objects that are directly stored in the file.
42  *
43  * -QAK
44  */
45 #define H5FD_MEM_FHEAP_HDR H5FD_MEM_OHDR
46 #define H5FD_MEM_FHEAP_IBLOCK H5FD_MEM_OHDR
47 #define H5FD_MEM_FHEAP_DBLOCK H5FD_MEM_LHEAP
48 #define H5FD_MEM_FHEAP_HUGE_OBJ H5FD_MEM_DRAW
49 
50 /* Map "free space" header blocks to 'ohdr' type file memory, since its
51  * a fair amount of work to add a new kind of file memory and they are similar
52  * enough to object headers and probably too minor to deserve their own type.
53  *
54  * Map "free space" serialized sections to 'lheap' type file memory, since they
55  * are similar enough to local heap info.
56  *
57  * -QAK
58  */
59 #define H5FD_MEM_FSPACE_HDR H5FD_MEM_OHDR
60 #define H5FD_MEM_FSPACE_SINFO H5FD_MEM_LHEAP
61 
62 /* Map "shared object header message" master table to 'ohdr' type file memory,
63  * since its a fair amount of work to add a new kind of file memory and they are
64  * similar enough to object headers and probably too minor to deserve their own
65  * type.
66  *
67  * Map "shared object header message" indices to 'btree' type file memory,
68  * since they are similar enough to B-tree nodes.
69  *
70  * -QAK
71  */
72 #define H5FD_MEM_SOHM_TABLE H5FD_MEM_OHDR
73 #define H5FD_MEM_SOHM_INDEX H5FD_MEM_BTREE
74 
75 /* Map "extensible array" header blocks to 'ohdr' type file memory, since its
76  * a fair amount of work to add a new kind of file memory and they are similar
77  * enough to object headers and probably too minor to deserve their own type.
78  *
79  * Map "extensible array" index blocks to 'ohdr' type file memory, since they
80  * are similar to extensible array header blocks.
81  *
82  * Map "extensible array" super blocks to 'btree' type file memory, since they
83  * are similar enough to B-tree nodes.
84  *
85  * Map "extensible array" data blocks & pages to 'lheap' type file memory, since
86  * they are similar enough to local heap info.
87  *
88  * -QAK
89  */
90 #define H5FD_MEM_EARRAY_HDR H5FD_MEM_OHDR
91 #define H5FD_MEM_EARRAY_IBLOCK H5FD_MEM_OHDR
92 #define H5FD_MEM_EARRAY_SBLOCK H5FD_MEM_BTREE
93 #define H5FD_MEM_EARRAY_DBLOCK H5FD_MEM_LHEAP
94 #define H5FD_MEM_EARRAY_DBLK_PAGE H5FD_MEM_LHEAP
95 
96 /* Map "fixed array" header blocks to 'ohdr' type file memory, since its
97  * a fair amount of work to add a new kind of file memory and they are similar
98  * enough to object headers and probably too minor to deserve their own type.
99  *
100  * Map "fixed array" data blocks & pages to 'lheap' type file memory, since
101  * they are similar enough to local heap info.
102  *
103  */
104 #define H5FD_MEM_FARRAY_HDR H5FD_MEM_OHDR
105 #define H5FD_MEM_FARRAY_DBLOCK H5FD_MEM_LHEAP
106 #define H5FD_MEM_FARRAY_DBLK_PAGE H5FD_MEM_LHEAP
107 
108 /*
109  * A free-list map which maps all types of allocation requests to a single
110  * free list. This is useful for drivers that don't really care about
111  * keeping different requests segregated in the underlying file and which
112  * want to make most efficient reuse of freed memory. The use of the
113  * H5FD_MEM_SUPER free list is arbitrary.
114  */
115 #define H5FD_FLMAP_SINGLE { \
116  H5FD_MEM_SUPER, /*default*/ \
117  H5FD_MEM_SUPER, /*super*/ \
118  H5FD_MEM_SUPER, /*btree*/ \
119  H5FD_MEM_SUPER, /*draw*/ \
120  H5FD_MEM_SUPER, /*gheap*/ \
121  H5FD_MEM_SUPER, /*lheap*/ \
122  H5FD_MEM_SUPER /*ohdr*/ \
123 }
124 
125 /*
126  * A free-list map which segregates requests into `raw' or `meta' data
127  * pools.
128  */
129 #define H5FD_FLMAP_DICHOTOMY { \
130  H5FD_MEM_SUPER, /*default*/ \
131  H5FD_MEM_SUPER, /*super*/ \
132  H5FD_MEM_SUPER, /*btree*/ \
133  H5FD_MEM_DRAW, /*draw*/ \
134  H5FD_MEM_DRAW, /*gheap*/ \
135  H5FD_MEM_SUPER, /*lheap*/ \
136  H5FD_MEM_SUPER /*ohdr*/ \
137 }
138 
139 /*
140  * The default free list map which causes each request type to use it's own
141  * free-list.
142  */
143 #define H5FD_FLMAP_DEFAULT { \
144  H5FD_MEM_DEFAULT, /*default*/ \
145  H5FD_MEM_DEFAULT, /*super*/ \
146  H5FD_MEM_DEFAULT, /*btree*/ \
147  H5FD_MEM_DEFAULT, /*draw*/ \
148  H5FD_MEM_DEFAULT, /*gheap*/ \
149  H5FD_MEM_DEFAULT, /*lheap*/ \
150  H5FD_MEM_DEFAULT /*ohdr*/ \
151 }
152 
153 
154 /* Define VFL driver features that can be enabled on a per-driver basis */
155 /* These are returned with the 'query' function pointer in H5FD_class_t */
156  /*
157  * Defining H5FD_FEAT_AGGREGATE_METADATA for a VFL driver means that
158  * the library will attempt to allocate a larger block for metadata and
159  * then sub-allocate each metadata request from that larger block.
160  */
161 #define H5FD_FEAT_AGGREGATE_METADATA 0x00000001
162  /*
163  * Defining H5FD_FEAT_ACCUMULATE_METADATA for a VFL driver means that
164  * the library will attempt to cache metadata as it is written to the file
165  * and build up a larger block of metadata to eventually pass to the VFL
166  * 'write' routine.
167  *
168  * Distinguish between updating the metadata accumulator on writes and
169  * reads. This is particularly (perhaps only, even) important for MPI-I/O
170  * where we guarantee that writes are collective, but reads may not be.
171  * If we were to allow the metadata accumulator to be written during a
172  * read operation, the application would hang.
173  */
174 #define H5FD_FEAT_ACCUMULATE_METADATA_WRITE 0x00000002
175 #define H5FD_FEAT_ACCUMULATE_METADATA_READ 0x00000004
176 #define H5FD_FEAT_ACCUMULATE_METADATA (H5FD_FEAT_ACCUMULATE_METADATA_WRITE|H5FD_FEAT_ACCUMULATE_METADATA_READ)
177  /*
178  * Defining H5FD_FEAT_DATA_SIEVE for a VFL driver means that
179  * the library will attempt to cache raw data as it is read from/written to
180  * a file in a "data seive" buffer. See Rajeev Thakur's papers:
181  * http://www.mcs.anl.gov/~thakur/papers/romio-coll.ps.gz
182  * http://www.mcs.anl.gov/~thakur/papers/mpio-high-perf.ps.gz
183  */
184 #define H5FD_FEAT_DATA_SIEVE 0x00000008
185  /*
186  * Defining H5FD_FEAT_AGGREGATE_SMALLDATA for a VFL driver means that
187  * the library will attempt to allocate a larger block for "small" raw data
188  * and then sub-allocate "small" raw data requests from that larger block.
189  */
190 #define H5FD_FEAT_AGGREGATE_SMALLDATA 0x00000010
191  /*
192  * Defining H5FD_FEAT_IGNORE_DRVRINFO for a VFL driver means that
193  * the library will ignore the driver info that is encoded in the file
194  * for the VFL driver. (This will cause the driver info to be eliminated
195  * from the file when it is flushed/closed, if the file is opened R/W).
196  */
197 #define H5FD_FEAT_IGNORE_DRVRINFO 0x00000020
198  /*
199  * Defining the H5FD_FEAT_DIRTY_DRVRINFO_LOAD for a VFL driver means that
200  * the library will mark the driver info dirty when the file is opened
201  * R/W. This will cause the driver info to be re-encoded when the file
202  * is flushed/closed.
203  */
204 #define H5FD_FEAT_DIRTY_DRVRINFO_LOAD 0x00000040
205  /*
206  * Defining H5FD_FEAT_POSIX_COMPAT_HANDLE for a VFL driver means that
207  * the handle for the VFD (returned with the 'get_handle' callback) is
208  * of type 'int' and is compatible with POSIX I/O calls.
209  */
210 #define H5FD_FEAT_POSIX_COMPAT_HANDLE 0x00000080
211  /*
212  * Defining H5FD_FEAT_HAS_MPI for a VFL driver means that
213  * the driver makes use of MPI communication and code may retrieve
214  * communicator/rank information from it
215  */
216 #define H5FD_FEAT_HAS_MPI 0x00000100
217  /*
218  * Defining the H5FD_FEAT_ALLOCATE_EARLY for a VFL driver will force
219  * the library to use the H5D_ALLOC_TIME_EARLY on dataset create
220  * instead of the default H5D_ALLOC_TIME_LATE
221  */
222 #define H5FD_FEAT_ALLOCATE_EARLY 0x00000200
223  /*
224  * Defining H5FD_FEAT_ALLOW_FILE_IMAGE for a VFL driver means that
225  * the driver is able to use a file image in the fapl as the initial
226  * contents of a file.
227  */
228 #define H5FD_FEAT_ALLOW_FILE_IMAGE 0x00000400
229  /*
230  * Defining H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS for a VFL driver
231  * means that the driver is able to use callbacks to make a copy of the
232  * image to store in memory.
233  */
234 #define H5FD_FEAT_CAN_USE_FILE_IMAGE_CALLBACKS 0x00000800
235  /*
236  * Defining H5FD_FEAT_SUPPORTS_SWMR_IO for a VFL driver means that the
237  * driver supports the single-writer/multiple-readers I/O pattern.
238  */
239 #define H5FD_FEAT_SUPPORTS_SWMR_IO 0x00001000
240  /*
241  * Defining H5FD_FEAT_USE_ALLOC_SIZE for a VFL driver
242  * means that the library will just pass the allocation size to the
243  * the driver's allocation callback which will eventually handle alignment.
244  * This is specifically used for the multi/split driver.
245  */
246 #define H5FD_FEAT_USE_ALLOC_SIZE 0x00002000
247  /*
248  * Defining H5FD_FEAT_PAGED_AGGR for a VFL driver
249  * means that the driver needs special file space mapping for paged aggregation.
250  * This is specifically used for the multi/split driver.
251  */
252 #define H5FD_FEAT_PAGED_AGGR 0x00004000
253  /*
254  * Defining H5FD_FEAT_DEFAULT_VFD_COMPATIBLE for a VFL driver
255  * that creates a file which is compatible with the default VFD.
256  * Generally, this means that the VFD creates a single file that follows
257  * the canonical HDF5 file format.
258  */
259 #define H5FD_FEAT_DEFAULT_VFD_COMPATIBLE 0x00008000
260 
261 
262 /* Forward declaration */
263 typedef struct H5FD_t H5FD_t;
264 
265 /* Class information for each file driver */
266 typedef struct H5FD_class_t {
267  const char *name;
270  herr_t (*terminate)(void);
271  hsize_t (*sb_size)(H5FD_t *file);
272  herr_t (*sb_encode)(H5FD_t *file, char *name/*out*/,
273  unsigned char *p/*out*/);
274  herr_t (*sb_decode)(H5FD_t *f, const char *name, const unsigned char *p);
275  size_t fapl_size;
276  void * (*fapl_get)(H5FD_t *file);
277  void * (*fapl_copy)(const void *fapl);
278  herr_t (*fapl_free)(void *fapl);
279  size_t dxpl_size;
280  void * (*dxpl_copy)(const void *dxpl);
281  herr_t (*dxpl_free)(void *dxpl);
282  H5FD_t *(*open)(const char *name, unsigned flags, hid_t fapl,
283  haddr_t maxaddr);
284  herr_t (*close)(H5FD_t *file);
285  int (*cmp)(const H5FD_t *f1, const H5FD_t *f2);
286  herr_t (*query)(const H5FD_t *f1, unsigned long *flags);
287  herr_t (*get_type_map)(const H5FD_t *file, H5FD_mem_t *type_map);
288  haddr_t (*alloc)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size);
289  herr_t (*free)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id,
290  haddr_t addr, hsize_t size);
291  haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type);
292  herr_t (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr);
293  haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type);
294  herr_t (*get_handle)(H5FD_t *file, hid_t fapl, void**file_handle);
295  herr_t (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl,
296  haddr_t addr, size_t size, void *buffer);
297  herr_t (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl,
298  haddr_t addr, size_t size, const void *buffer);
299  herr_t (*flush)(H5FD_t *file, hid_t dxpl_id, hbool_t closing);
300  herr_t (*truncate)(H5FD_t *file, hid_t dxpl_id, hbool_t closing);
301  herr_t (*lock)(H5FD_t *file, hbool_t rw);
302  herr_t (*unlock)(H5FD_t *file);
305 
306 /* A free list is a singly-linked list of address/size pairs. */
307 typedef struct H5FD_free_t {
310  struct H5FD_free_t *next;
312 
313 /*
314  * The main datatype for each driver. Public fields common to all drivers
315  * are declared here and the driver appends private fields in memory.
316  */
317 struct H5FD_t {
318  hid_t driver_id; /*driver ID for this file */
319  const H5FD_class_t *cls; /*constant class info */
320  unsigned long fileno; /* File 'serial' number */
321  unsigned access_flags; /* File access flags (from create or open) */
322  unsigned long feature_flags; /* VFL Driver feature Flags */
323  haddr_t maxaddr; /* For this file, overrides class */
324  haddr_t base_addr; /* Base address for HDF5 data w/in file */
325 
326  /* Space allocation management fields */
327  hsize_t threshold; /* Threshold for alignment */
328  hsize_t alignment; /* Allocation alignment */
329  hbool_t paged_aggr; /* Paged aggregation for file space is enabled or not */
330 };
331 
332 /* Define enum for the source of file image callbacks */
333 typedef enum {
343 
344 /* Define structure to hold file image callbacks */
345 typedef struct {
346  void *(*image_malloc)(size_t size, H5FD_file_image_op_t file_image_op,
347  void *udata);
348  void *(*image_memcpy)(void *dest, const void *src, size_t size,
349  H5FD_file_image_op_t file_image_op, void *udata);
350  void *(*image_realloc)(void *ptr, size_t size,
351  H5FD_file_image_op_t file_image_op, void *udata);
352  herr_t (*image_free)(void *ptr, H5FD_file_image_op_t file_image_op,
353  void *udata);
354  void *(*udata_copy)(void *udata);
355  herr_t (*udata_free)(void *udata);
356  void *udata;
358 
359 #ifdef __cplusplus
360 extern "C" {
361 #endif
362 
363 /* Function prototypes */
365 H5_DLL herr_t H5FDunregister(hid_t driver_id);
366 H5_DLL H5FD_t *H5FDopen(const char *name, unsigned flags, hid_t fapl_id,
367  haddr_t maxaddr);
369 H5_DLL int H5FDcmp(const H5FD_t *f1, const H5FD_t *f2);
370 H5_DLL int H5FDquery(const H5FD_t *f, unsigned long *flags);
371 H5_DLL haddr_t H5FDalloc(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size);
372 H5_DLL herr_t H5FDfree(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id,
373  haddr_t addr, hsize_t size);
377 H5_DLL herr_t H5FDget_vfd_handle(H5FD_t *file, hid_t fapl, void**file_handle);
378 H5_DLL herr_t H5FDread(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id,
379  haddr_t addr, size_t size, void *buf/*out*/);
380 H5_DLL herr_t H5FDwrite(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id,
381  haddr_t addr, size_t size, const void *buf);
382 H5_DLL herr_t H5FDflush(H5FD_t *file, hid_t dxpl_id, hbool_t closing);
383 H5_DLL herr_t H5FDtruncate(H5FD_t *file, hid_t dxpl_id, hbool_t closing);
384 H5_DLL herr_t H5FDlock(H5FD_t *file, hbool_t rw);
386 
387 /* Allows querying a VFD ID for features before the file is opened */
388 H5_DLL herr_t H5FDdriver_query(hid_t driver_id, unsigned long *flags/*out*/);
389 
390 #ifdef __cplusplus
391 }
392 #endif
393 #endif
394 
H5public.h
H5FD_class_t::lock
herr_t(* lock)(H5FD_t *file, hbool_t rw)
Definition: H5FDpublic.h:301
H5FD_class_t::query
herr_t(* query)(const H5FD_t *f1, unsigned long *flags)
Definition: H5FDpublic.h:286
H5FD_class_t::alloc
haddr_t(* alloc)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size)
Definition: H5FDpublic.h:288
H5FDfree
H5_DLL herr_t H5FDfree(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t size)
Definition: H5FD.c:1096
H5F_close_degree_t
H5F_close_degree_t
Definition: H5Fpublic.h:102
H5FD_FILE_IMAGE_OP_PROPERTY_LIST_COPY
@ H5FD_FILE_IMAGE_OP_PROPERTY_LIST_COPY
Definition: H5FDpublic.h:336
size
iblock size
Definition: H5EAcache.c:787
f
hdr f
Definition: H5EA.c:755
H5FDget_eoa
H5_DLL haddr_t H5FDget_eoa(H5FD_t *file, H5FD_mem_t type)
Definition: H5FD.c:1141
H5FD_class_t::name
const char * name
Definition: H5FDpublic.h:267
H5FD_class_t::flush
herr_t(* flush)(H5FD_t *file, hid_t dxpl_id, hbool_t closing)
Definition: H5FDpublic.h:299
H5FD_class_t::dxpl_free
herr_t(* dxpl_free)(void *dxpl)
Definition: H5FDpublic.h:281
H5FDopen
H5_DLL H5FD_t * H5FDopen(const char *name, unsigned flags, hid_t fapl_id, haddr_t maxaddr)
Definition: H5FD.c:658
H5FDunlock
H5_DLL herr_t H5FDunlock(H5FD_t *file)
Definition: H5FD.c:1692
H5FD_FILE_IMAGE_OP_FILE_RESIZE
@ H5FD_FILE_IMAGE_OP_FILE_RESIZE
Definition: H5FDpublic.h:340
H5FD_t
Definition: H5FDpublic.h:317
H5FD_class_t::sb_encode
herr_t(* sb_encode)(H5FD_t *file, char *name, unsigned char *p)
Definition: H5FDpublic.h:272
H5FDdriver_query
H5_DLL herr_t H5FDdriver_query(hid_t driver_id, unsigned long *flags)
Definition: H5FD.c:1927
H5FD_class_t::fapl_free
herr_t(* fapl_free)(void *fapl)
Definition: H5FDpublic.h:278
H5FD_t::alignment
hsize_t alignment
Definition: H5FDpublic.h:328
haddr_t
CATCH haddr_t
Definition: H5EAdblock.c:162
H5FDunregister
H5_DLL herr_t H5FDunregister(hid_t driver_id)
Definition: H5FD.c:324
H5FD_class_t::sb_size
hsize_t(* sb_size)(H5FD_t *file)
Definition: H5FDpublic.h:271
H5FD_file_image_op_t
H5FD_file_image_op_t
Definition: H5FDpublic.h:333
H5FD_t::maxaddr
haddr_t maxaddr
Definition: H5FDpublic.h:323
H5FD_class_t::dxpl_size
size_t dxpl_size
Definition: H5FDpublic.h:279
H5FD_class_t::unlock
herr_t(* unlock)(H5FD_t *file)
Definition: H5FDpublic.h:302
H5FD_class_t
Definition: H5FDpublic.h:266
H5FD_FILE_IMAGE_OP_PROPERTY_LIST_GET
@ H5FD_FILE_IMAGE_OP_PROPERTY_LIST_GET
Definition: H5FDpublic.h:337
H5FDlock
H5_DLL herr_t H5FDlock(H5FD_t *file, hbool_t rw)
Definition: H5FD.c:1630
H5FDclose
H5_DLL herr_t H5FDclose(H5FD_t *file)
Definition: H5FD.c:797
H5FD_FILE_IMAGE_OP_NO_OP
@ H5FD_FILE_IMAGE_OP_NO_OP
Definition: H5FDpublic.h:334
H5FD_MEM_NTYPES
@ H5FD_MEM_NTYPES
Definition: H5Fpublic.h:152
H5FDquery
H5_DLL int H5FDquery(const H5FD_t *f, unsigned long *flags)
Definition: H5FD.c:949
H5FD_t::base_addr
haddr_t base_addr
Definition: H5FDpublic.h:324
H5FDcmp
H5_DLL int H5FDcmp(const H5FD_t *f1, const H5FD_t *f2)
Definition: H5FD.c:877
H5FD_t::feature_flags
unsigned long feature_flags
Definition: H5FDpublic.h:322
hid_t
int64_t hid_t
Definition: H5Ipublic.h:55
H5FD_free_t::size
hsize_t size
Definition: H5FDpublic.h:309
H5FD_class_t::get_type_map
herr_t(* get_type_map)(const H5FD_t *file, H5FD_mem_t *type_map)
Definition: H5FDpublic.h:287
H5FD_class_t::set_eoa
herr_t(* set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr)
Definition: H5FDpublic.h:292
H5FD_t::cls
const H5FD_class_t * cls
Definition: H5FDpublic.h:319
H5FD_class_t::fl_map
H5FD_mem_t fl_map[H5FD_MEM_NTYPES]
Definition: H5FDpublic.h:303
H5FD_file_image_callbacks_t
Definition: H5FDpublic.h:345
int
CATCH int
Definition: H5EA.c:1002
H5FD_free_t
Definition: H5FDpublic.h:307
H5FD_free_t::addr
haddr_t addr
Definition: H5FDpublic.h:308
H5FD_class_t::close
herr_t(* close)(H5FD_t *file)
Definition: H5FDpublic.h:284
H5FD_class_t::write
herr_t(* write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, const void *buffer)
Definition: H5FDpublic.h:297
H5FD_class_t::free
herr_t(* free)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t size)
Definition: H5FDpublic.h:289
H5FDflush
H5_DLL herr_t H5FDflush(H5FD_t *file, hid_t dxpl_id, hbool_t closing)
Definition: H5FD.c:1491
H5FD_file_image_callbacks_t::udata
void * udata
Definition: H5FDpublic.h:356
H5FD_mem_t
enum H5F_mem_t H5FD_mem_t
Definition: H5FDpublic.h:28
H5FD_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE
@ H5FD_FILE_IMAGE_OP_PROPERTY_LIST_CLOSE
Definition: H5FDpublic.h:338
H5FD_class_t::terminate
herr_t(* terminate)(void)
Definition: H5FDpublic.h:270
H5FD_FILE_IMAGE_OP_FILE_CLOSE
@ H5FD_FILE_IMAGE_OP_FILE_CLOSE
Definition: H5FDpublic.h:341
H5FDtruncate
H5_DLL herr_t H5FDtruncate(H5FD_t *file, hid_t dxpl_id, hbool_t closing)
Definition: H5FD.c:1561
H5FD_FILE_IMAGE_OP_FILE_OPEN
@ H5FD_FILE_IMAGE_OP_FILE_OPEN
Definition: H5FDpublic.h:339
H5FD_class_t::read
herr_t(* read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, void *buffer)
Definition: H5FDpublic.h:295
H5_DLL
#define H5_DLL
Definition: H5api_adpt.h:234
H5FD_t::threshold
hsize_t threshold
Definition: H5FDpublic.h:327
H5FD_t::fileno
unsigned long fileno
Definition: H5FDpublic.h:320
H5FDwrite
H5_DLL herr_t H5FDwrite(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size, const void *buf)
Definition: H5FD.c:1444
H5FDregister
H5_DLL hid_t H5FDregister(const H5FD_class_t *cls)
Definition: H5FD.c:225
H5FD_class_t::cmp
int(* cmp)(const H5FD_t *f1, const H5FD_t *f2)
Definition: H5FDpublic.h:285
H5FD_t::driver_id
hid_t driver_id
Definition: H5FDpublic.h:318
H5FD_class_t::truncate
herr_t(* truncate)(H5FD_t *file, hid_t dxpl_id, hbool_t closing)
Definition: H5FDpublic.h:300
H5FDget_vfd_handle
H5_DLL herr_t H5FDget_vfd_handle(H5FD_t *file, hid_t fapl, void **file_handle)
Definition: H5FD.c:1781
H5FD_t::paged_aggr
hbool_t paged_aggr
Definition: H5FDpublic.h:329
H5Fpublic.h
herr_t
int herr_t
Definition: H5public.h:128
H5FD_free_t
struct H5FD_free_t H5FD_free_t
hbool_t
bool hbool_t
Definition: H5public.h:159
H5FD_t::access_flags
unsigned access_flags
Definition: H5FDpublic.h:321
H5FD_class_t::get_eoa
haddr_t(* get_eoa)(const H5FD_t *file, H5FD_mem_t type)
Definition: H5FDpublic.h:291
H5FDread
H5_DLL herr_t H5FDread(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, size_t size, void *buf)
Definition: H5FD.c:1395
H5FD_class_t::fapl_size
size_t fapl_size
Definition: H5FDpublic.h:275
H5FDset_eoa
H5_DLL herr_t H5FDset_eoa(H5FD_t *file, H5FD_mem_t type, haddr_t eoa)
Definition: H5FD.c:1190
hsize_t
hsize_t
Definition: H5overflow.txt:44
H5FD_class_t::fc_degree
H5F_close_degree_t fc_degree
Definition: H5FDpublic.h:269
H5FDget_eof
H5_DLL haddr_t H5FDget_eof(H5FD_t *file, H5FD_mem_t type)
Definition: H5FD.c:1239
H5FD_class_t
struct H5FD_class_t H5FD_class_t
H5FD_class_t::maxaddr
haddr_t maxaddr
Definition: H5FDpublic.h:268
H5F_mem_t
H5F_mem_t
Definition: H5Fpublic.h:136
H5FDalloc
H5_DLL haddr_t H5FDalloc(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size)
Definition: H5FD.c:1044
H5FD_FILE_IMAGE_OP_PROPERTY_LIST_SET
@ H5FD_FILE_IMAGE_OP_PROPERTY_LIST_SET
Definition: H5FDpublic.h:335
H5FD_free_t::next
struct H5FD_free_t * next
Definition: H5FDpublic.h:310
H5FD_class_t::get_handle
herr_t(* get_handle)(H5FD_t *file, hid_t fapl, void **file_handle)
Definition: H5FDpublic.h:294
H5FD_class_t::get_eof
haddr_t(* get_eof)(const H5FD_t *file, H5FD_mem_t type)
Definition: H5FDpublic.h:293
H5FD_class_t::sb_decode
herr_t(* sb_decode)(H5FD_t *f, const char *name, const unsigned char *p)
Definition: H5FDpublic.h:274