diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2006-08-14 02:50:11 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2006-08-14 02:50:11 (GMT) |
commit | 89f36d62b776ef955eed82a109b83a187ef115bb (patch) | |
tree | 4a8276f4a9ef5e614e9b829931d1094b9346e6d9 /src/H5HFpkg.h | |
parent | c4a5b8e16cdf66d1cf4b70587a6747f03557b2ef (diff) | |
download | hdf5-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.h | 14 |
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 */ |