summaryrefslogtreecommitdiffstats
path: root/src/H5HFpkg.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2006-03-28 14:03:46 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2006-03-28 14:03:46 (GMT)
commit935d75c50d35816e08af71be79ef8ace04f97d04 (patch)
tree2aff56744b8fe1211f0b3a43b9fb11a0f7923eaa /src/H5HFpkg.h
parent87050be33e3a5931ef88b4faee557c3bfdb809b4 (diff)
downloadhdf5-935d75c50d35816e08af71be79ef8ace04f97d04.zip
hdf5-935d75c50d35816e08af71be79ef8ace04f97d04.tar.gz
hdf5-935d75c50d35816e08af71be79ef8ace04f97d04.tar.bz2
[svn-r12162] Purpose:
Code checkpoint Description: Check in fractal heap code to add basic support for skipping direct blocks when an object is too large to fit in one. Platforms tested: FreeBSD 4.11 (sleipnir) Linux 2.4 (chicago)
Diffstat (limited to 'src/H5HFpkg.h')
-rw-r--r--src/H5HFpkg.h16
1 files changed, 5 insertions, 11 deletions
diff --git a/src/H5HFpkg.h b/src/H5HFpkg.h
index cede8c9..ab69207 100644
--- a/src/H5HFpkg.h
+++ b/src/H5HFpkg.h
@@ -65,7 +65,6 @@
+ 2 /* Starting # of rows in root indirect block */ \
+ (h)->sizeof_addr /* File address of table managed */ \
+ 2 /* Current # of rows in root indirect block */ \
- + (h)->sizeof_size /* Next direct block's heap offset */ \
)
/* Size of the fractal heap header on disk */
@@ -89,12 +88,7 @@
#define H5HF_MAN_ABS_DIRECT_FREE_NODE_SIZE(d) (2 * (d)->blk_off_size)
/* Size of header for each object in an absolute managed direct block */
-#define H5HF_MAN_ABS_DIRECT_OBJ_PREFIX_LEN_SIZE(h, o) ( \
- H5HF_SIZEOF_OFFSET_LEN(o) /* Length of object in block */ \
- + 1 /* Free space fragment length */ \
- )
-#define H5HF_MAN_ABS_DIRECT_OBJ_PREFIX_LEN_DBLOCK(h, d) ( \
- (d)->blk_off_size /* Length of object in block */ \
+#define H5HF_MAN_ABS_DIRECT_OBJ_PREFIX_LEN(h) ( \
+ 1 /* Free space fragment length */ \
)
@@ -162,16 +156,15 @@ typedef struct H5HF_dtable_t {
* to direct block (of START_BLOCK_SIZE) instead
* of indirect root block.
*/
-/* XXX: get rid of this global setting */
- hsize_t next_dir_block; /* Offset of next direct managed block */
/* Computed information (not stored) */
unsigned max_root_rows; /* Maximum # of rows in root indirect block */
unsigned max_direct_rows; /* Maximum # of direct rows in any indirect block */
unsigned max_dir_blk_off_size; /* Max. size of offsets in direct blocks */
- unsigned first_row_bits; /* # of bits in address of first row */
+ unsigned first_row_bits; /* # of bits in address of first row */
hsize_t num_id_first_row; /* Number of IDs in first row of table */
hsize_t *row_block_size; /* Block size per row of indirect block */
+ hsize_t *row_block_off; /* Cumulative offset per row of indirect block */
} H5HF_dtable_t;
/* Fractal heap free list info (forward decl - defined in H5HFflist.c) */
@@ -208,6 +201,7 @@ typedef struct H5HF_t {
size_t sizeof_size; /* Size of file sizes */
size_t sizeof_addr; /* Size of file addresses */
H5HF_freelist_t *flist; /* Free list for objects in heap */
+ size_t id_len; /* Size of heap IDs */
/* Doubling table information */
/* (Partially set by user, partially derived/updated internally) */
@@ -374,7 +368,7 @@ H5_DLL herr_t H5HF_man_insert(H5HF_t *fh, hid_t dxpl_id,
H5HF_section_free_node_t *sec_node, size_t obj_size, const void *obj,
void *id);
H5_DLL herr_t H5HF_man_read(H5HF_t *fh, hid_t dxpl_id, hsize_t obj_off,
- void *obj);
+ size_t obj_len, void *obj);
/* Metadata cache callbacks */
H5_DLL herr_t H5HF_cache_hdr_dest(H5F_t *f, H5HF_t *fh);