diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2006-10-02 09:57:26 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2006-10-02 09:57:26 (GMT) |
commit | 9bc29ea538b9ce2013a8cde5be230c18cf052009 (patch) | |
tree | 0cafa58d457568fe89a36243caef60da30571af6 /src/H5HFpkg.h | |
parent | a03647db10e8f80b9ff132b8e43a795547ffad42 (diff) | |
download | hdf5-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.h | 7 |
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); |