summaryrefslogtreecommitdiffstats
path: root/src/H5MM.c
diff options
context:
space:
mode:
authorDana Robinson <derobins@hdfgroup.org>2020-07-09 15:29:34 (GMT)
committerDana Robinson <derobins@hdfgroup.org>2020-07-09 15:29:34 (GMT)
commita1dd404892edceed2b1858dd9ea8db924866747f (patch)
treec95ac0481b28d68927db7749ec44740ddc2e9443 /src/H5MM.c
parent2e7e454537f6852c677180167f3d29df9263996f (diff)
parent30c756decb6101704a925443d623301656ba60e4 (diff)
downloadhdf5-a1dd404892edceed2b1858dd9ea8db924866747f.zip
hdf5-a1dd404892edceed2b1858dd9ea8db924866747f.tar.gz
hdf5-a1dd404892edceed2b1858dd9ea8db924866747f.tar.bz2
Merge pull request #2682 in HDFFV/hdf5 from ~DEROBINS/hdf5_der:h5s_1_10 to hdf5_1_10
* commit '30c756decb6101704a925443d623301656ba60e4': Misc normalizations with develop. Added missing types to bin/trace after develop normalization. More normalization with H5S from develop. Continued normalization of H5S with develop. Normalization of H5MM and H5FL with develop. Adds the new stats calls. Further normalization of H5S with develop
Diffstat (limited to 'src/H5MM.c')
-rw-r--r--src/H5MM.c52
1 files changed, 47 insertions, 5 deletions
diff --git a/src/H5MM.c b/src/H5MM.c
index 7eb1023..cceac4f 100644
--- a/src/H5MM.c
+++ b/src/H5MM.c
@@ -154,7 +154,7 @@ H5MM__is_our_block(void *mem)
*
*-------------------------------------------------------------------------
*/
-H5_ATTR_PURE static void
+static void
H5MM__sanity_check_block(const H5MM_block_t *block)
{
HDassert(block->u.info.size > 0);
@@ -180,7 +180,7 @@ H5MM__sanity_check_block(const H5MM_block_t *block)
*
*-------------------------------------------------------------------------
*/
-H5_ATTR_PURE static void
+static void
H5MM__sanity_check(void *mem)
{
H5MM_block_t *block = H5MM_BLOCK_FROM_BUF(mem);
@@ -201,7 +201,7 @@ H5MM__sanity_check(void *mem)
*
*-------------------------------------------------------------------------
*/
-H5_ATTR_PURE void
+void
H5MM_sanity_check_all(void)
{
H5MM_block_t *curr = NULL;
@@ -226,7 +226,7 @@ H5MM_sanity_check_all(void)
*
*-------------------------------------------------------------------------
*/
-H5_ATTR_PURE void
+void
H5MM_final_sanity_check(void)
{
HDassert(0 == H5MM_curr_alloc_bytes_s);
@@ -235,7 +235,7 @@ H5MM_final_sanity_check(void)
HDassert(H5MM_block_head_s.prev == &H5MM_block_head_s);
#ifdef H5MM_PRINT_MEMORY_STATS
HDfprintf(stderr, "%s: H5MM_total_alloc_bytes_s = %llu\n", __func__, H5MM_total_alloc_bytes_s);
- HDfprintf(stderr, "%s: H5MM_peak_alloc_bytes_s = %llu\n", __func__, H5MM_peak_alloc_bytes_s);
+ HDfprintf(stderr, "%s: H5MM_peak_alloc_bytes_s = %zu\n", __func__, H5MM_peak_alloc_bytes_s);
HDfprintf(stderr, "%s: H5MM_max_block_size_s = %zu\n", __func__, H5MM_max_block_size_s);
HDfprintf(stderr, "%s: H5MM_total_alloc_blocks_count_s = %zu\n", __func__, H5MM_total_alloc_blocks_count_s);
HDfprintf(stderr, "%s: H5MM_peak_alloc_blocks_count_s = %zu\n", __func__, H5MM_peak_alloc_blocks_count_s);
@@ -625,4 +625,46 @@ H5MM_memcpy(void *dest, const void *src, size_t n)
} /* end H5MM_memcpy() */
+
+/*-------------------------------------------------------------------------
+ * Function: H5MM_get_alloc_stats
+ *
+ * Purpose: Gets the memory allocation statistics for the library, if the
+ * H5_MEMORY_ALLOC_SANITY_CHECK macro is defined. If the macro is not
+ * defined, zeros are returned. These statistics are global for the
+ * entire library.
+ *
+ * Parameters:
+ * H5_alloc_stats_t *stats; OUT: Memory allocation statistics
+ *
+ * Return: Success: non-negative
+ * Failure: negative
+ *
+ * Programmer: Quincey Koziol
+ * Saturday, March 7, 2020
+ *
+ *-------------------------------------------------------------------------
+ */
+herr_t
+H5MM_get_alloc_stats(H5_alloc_stats_t *stats)
+{
+ FUNC_ENTER_NOAPI_NOERR
+
+#if defined H5_MEMORY_ALLOC_SANITY_CHECK
+ if(stats) {
+ stats->total_alloc_bytes = H5MM_total_alloc_bytes_s;
+ stats->curr_alloc_bytes = H5MM_curr_alloc_bytes_s;
+ stats->peak_alloc_bytes = H5MM_peak_alloc_bytes_s;
+ stats->max_block_size = H5MM_max_block_size_s;
+ stats->total_alloc_blocks_count = H5MM_total_alloc_blocks_count_s;
+ stats->curr_alloc_blocks_count = H5MM_curr_alloc_blocks_count_s;
+ stats->peak_alloc_blocks_count = H5MM_peak_alloc_blocks_count_s;
+ } /* end if */
+#else /* H5_MEMORY_ALLOC_SANITY_CHECK */
+ if(stats)
+ HDmemset(stats, 0, sizeof(H5_alloc_stats_t));
+#endif /* H5_MEMORY_ALLOC_SANITY_CHECK */
+
+ FUNC_LEAVE_NOAPI(SUCCEED)
+} /* end H5MM_get_alloc_stats() */