summaryrefslogtreecommitdiffstats
path: root/src/H5Cprivate.h
diff options
context:
space:
mode:
authorQuincey Koziol <koziol@hdfgroup.org>2016-05-01 10:24:56 (GMT)
committerQuincey Koziol <koziol@hdfgroup.org>2016-05-01 10:24:56 (GMT)
commita6ce3d4e45faab4691a6181a8ce6197157aea21a (patch)
tree35fa8c0766f7408609d5d55731c52d8ca84288a9 /src/H5Cprivate.h
parentac72823bc2a538be8365854a2d3c6f42cf1d5b62 (diff)
downloadhdf5-a6ce3d4e45faab4691a6181a8ce6197157aea21a.zip
hdf5-a6ce3d4e45faab4691a6181a8ce6197157aea21a.tar.gz
hdf5-a6ce3d4e45faab4691a6181a8ce6197157aea21a.tar.bz2
[svn-r29850] Description:
Bring H5DOappend(), H5P[s|g]et_object_flush_cb, and H5P[s|g]et_append_flush from revise_chunks branch to trunk. Brings along updated metadata cache entry tagging, and the internal object flush routine. Tested on: MacOSX/64 10.11.4 (amazon) w/serial, parallel & production (h5committest forthcoming)
Diffstat (limited to 'src/H5Cprivate.h')
-rw-r--r--src/H5Cprivate.h35
1 files changed, 29 insertions, 6 deletions
diff --git a/src/H5Cprivate.h b/src/H5Cprivate.h
index a062214..d43c845 100644
--- a/src/H5Cprivate.h
+++ b/src/H5Cprivate.h
@@ -205,12 +205,17 @@
#define H5C__FLUSH_MARKED_ENTRIES_FLAG 0x0080
#define H5C__FLUSH_IGNORE_PROTECTED_FLAG 0x0100
#define H5C__READ_ONLY_FLAG 0x0200
-#define H5C__FREE_FILE_SPACE_FLAG 0x0800
-#define H5C__TAKE_OWNERSHIP_FLAG 0x1000
-#define H5C__FLUSH_LAST_FLAG 0x2000
-#define H5C__FLUSH_COLLECTIVELY_FLAG 0x4000
+#define H5C__FREE_FILE_SPACE_FLAG 0x0400
+#define H5C__TAKE_OWNERSHIP_FLAG 0x0800
+#define H5C__FLUSH_LAST_FLAG 0x1000
+#define H5C__FLUSH_COLLECTIVELY_FLAG 0x2000
#define H5C__DEL_FROM_SLIST_ON_DESTROY_FLAG 0x8000
+/* Definitions for cache "tag" property */
+#define H5C_TAG_NAME "H5C_tag"
+#define H5C_TAG_SIZE sizeof(H5C_tag_t)
+#define H5C_TAG_DEF {(haddr_t)0, H5C_GLOBALITY_NONE}
+
/* Debugging/sanity checking/statistics settings */
#ifndef NDEBUG
#define H5C_DO_SANITY_CHECKS 1
@@ -268,8 +273,20 @@
/* Typedef for the main structure for the cache (defined in H5Cpkg.h) */
typedef struct H5C_t H5C_t;
+/* Define enum for cache entry tag 'globality' value */
+typedef enum {
+ H5C_GLOBALITY_NONE=0, /* Non-global tag */
+ H5C_GLOBALITY_MINOR, /* global, not flushed during single object flush */
+ H5C_GLOBALITY_MAJOR /* global, needs flushed during single obect flush */
+} H5C_tag_globality_t;
+
+/* Cache entry tag structure */
+typedef struct H5C_tag_t {
+ haddr_t value;
+ H5C_tag_globality_t globality;
+} H5C_tag_t;
-/***************************************************************************
+/*
*
* Struct H5C_class_t
*
@@ -1596,6 +1613,7 @@ typedef struct H5C_cache_entry_t {
hbool_t image_up_to_date;
const H5C_class_t * type;
haddr_t tag;
+ H5C_tag_globality_t globality;
hbool_t is_dirty;
hbool_t dirtied;
hbool_t is_protected;
@@ -1951,6 +1969,10 @@ H5_DLL herr_t H5C_dest(H5F_t *f, hid_t dxpl_id);
H5_DLL herr_t H5C_expunge_entry(H5F_t *f, hid_t dxpl_id,
const H5C_class_t *type, haddr_t addr, unsigned flags);
H5_DLL herr_t H5C_flush_cache(H5F_t *f, hid_t dxpl_id, unsigned flags);
+H5_DLL herr_t H5C_flush_tagged_entries(H5F_t * f, hid_t dxpl_id, haddr_t tag);
+#if H5C_DO_TAGGING_SANITY_CHECKS
+herr_t H5C_verify_tag(int id, haddr_t tag, H5C_tag_globality_t globality);
+#endif
H5_DLL herr_t H5C_flush_to_min_clean(H5F_t *f, hid_t dxpl_id);
H5_DLL herr_t H5C_get_cache_auto_resize_config(const H5C_t *cache_ptr,
H5C_auto_size_ctl_t *config_ptr);
@@ -1992,7 +2014,8 @@ H5_DLL herr_t H5C_unprotect(H5F_t *f, hid_t dxpl_id, haddr_t addr, void *thing,
H5_DLL herr_t H5C_validate_resize_config(H5C_auto_size_ctl_t *config_ptr,
unsigned int tests);
H5_DLL herr_t H5C_ignore_tags(H5C_t *cache_ptr);
-H5_DLL void H5C_retag_copied_metadata(H5C_t *cache_ptr, haddr_t metadata_tag);
+H5_DLL hbool_t H5C_get_ignore_tags(const H5C_t *cache_ptr);
+H5_DLL void H5C_retag_entries(H5C_t * cache_ptr, haddr_t src_tag, haddr_t dest_tag);
H5_DLL herr_t H5C_get_entry_ring(const H5F_t *f, haddr_t addr, H5C_ring_t *ring);
#ifdef H5_HAVE_PARALLEL