summaryrefslogtreecommitdiffstats
path: root/src/H5HFpkg.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2006-08-07 19:51:59 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2006-08-07 19:51:59 (GMT)
commit4f289e5b9240807d9fa5561fd793981334a9f086 (patch)
tree8a22e083cdab59a3af1577fe5c50f6054b22e958 /src/H5HFpkg.h
parent80b1c44327f56c2e7edd75389e5b3b5a9b5ea833 (diff)
downloadhdf5-4f289e5b9240807d9fa5561fd793981334a9f086.zip
hdf5-4f289e5b9240807d9fa5561fd793981334a9f086.tar.gz
hdf5-4f289e5b9240807d9fa5561fd793981334a9f086.tar.bz2
[svn-r12551] Description:
Refactor fields in heap header to clean out information from dropped features and also group related fields together more nicely. Add fields to heap header for storing information about "huge" objects. Platforms tested: Linux/32 2.6 (chicago) Linux/64 2.6 (chicago)
Diffstat (limited to 'src/H5HFpkg.h')
-rw-r--r--src/H5HFpkg.h31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/H5HFpkg.h b/src/H5HFpkg.h
index b3b0951..25616f8 100644
--- a/src/H5HFpkg.h
+++ b/src/H5HFpkg.h
@@ -67,23 +67,37 @@
+ 2 /* Current # of rows in root indirect block */ \
)
+/* Flags for status byte */
+#define H5HF_HDR_FLAGS_HUGE_ID_WRAPPED 0x01
+
/* Size of the fractal heap header on disk */
#define H5HF_HEADER_SIZE(h) ( \
/* General metadata fields */ \
H5HF_METADATA_PREFIX_SIZE \
\
- /* Fractal heap header specific fields */ \
- + 1 /* Address mapping mode */ \
- + 4 /* Min. size of standalone object */ \
+ /* Fractal Heap Header specific fields */ \
+ \
+ /* General heap information */ \
+ + 1 /* Status flags */ \
+ \
+ /* "Huge" object fields */ \
+ + 4 /* Max. size of "managed" object */ \
+ + (h)->sizeof_size /* Next ID for "huge" object */ \
+ + (h)->sizeof_addr /* File address of "huge" object tracker B-tree */ \
+ \
+ /* "Managed" object free space fields */ \
+ (h)->sizeof_size /* Total man. free space */ \
- + (h)->sizeof_size /* Total std. free entries */ \
+ (h)->sizeof_addr /* File address of free section header */ \
+ \
+ /* Statistics fields */ \
+ (h)->sizeof_size /* Total size of heap */ \
+ (h)->sizeof_size /* Size of man. space in heap */ \
+ (h)->sizeof_size /* Size of man. space iterator offset in heap */ \
+ (h)->sizeof_size /* Size of alloacted man. space in heap */ \
+ (h)->sizeof_size /* Size of std. space in heap */ \
+ (h)->sizeof_size /* Number of objects in heap */ \
+ \
+ /* "Managed" object doubling table info */ \
+ H5HF_DTABLE_INFO_SIZE(h) /* Size of managed obj. doubling-table info */ \
)
@@ -279,7 +293,6 @@ typedef struct H5HF_hdr_t {
/* Shared internal information (varies during lifetime of heap) */
hsize_t total_man_free; /* Total amount of free space in managed blocks */
- hsize_t total_std_free; /* Total # of free standalone ID entries */
haddr_t fs_addr; /* Address of free space header on disk */
/* Statistics for heap */
@@ -306,9 +319,10 @@ typedef struct H5HF_hdr_t {
/* (Partially set by user, partially derived/updated internally) */
H5HF_dtable_t man_dtable; /* Doubling-table info for managed objects */
- /* Information set by user */
- H5HF_addrmap_t addrmap; /* Type of address mapping */
- uint32_t standalone_size; /* Size of object to store standalone */
+ /* "Huge" object support (stored in header) */
+ uint32_t max_man_size; /* Max. size of object to manage in doubling table */
+ hsize_t huge_next_id; /* Next ID to use for "huge" object */
+ haddr_t huge_bt_addr; /* Address of B-tree for storing "huge" object info */
/* Information derived from user parameters (not stored in header) */
unsigned char heap_off_size; /* Size of heap offsets (in bytes) */
@@ -316,6 +330,7 @@ typedef struct H5HF_hdr_t {
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? */
hbool_t write_once; /* Is heap being written in "write once" mode? */
+ hbool_t huge_ids_wrapped; /* Have "huge" object IDs wrapped around? */
} H5HF_hdr_t;
/* Indirect block entry */