summaryrefslogtreecommitdiffstats
path: root/src/H5Cprefetched.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5Cprefetched.c')
-rw-r--r--src/H5Cprefetched.c193
1 files changed, 83 insertions, 110 deletions
diff --git a/src/H5Cprefetched.c b/src/H5Cprefetched.c
index 0befdf9..c5f391e 100644
--- a/src/H5Cprefetched.c
+++ b/src/H5Cprefetched.c
@@ -6,7 +6,7 @@
* This file is part of HDF5. The full HDF5 copyright notice, including *
* terms governing use, modification, and redistribution, is contained in *
* the COPYING file, which can be found at the root of the source code *
- * distribution tree, or in https://support.hdfgroup.org/ftp/HDF5/releases. *
+ * distribution tree, or in https://www.hdfgroup.org/licenses. *
* If you do not have access to either file, you may request a copy from *
* help@hdfgroup.org. *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
@@ -22,26 +22,22 @@
*-------------------------------------------------------------------------
*/
-
/***********/
/* Headers */
/***********/
-#include "H5private.h" /* Generic Functions */
-#include "H5ACprivate.h" /* Metadata cache */
-#include "H5FLprivate.h" /* Free Lists */
-#include "H5MMprivate.h" /* Memory management */
-
+#include "H5private.h" /* Generic Functions */
+#include "H5ACprivate.h" /* Metadata cache */
+#include "H5FLprivate.h" /* Free Lists */
+#include "H5MMprivate.h" /* Memory management */
/****************/
/* Local Macros */
/****************/
-
/******************/
/* Local Typedefs */
/******************/
-
/********************/
/* Local Prototypes */
/********************/
@@ -51,27 +47,20 @@
* Declarations for prefetched cache entry callbacks.
*
****************************************************************************/
-static herr_t H5C__prefetched_entry_get_initial_load_size(void *udata_ptr,
- size_t *image_len_ptr);
-static herr_t H5C__prefetched_entry_get_final_load_size(const void *image_ptr,
- size_t image_len, void *udata_ptr, size_t *actual_len_ptr);
-static htri_t H5C__prefetched_entry_verify_chksum(const void *image_ptr,
- size_t len, void *udata_ptr);
-static void * H5C__prefetched_entry_deserialize(const void *image_ptr,
- size_t len, void *udata, hbool_t *dirty_ptr);
-static herr_t H5C__prefetched_entry_image_len(const void *thing,
- size_t *image_len_ptr);
-static herr_t H5C__prefetched_entry_pre_serialize(H5F_t *f, void *thing,
- haddr_t addr, size_t len, haddr_t *new_addr_ptr, size_t *new_len_ptr,
- unsigned *flags_ptr);
-static herr_t H5C__prefetched_entry_serialize(const H5F_t *f, void *image_ptr,
- size_t len, void *thing);
-static herr_t H5C__prefetched_entry_notify(H5C_notify_action_t action,
- void *thing);
+static herr_t H5C__prefetched_entry_get_initial_load_size(void *udata_ptr, size_t *image_len_ptr);
+static herr_t H5C__prefetched_entry_get_final_load_size(const void *image_ptr, size_t image_len,
+ void *udata_ptr, size_t *actual_len_ptr);
+static htri_t H5C__prefetched_entry_verify_chksum(const void *image_ptr, size_t len, void *udata_ptr);
+static void * H5C__prefetched_entry_deserialize(const void *image_ptr, size_t len, void *udata,
+ hbool_t *dirty_ptr);
+static herr_t H5C__prefetched_entry_image_len(const void *thing, size_t *image_len_ptr);
+static herr_t H5C__prefetched_entry_pre_serialize(H5F_t *f, void *thing, haddr_t addr, size_t len,
+ haddr_t *new_addr_ptr, size_t *new_len_ptr,
+ unsigned *flags_ptr);
+static herr_t H5C__prefetched_entry_serialize(const H5F_t *f, void *image_ptr, size_t len, void *thing);
+static herr_t H5C__prefetched_entry_notify(H5C_notify_action_t action, void *thing);
static herr_t H5C__prefetched_entry_free_icr(void *thing);
-static herr_t H5C__prefetched_entry_fsf_size(const void *thing,
- hsize_t *fsf_size_ptr);
-
+static herr_t H5C__prefetched_entry_fsf_size(const void *thing, hsize_t *fsf_size_ptr);
/*********************/
/* Package Variables */
@@ -80,17 +69,14 @@ static herr_t H5C__prefetched_entry_fsf_size(const void *thing,
/* Declare external the free list for H5C_cache_entry_t's */
H5FL_EXTERN(H5C_cache_entry_t);
-
/*****************************/
/* Library Private Variables */
/*****************************/
-
/*******************/
/* Local Variables */
/*******************/
-
const H5AC_class_t H5AC_PREFETCHED_ENTRY[1] = {{
/* id = */ H5AC_PREFETCHED_ENTRY_ID,
/* name = */ "prefetched entry",
@@ -108,110 +94,100 @@ const H5AC_class_t H5AC_PREFETCHED_ENTRY[1] = {{
/* fsf_size = */ H5C__prefetched_entry_fsf_size,
}};
-
-
/***************************************************************************
- * With two exceptions, these functions should never be called, and thus
+ * With two exceptions, these functions should never be called, and thus
* there is little point in documenting them separately as they all simply
* throw an error.
*
* See header comments for the two exceptions (free_icr and notify).
- *
+ *
* JRM - 8/13/15
*
***************************************************************************/
static herr_t
H5C__prefetched_entry_get_initial_load_size(void H5_ATTR_UNUSED *udata_ptr,
- size_t H5_ATTR_UNUSED *image_len_ptr)
+ size_t H5_ATTR_UNUSED *image_len_ptr)
{
- FUNC_ENTER_STATIC_NOERR /* Yes, even though this pushes an error on the stack */
+ FUNC_ENTER_PACKAGE_NOERR /* Yes, even though this pushes an error on the stack */
- HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
+ HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
FUNC_LEAVE_NOAPI(FAIL)
} /* end H5C__prefetched_entry_get_initial_load_size() */
static herr_t
H5C__prefetched_entry_get_final_load_size(const void H5_ATTR_UNUSED *image_ptr,
- size_t H5_ATTR_UNUSED image_len, void H5_ATTR_UNUSED *udata_ptr,
- size_t H5_ATTR_UNUSED *actual_len_ptr)
+ size_t H5_ATTR_UNUSED image_len, void H5_ATTR_UNUSED *udata_ptr,
+ size_t H5_ATTR_UNUSED *actual_len_ptr)
{
- FUNC_ENTER_STATIC_NOERR /* Yes, even though this pushes an error on the stack */
+ FUNC_ENTER_PACKAGE_NOERR /* Yes, even though this pushes an error on the stack */
- HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
+ HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
FUNC_LEAVE_NOAPI(FAIL)
} /* end H5C__prefetched_entry_get_final_load_size() */
static htri_t
-H5C__prefetched_entry_verify_chksum(const void H5_ATTR_UNUSED *image_ptr,
- size_t H5_ATTR_UNUSED len, void H5_ATTR_UNUSED *udata_ptr)
+H5C__prefetched_entry_verify_chksum(const void H5_ATTR_UNUSED *image_ptr, size_t H5_ATTR_UNUSED len,
+ void H5_ATTR_UNUSED *udata_ptr)
{
- FUNC_ENTER_STATIC_NOERR /* Yes, even though this pushes an error on the stack */
+ FUNC_ENTER_PACKAGE_NOERR /* Yes, even though this pushes an error on the stack */
- HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
+ HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
FUNC_LEAVE_NOAPI(FAIL)
} /* end H5C__prefetched_verify_chksum() */
-
static void *
-H5C__prefetched_entry_deserialize(const void H5_ATTR_UNUSED * image_ptr,
- size_t H5_ATTR_UNUSED len, void H5_ATTR_UNUSED * udata,
- hbool_t H5_ATTR_UNUSED * dirty_ptr)
+H5C__prefetched_entry_deserialize(const void H5_ATTR_UNUSED *image_ptr, size_t H5_ATTR_UNUSED len,
+ void H5_ATTR_UNUSED *udata, hbool_t H5_ATTR_UNUSED *dirty_ptr)
{
- FUNC_ENTER_STATIC_NOERR /* Yes, even though this pushes an error on the stack */
+ FUNC_ENTER_PACKAGE_NOERR /* Yes, even though this pushes an error on the stack */
- HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
+ HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
FUNC_LEAVE_NOAPI(NULL)
} /* end H5C__prefetched_entry_deserialize() */
-
static herr_t
-H5C__prefetched_entry_image_len(const void H5_ATTR_UNUSED *thing,
- size_t H5_ATTR_UNUSED *image_len_ptr)
+H5C__prefetched_entry_image_len(const void H5_ATTR_UNUSED *thing, size_t H5_ATTR_UNUSED *image_len_ptr)
{
- FUNC_ENTER_STATIC_NOERR /* Yes, even though this pushes an error on the stack */
+ FUNC_ENTER_PACKAGE_NOERR /* Yes, even though this pushes an error on the stack */
- HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
+ HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
FUNC_LEAVE_NOAPI(FAIL)
} /* end H5C__prefetched_entry_image_len() */
-
static herr_t
-H5C__prefetched_entry_pre_serialize(H5F_t H5_ATTR_UNUSED *f, void H5_ATTR_UNUSED *thing,
- haddr_t H5_ATTR_UNUSED addr, size_t H5_ATTR_UNUSED len,
- haddr_t H5_ATTR_UNUSED *new_addr_ptr, size_t H5_ATTR_UNUSED *new_len_ptr,
- unsigned H5_ATTR_UNUSED *flags_ptr)
+H5C__prefetched_entry_pre_serialize(H5F_t H5_ATTR_UNUSED *f, void H5_ATTR_UNUSED *thing,
+ haddr_t H5_ATTR_UNUSED addr, size_t H5_ATTR_UNUSED len,
+ haddr_t H5_ATTR_UNUSED *new_addr_ptr, size_t H5_ATTR_UNUSED *new_len_ptr,
+ unsigned H5_ATTR_UNUSED *flags_ptr)
{
- FUNC_ENTER_STATIC_NOERR /* Yes, even though this pushes an error on the stack */
+ FUNC_ENTER_PACKAGE_NOERR /* Yes, even though this pushes an error on the stack */
- HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
+ HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
FUNC_LEAVE_NOAPI(FAIL)
} /* end H5C__prefetched_entry_pre_serialize() */
-
static herr_t
-H5C__prefetched_entry_serialize(const H5F_t H5_ATTR_UNUSED *f,
- void H5_ATTR_UNUSED *image_ptr,
- size_t H5_ATTR_UNUSED len, void H5_ATTR_UNUSED *thing)
+H5C__prefetched_entry_serialize(const H5F_t H5_ATTR_UNUSED *f, void H5_ATTR_UNUSED *image_ptr,
+ size_t H5_ATTR_UNUSED len, void H5_ATTR_UNUSED *thing)
{
- FUNC_ENTER_STATIC_NOERR /* Yes, even though this pushes an error on the stack */
+ FUNC_ENTER_PACKAGE_NOERR /* Yes, even though this pushes an error on the stack */
- HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
+ HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
FUNC_LEAVE_NOAPI(FAIL)
} /* end H5C__prefetched_entry_serialize() */
-
/*-------------------------------------------------------------------------
* Function: H5C__prefetched_entry_notify
*
- * Purpose: On H5AC_NOTIFY_ACTION_BEFORE_EVICT, check to see if the
+ * Purpose: On H5AC_NOTIFY_ACTION_BEFORE_EVICT, check to see if the
* target entry is a child in a flush dependency relationship.
* If it is, destroy that flush dependency relationship.
*
@@ -228,33 +204,33 @@ H5C__prefetched_entry_serialize(const H5F_t H5_ATTR_UNUSED *f,
static herr_t
H5C__prefetched_entry_notify(H5C_notify_action_t action, void *_thing)
{
- H5C_cache_entry_t * entry_ptr = (H5C_cache_entry_t *)_thing;
- unsigned u;
- herr_t ret_value = SUCCEED;
+ H5C_cache_entry_t *entry_ptr = (H5C_cache_entry_t *)_thing;
+ unsigned u;
+ herr_t ret_value = SUCCEED;
- FUNC_ENTER_STATIC
+ FUNC_ENTER_PACKAGE
/* Sanity checks */
HDassert(entry_ptr);
HDassert(entry_ptr->magic == H5C__H5C_CACHE_ENTRY_T_MAGIC);
HDassert(entry_ptr->prefetched);
- switch(action) {
+ switch (action) {
case H5C_NOTIFY_ACTION_AFTER_INSERT:
case H5C_NOTIFY_ACTION_AFTER_LOAD:
case H5C_NOTIFY_ACTION_AFTER_FLUSH:
- case H5C_NOTIFY_ACTION_ENTRY_DIRTIED:
- case H5C_NOTIFY_ACTION_ENTRY_CLEANED:
- case H5C_NOTIFY_ACTION_CHILD_DIRTIED:
- case H5C_NOTIFY_ACTION_CHILD_CLEANED:
- case H5C_NOTIFY_ACTION_CHILD_UNSERIALIZED:
- case H5C_NOTIFY_ACTION_CHILD_SERIALIZED:
+ case H5C_NOTIFY_ACTION_ENTRY_DIRTIED:
+ case H5C_NOTIFY_ACTION_ENTRY_CLEANED:
+ case H5C_NOTIFY_ACTION_CHILD_DIRTIED:
+ case H5C_NOTIFY_ACTION_CHILD_CLEANED:
+ case H5C_NOTIFY_ACTION_CHILD_UNSERIALIZED:
+ case H5C_NOTIFY_ACTION_CHILD_SERIALIZED:
/* do nothing */
break;
case H5C_NOTIFY_ACTION_BEFORE_EVICT:
- for(u = 0; u < entry_ptr->flush_dep_nparents; u++) {
- H5C_cache_entry_t * parent_ptr;
+ for (u = 0; u < entry_ptr->flush_dep_nparents; u++) {
+ H5C_cache_entry_t *parent_ptr;
/* Sanity checks */
HDassert(entry_ptr->flush_dep_parent);
@@ -264,19 +240,20 @@ H5C__prefetched_entry_notify(H5C_notify_action_t action, void *_thing)
HDassert(parent_ptr->flush_dep_nchildren > 0);
/* Destroy flush dependency with flush dependency parent */
- if(H5C_destroy_flush_dependency(parent_ptr, entry_ptr) < 0)
- HGOTO_ERROR(H5E_CACHE, H5E_CANTUNDEPEND, FAIL, "unable to destroy prefetched entry flush dependency")
-
- if(parent_ptr->prefetched) {
- /* In prefetched entries, the fd_child_count field is
- * used in sanity checks elsewhere. Thus update this
- * field to reflect the destruction of the flush
+ if (H5C_destroy_flush_dependency(parent_ptr, entry_ptr) < 0)
+ HGOTO_ERROR(H5E_CACHE, H5E_CANTUNDEPEND, FAIL,
+ "unable to destroy prefetched entry flush dependency")
+
+ if (parent_ptr->prefetched) {
+ /* In prefetched entries, the fd_child_count field is
+ * used in sanity checks elsewhere. Thus update this
+ * field to reflect the destruction of the flush
* dependency relationship.
*/
HDassert(parent_ptr->fd_child_count > 0);
(parent_ptr->fd_child_count)--;
} /* end if */
- } /* end for */
+ } /* end for */
break;
default:
@@ -288,7 +265,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5C__prefetched_entry_notify() */
-
/*-------------------------------------------------------------------------
* Function: H5C__prefetched_entry_free_icr
*
@@ -308,9 +284,9 @@ static herr_t
H5C__prefetched_entry_free_icr(void *_thing)
{
H5C_cache_entry_t *entry_ptr = (H5C_cache_entry_t *)_thing;
- herr_t ret_value = SUCCEED;
+ herr_t ret_value = SUCCEED;
- FUNC_ENTER_STATIC
+ FUNC_ENTER_PACKAGE
/* Sanity checks */
HDassert(entry_ptr);
@@ -318,15 +294,15 @@ H5C__prefetched_entry_free_icr(void *_thing)
HDassert(entry_ptr->prefetched);
/* Release array for flush dependency parent addresses */
- if(entry_ptr->fd_parent_addrs != NULL) {
- HDassert(entry_ptr->fd_parent_count > 0);
- entry_ptr->fd_parent_addrs = (haddr_t *)H5MM_xfree((void *)entry_ptr->fd_parent_addrs);
+ if (entry_ptr->fd_parent_addrs != NULL) {
+ HDassert(entry_ptr->fd_parent_count > 0);
+ entry_ptr->fd_parent_addrs = (haddr_t *)H5MM_xfree((void *)entry_ptr->fd_parent_addrs);
} /* end if */
else
- HDassert(entry_ptr->fd_parent_count == 0);
+ HDassert(entry_ptr->fd_parent_count == 0);
- if(entry_ptr->image_ptr != NULL)
- HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "prefetched entry image buffer still attatched?")
+ if (entry_ptr->image_ptr != NULL)
+ HGOTO_ERROR(H5E_CACHE, H5E_SYSTEM, FAIL, "prefetched entry image buffer still attached?")
entry_ptr = H5FL_FREE(H5C_cache_entry_t, entry_ptr);
@@ -334,15 +310,12 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5C__prefetched_entry_free_icr() */
-
-static herr_t
-H5C__prefetched_entry_fsf_size(const void H5_ATTR_UNUSED *thing,
- hsize_t H5_ATTR_UNUSED *fsf_size_ptr)
+static herr_t
+H5C__prefetched_entry_fsf_size(const void H5_ATTR_UNUSED *thing, hsize_t H5_ATTR_UNUSED *fsf_size_ptr)
{
- FUNC_ENTER_STATIC_NOERR /* Yes, even though this pushes an error on the stack */
+ FUNC_ENTER_PACKAGE_NOERR /* Yes, even though this pushes an error on the stack */
- HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
+ HERROR(H5E_CACHE, H5E_SYSTEM, "called unreachable fcn.");
FUNC_LEAVE_NOAPI(FAIL)
} /* end H5C__prefetched_entry_fsf_size() */
-