diff options
author | Quincey Koziol <koziol@hdfgroup.org> | 2016-06-13 17:49:39 (GMT) |
---|---|---|
committer | Quincey Koziol <koziol@hdfgroup.org> | 2016-06-13 17:49:39 (GMT) |
commit | 7a9e13afdb134bafc070cf8bd2087a84fd0d2334 (patch) | |
tree | c16578adf13fb9312870afff86332ad190add859 /src/H5Cpkg.h | |
parent | 1db1d99883397d92dc6984841fecfc391c52676d (diff) | |
download | hdf5-7a9e13afdb134bafc070cf8bd2087a84fd0d2334.zip hdf5-7a9e13afdb134bafc070cf8bd2087a84fd0d2334.tar.gz hdf5-7a9e13afdb134bafc070cf8bd2087a84fd0d2334.tar.bz2 |
[svn-r30068] Description:
Bring metadata cache corking to trunk.
Tested on:
MacOSX/64 10.11.5 (amazon) w/serial, parallel & production
(h5committest forthcoming)
Diffstat (limited to 'src/H5Cpkg.h')
-rw-r--r-- | src/H5Cpkg.h | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/H5Cpkg.h b/src/H5Cpkg.h index d7da17b..fe2be2f 100644 --- a/src/H5Cpkg.h +++ b/src/H5Cpkg.h @@ -3482,6 +3482,11 @@ if ( ( (entry_ptr) == NULL ) || \ * to the slist since the last time this field was set to * zero. Note that this value can be negative. * + * cork_list_ptr: A skip list to track object addresses that are corked. + * When an entry is inserted or protected in the cache, + * the entry's associated object address (tag field) is + * checked against this skip list. If found, the entry + * is corked. * * When a cache entry is protected, it must be removed from the LRU * list(s) as it cannot be either flushed or evicted until it is unprotected. @@ -4111,6 +4116,8 @@ struct H5C_t { int64_t slist_size_increase; #endif /* H5C_DO_SANITY_CHECKS */ + H5SL_t * cork_list_ptr; /* list of corked object addresses */ + /* Fields for tracking protected entries */ int32_t pl_len; size_t pl_size; @@ -4260,6 +4267,9 @@ typedef struct H5C_collective_write_t { } H5C_collective_write_t; #endif /* H5_HAVE_PARALLEL */ +/* Define typedef for tagged cache entry iteration callbacks */ +typedef int (*H5C_tag_iter_cb_t)(H5C_cache_entry_t *entry, void *ctx); + /*****************************/ /* Package Private Variables */ @@ -4277,6 +4287,8 @@ H5_DLLVAR const H5C_class_t H5C__epoch_marker_class; H5_DLL herr_t H5C__flush_single_entry(const H5F_t *f, hid_t dxpl_id, H5C_cache_entry_t *entry_ptr, unsigned flags, int64_t *entry_size_change_ptr, H5SL_t *collective_write_list); H5_DLL herr_t H5C__flush_marked_entries(H5F_t * f, hid_t dxpl_id); +H5_DLL int H5C__iter_tagged_entries(H5C_t *cache, haddr_t tag, hbool_t match_global, + H5C_tag_iter_cb_t cb, void *cb_ctx); /* Routines for operating on entry tags */ H5_DLL herr_t H5C__tag_entry(H5C_t * cache_ptr, H5C_cache_entry_t * entry_ptr, @@ -4284,5 +4296,10 @@ H5_DLL herr_t H5C__tag_entry(H5C_t * cache_ptr, H5C_cache_entry_t * entry_ptr, H5_DLL herr_t H5C__mark_tagged_entries_cork(H5C_t *cache_ptr, haddr_t obj_addr, hbool_t val); +/* Testing functions */ +#ifdef H5C_TESTING +H5_DLL herr_t H5C__verify_cork_tag_test(hid_t fid, haddr_t tag, hbool_t status); +#endif /* H5C_TESTING */ + #endif /* _H5Cpkg_H */ |