summaryrefslogtreecommitdiffstats
path: root/src/H5HFpkg.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2006-08-14 02:50:11 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2006-08-14 02:50:11 (GMT)
commit89f36d62b776ef955eed82a109b83a187ef115bb (patch)
tree4a8276f4a9ef5e614e9b829931d1094b9346e6d9 /src/H5HFpkg.h
parentc4a5b8e16cdf66d1cf4b70587a6747f03557b2ef (diff)
downloadhdf5-89f36d62b776ef955eed82a109b83a187ef115bb.zip
hdf5-89f36d62b776ef955eed82a109b83a187ef115bb.tar.gz
hdf5-89f36d62b776ef955eed82a109b83a187ef115bb.tar.bz2
[svn-r12575] Description:
Allow the heap ID length to be chosen at heap creation time, to allow for making heap IDs long enough to directly embed the file offset & length of 'huge' objects in the heap ID (which allows them to be retrieved directly from disk, instead of requiring them to be looked up in the B-tree that tracks 'huge' objects) Tested on: FreeBSD/32 4.11 (sleipnir) Linux/64 2.4 (mir) Solaris/64 9 (shanti)
Diffstat (limited to 'src/H5HFpkg.h')
-rw-r--r--src/H5HFpkg.h14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/H5HFpkg.h b/src/H5HFpkg.h
index 209eeed..21e5468 100644
--- a/src/H5HFpkg.h
+++ b/src/H5HFpkg.h
@@ -79,6 +79,7 @@
/* Fractal Heap Header specific fields */ \
\
/* General heap information */ \
+ + 2 /* Heap ID len */ \
+ 1 /* Status flags */ \
\
/* "Huge" object fields */ \
@@ -154,13 +155,6 @@
UINT64DECODE_VAR((i), (o), (h)->heap_off_size); \
UINT64DECODE_VAR((i), (l), (h)->heap_len_size)
-/* Size of ID for heap */
-#define H5HF_ID_SIZE(h) ( \
- 1 /* ID flag byte */ \
- + (h)->heap_off_size /* Space for managed object offset */ \
- + (h)->heap_len_size /* Space for managed object length */ \
- )
-
/* Free space section types for fractal heap */
/* (values stored in free space data structures in file) */
#define H5HF_FSPACE_SECT_SINGLE 0 /* Section is a range of actual bytes in a direct block */
@@ -293,6 +287,9 @@ typedef struct H5HF_hdr_t {
/* Information for H5AC cache functions, _must_ be first field in structure */
H5AC_info_t cache_info;
+ /* General header information (stored in header) */
+ unsigned id_len; /* Size of heap IDs (in bytes) */
+
/* Flags for heap settings (stored in status byte in header) */
hbool_t debug_objs; /* Is the heap storing objects in 'debug' format */
hbool_t have_io_filter; /* Does the heap have I/O filters for the direct blocks? */
@@ -328,7 +325,6 @@ typedef struct H5HF_hdr_t {
H5F_t *f; /* Pointer to file for heap */
size_t sizeof_size; /* Size of file sizes */
size_t sizeof_addr; /* Size of file addresses */
- size_t id_len; /* Size of heap IDs (in bytes) */
H5FS_t *fspace; /* Free space list for objects in heap */
H5HF_block_iter_t next_block; /* Block iterator for searching for next block with space */
H5B2_class_t huge_bt2_class; /* v2 B-tree class information for "huge" object tracking */
@@ -465,6 +461,8 @@ H5FL_SEQ_EXTERN(H5HF_indirect_ent_t);
/* Routines for managing shared fractal heap header */
H5_DLL H5HF_hdr_t * H5HF_hdr_alloc(H5F_t *f);
H5_DLL haddr_t H5HF_hdr_create(H5F_t *f, hid_t dxpl_id, const H5HF_create_t *cparam);
+H5_DLL herr_t H5HF_hdr_finish_init_phase1(H5HF_hdr_t *hdr);
+H5_DLL herr_t H5HF_hdr_finish_init_phase2(H5HF_hdr_t *hdr);
H5_DLL herr_t H5HF_hdr_finish_init(H5HF_hdr_t *hdr);
/* Doubling table routines */