summaryrefslogtreecommitdiffstats
path: root/src/H5Cpkg.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2016-06-13 17:49:39 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2016-06-13 17:49:39 (GMT)
commit7a9e13afdb134bafc070cf8bd2087a84fd0d2334 (patch)
treec16578adf13fb9312870afff86332ad190add859 /src/H5Cpkg.h
parent1db1d99883397d92dc6984841fecfc391c52676d (diff)
downloadhdf5-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.h17
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 */