summaryrefslogtreecommitdiffstats
path: root/src/H5HFpkg.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2006-10-02 09:57:26 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2006-10-02 09:57:26 (GMT)
commit9bc29ea538b9ce2013a8cde5be230c18cf052009 (patch)
tree0cafa58d457568fe89a36243caef60da30571af6 /src/H5HFpkg.h
parenta03647db10e8f80b9ff132b8e43a795547ffad42 (diff)
downloadhdf5-9bc29ea538b9ce2013a8cde5be230c18cf052009.zip
hdf5-9bc29ea538b9ce2013a8cde5be230c18cf052009.tar.gz
hdf5-9bc29ea538b9ce2013a8cde5be230c18cf052009.tar.bz2
[svn-r12699] Description:
Fix problems with opening a fractal heap multiple times, from different file handles. Tested on: FreeBSD/32 4.11 (sleipnir) w/threadsafe Linux/32 2.4 (heping) w/FORTRAN & C++ Linux/64 2.4 (mir) w/enable-v1.6 Mac OS/32 10.4.8 (amazon)
Diffstat (limited to 'src/H5HFpkg.h')
-rw-r--r--src/H5HFpkg.h7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/H5HFpkg.h b/src/H5HFpkg.h
index 75e23d0..0b9c74d 100644
--- a/src/H5HFpkg.h
+++ b/src/H5HFpkg.h
@@ -342,12 +342,13 @@ typedef struct H5HF_hdr_t {
hsize_t tiny_nobjs; /* Number of 'tiny' objects in heap */
/* Cached/computed values (not stored in header) */
- size_t rc; /* Reference count of objects using heap header */
+ size_t rc; /* Reference count of heap's components using heap header */
hbool_t dirty; /* Shared info is modified */
haddr_t heap_addr; /* Address of heap header in the file */
size_t heap_size; /* Size of heap header in the file */
H5AC_protect_t mode; /* Access mode for heap */
H5F_t *f; /* Pointer to file for heap */
+ size_t file_rc; /* Reference count of files using heap header */
size_t sizeof_size; /* Size of file sizes */
size_t sizeof_addr; /* Size of file addresses */
struct H5HF_indirect_t *root_iblock; /* Pointer to pinned root indirect block */
@@ -419,7 +420,7 @@ typedef struct H5HF_direct_t {
/* Fractal heap */
struct H5HF_t {
H5HF_hdr_t *hdr; /* Pointer to internal fractal heap header info */
- unsigned fo_count; /* Open object count for file */
+ H5F_t *f; /* Pointer to file for heap */
};
/* Fractal heap "parent info" (for loading a block) */
@@ -554,6 +555,8 @@ 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);
H5_DLL herr_t H5HF_hdr_incr(H5HF_hdr_t *hdr);
H5_DLL herr_t H5HF_hdr_decr(H5HF_hdr_t *hdr);
+H5_DLL herr_t H5HF_hdr_fuse_incr(H5HF_hdr_t *hdr);
+H5_DLL size_t H5HF_hdr_fuse_decr(H5HF_hdr_t *hdr);
H5_DLL herr_t H5HF_hdr_dirty(H5HF_hdr_t *hdr);
H5_DLL herr_t H5HF_hdr_adj_free(H5HF_hdr_t *hdr, ssize_t amt);
H5_DLL herr_t H5HF_hdr_adjust_heap(H5HF_hdr_t *hdr, hsize_t new_size, hssize_t extra_free);