summaryrefslogtreecommitdiffstats
path: root/src/H5HFdtable.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/H5HFdtable.c')
-rw-r--r--src/H5HFdtable.c120
1 files changed, 53 insertions, 67 deletions
diff --git a/src/H5HFdtable.c b/src/H5HFdtable.c
index 4fff348..061096b 100644
--- a/src/H5HFdtable.c
+++ b/src/H5HFdtable.c
@@ -26,54 +26,45 @@
/* Module Setup */
/****************/
-#include "H5HFmodule.h" /* This source code file is part of the H5HF module */
-
+#include "H5HFmodule.h" /* This source code file is part of the H5HF module */
/***********/
/* Headers */
/***********/
-#include "H5private.h" /* Generic Functions */
-#include "H5Eprivate.h" /* Error handling */
-#include "H5HFpkg.h" /* Fractal heaps */
-#include "H5MMprivate.h" /* Memory management */
-#include "H5VMprivate.h" /* Vectors and arrays */
+#include "H5private.h" /* Generic Functions */
+#include "H5Eprivate.h" /* Error handling */
+#include "H5HFpkg.h" /* Fractal heaps */
+#include "H5MMprivate.h" /* Memory management */
+#include "H5VMprivate.h" /* Vectors and arrays */
/****************/
/* Local Macros */
/****************/
-
/******************/
/* Local Typedefs */
/******************/
-
/********************/
/* Package Typedefs */
/********************/
-
/********************/
/* Local Prototypes */
/********************/
-
/*********************/
/* Package Variables */
/*********************/
-
/*****************************/
/* Library Private Variables */
/*****************************/
-
/*******************/
/* Local Variables */
/*******************/
-
-
/*-------------------------------------------------------------------------
* Function: H5HF__dtable_init
*
@@ -89,10 +80,10 @@
herr_t
H5HF__dtable_init(H5HF_dtable_t *dtable)
{
- hsize_t tmp_block_size; /* Temporary block size */
- hsize_t acc_block_off; /* Accumulated block offset */
- size_t u; /* Local index variable */
- herr_t ret_value = SUCCEED; /* Return value */
+ hsize_t tmp_block_size; /* Temporary block size */
+ hsize_t acc_block_off; /* Accumulated block offset */
+ size_t u; /* Local index variable */
+ herr_t ret_value = SUCCEED; /* Return value */
FUNC_ENTER_PACKAGE
@@ -102,30 +93,33 @@ H5HF__dtable_init(H5HF_dtable_t *dtable)
HDassert(dtable);
/* Compute/cache some values */
- dtable->start_bits = H5VM_log2_of2((uint32_t)dtable->cparam.start_block_size);
- dtable->first_row_bits = dtable->start_bits + H5VM_log2_of2(dtable->cparam.width);
- dtable->max_root_rows = (dtable->cparam.max_index - dtable->first_row_bits) + 1;
- dtable->max_direct_bits = H5VM_log2_of2((uint32_t)dtable->cparam.max_direct_size);
- dtable->max_direct_rows = (dtable->max_direct_bits - dtable->start_bits) + 2;
- dtable->num_id_first_row = dtable->cparam.start_block_size * dtable->cparam.width;
+ dtable->start_bits = H5VM_log2_of2((uint32_t)dtable->cparam.start_block_size);
+ dtable->first_row_bits = dtable->start_bits + H5VM_log2_of2(dtable->cparam.width);
+ dtable->max_root_rows = (dtable->cparam.max_index - dtable->first_row_bits) + 1;
+ dtable->max_direct_bits = H5VM_log2_of2((uint32_t)dtable->cparam.max_direct_size);
+ dtable->max_direct_rows = (dtable->max_direct_bits - dtable->start_bits) + 2;
+ dtable->num_id_first_row = dtable->cparam.start_block_size * dtable->cparam.width;
dtable->max_dir_blk_off_size = H5HF_SIZEOF_OFFSET_LEN(dtable->cparam.max_direct_size);
/* Build table of block sizes for each row */
- if(NULL == (dtable->row_block_size = (hsize_t *)H5MM_malloc(dtable->max_root_rows * sizeof(hsize_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't create doubling table block size table")
- if(NULL == (dtable->row_block_off = (hsize_t *)H5MM_malloc(dtable->max_root_rows * sizeof(hsize_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't create doubling table block offset table")
- if(NULL == (dtable->row_tot_dblock_free = (hsize_t *)H5MM_malloc(dtable->max_root_rows * sizeof(hsize_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't create doubling table total direct block free space table")
- if(NULL == (dtable->row_max_dblock_free = (size_t *)H5MM_malloc(dtable->max_root_rows * sizeof(size_t))))
- HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't create doubling table max. direct block free space table")
- tmp_block_size = dtable->cparam.start_block_size;
- acc_block_off = dtable->cparam.start_block_size * dtable->cparam.width;
+ if (NULL == (dtable->row_block_size = (hsize_t *)H5MM_malloc(dtable->max_root_rows * sizeof(hsize_t))))
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't create doubling table block size table")
+ if (NULL == (dtable->row_block_off = (hsize_t *)H5MM_malloc(dtable->max_root_rows * sizeof(hsize_t))))
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL, "can't create doubling table block offset table")
+ if (NULL ==
+ (dtable->row_tot_dblock_free = (hsize_t *)H5MM_malloc(dtable->max_root_rows * sizeof(hsize_t))))
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL,
+ "can't create doubling table total direct block free space table")
+ if (NULL == (dtable->row_max_dblock_free = (size_t *)H5MM_malloc(dtable->max_root_rows * sizeof(size_t))))
+ HGOTO_ERROR(H5E_RESOURCE, H5E_NOSPACE, FAIL,
+ "can't create doubling table max. direct block free space table")
+ tmp_block_size = dtable->cparam.start_block_size;
+ acc_block_off = dtable->cparam.start_block_size * dtable->cparam.width;
dtable->row_block_size[0] = dtable->cparam.start_block_size;
- dtable->row_block_off[0] = 0;
- for(u = 1; u < dtable->max_root_rows; u++) {
+ dtable->row_block_off[0] = 0;
+ for (u = 1; u < dtable->max_root_rows; u++) {
dtable->row_block_size[u] = tmp_block_size;
- dtable->row_block_off[u] = acc_block_off;
+ dtable->row_block_off[u] = acc_block_off;
tmp_block_size *= 2;
acc_block_off *= 2;
} /* end for */
@@ -134,7 +128,6 @@ done:
FUNC_LEAVE_NOAPI(ret_value)
} /* end H5HF__dtable_init() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__dtable_lookup
*
@@ -160,13 +153,13 @@ H5HF__dtable_lookup(const H5HF_dtable_t *dtable, hsize_t off, unsigned *row, uns
HDassert(col);
/* Check for offset in first row */
- if(off < dtable->num_id_first_row) {
+ if (off < dtable->num_id_first_row) {
*row = 0;
H5_CHECKED_ASSIGN(*col, unsigned, (off / dtable->cparam.start_block_size), hsize_t);
} /* end if */
else {
- unsigned high_bit = H5VM_log2_gen(off); /* Determine the high bit in the offset */
- hsize_t off_mask = ((hsize_t)1) << high_bit; /* Compute mask for determining column */
+ unsigned high_bit = H5VM_log2_gen(off); /* Determine the high bit in the offset */
+ hsize_t off_mask = ((hsize_t)1) << high_bit; /* Compute mask for determining column */
*row = (high_bit - dtable->first_row_bits) + 1;
H5_CHECKED_ASSIGN(*col, unsigned, ((off - off_mask) / dtable->row_block_size[*row]), hsize_t);
@@ -175,7 +168,6 @@ H5HF__dtable_lookup(const H5HF_dtable_t *dtable, hsize_t off, unsigned *row, uns
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5HF__dtable_lookup() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__dtable_dest
*
@@ -213,7 +205,6 @@ H5HF__dtable_dest(H5HF_dtable_t *dtable)
FUNC_LEAVE_NOAPI(SUCCEED)
} /* end H5HF__dtable_dest() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__dtable_size_to_row
*
@@ -229,7 +220,7 @@ H5HF__dtable_dest(H5HF_dtable_t *dtable)
unsigned
H5HF__dtable_size_to_row(const H5HF_dtable_t *dtable, size_t block_size)
{
- unsigned row = 0; /* Row where block will fit */
+ unsigned row = 0; /* Row where block will fit */
FUNC_ENTER_PACKAGE_NOERR
@@ -238,15 +229,16 @@ H5HF__dtable_size_to_row(const H5HF_dtable_t *dtable, size_t block_size)
*/
HDassert(dtable);
- if(block_size == dtable->cparam.start_block_size)
+ if (block_size == dtable->cparam.start_block_size)
row = 0;
else
- row = (H5VM_log2_of2((uint32_t)block_size) - H5VM_log2_of2((uint32_t)dtable->cparam.start_block_size)) + 1;
+ row =
+ (H5VM_log2_of2((uint32_t)block_size) - H5VM_log2_of2((uint32_t)dtable->cparam.start_block_size)) +
+ 1;
FUNC_LEAVE_NOAPI(row)
} /* end H5HF__dtable_size_to_row() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__dtable_size_to_rows
*
@@ -262,7 +254,7 @@ H5HF__dtable_size_to_row(const H5HF_dtable_t *dtable, size_t block_size)
unsigned
H5HF__dtable_size_to_rows(const H5HF_dtable_t *dtable, hsize_t size)
{
- unsigned rows = 0; /* # of rows required for indirect block */
+ unsigned rows = 0; /* # of rows required for indirect block */
FUNC_ENTER_PACKAGE_NOERR
@@ -276,7 +268,6 @@ H5HF__dtable_size_to_rows(const H5HF_dtable_t *dtable, hsize_t size)
FUNC_LEAVE_NOAPI(rows)
} /* end H5HF__dtable_size_to_rows() */
-
/*-------------------------------------------------------------------------
* Function: H5HF__dtable_span_size
*
@@ -290,14 +281,14 @@ H5HF__dtable_size_to_rows(const H5HF_dtable_t *dtable, hsize_t size)
*-------------------------------------------------------------------------
*/
hsize_t
-H5HF__dtable_span_size(const H5HF_dtable_t *dtable, unsigned start_row,
- unsigned start_col, unsigned num_entries)
+H5HF__dtable_span_size(const H5HF_dtable_t *dtable, unsigned start_row, unsigned start_col,
+ unsigned num_entries)
{
unsigned start_entry; /* Entry for first block covered */
unsigned end_row; /* Row for last block covered */
unsigned end_col; /* Column for last block covered */
unsigned end_entry; /* Entry for last block covered */
- hsize_t acc_span_size = 0; /* Accumulated span size */
+ hsize_t acc_span_size = 0; /* Accumulated span size */
FUNC_ENTER_PACKAGE_NOERR
@@ -312,8 +303,8 @@ H5HF__dtable_span_size(const H5HF_dtable_t *dtable, unsigned start_row,
/* Compute ending entry, column & row */
end_entry = (start_entry + num_entries) - 1;
- end_row = end_entry / dtable->cparam.width;
- end_col = end_entry % dtable->cparam.width;
+ end_row = end_entry / dtable->cparam.width;
+ end_col = end_entry % dtable->cparam.width;
/* Initialize accumulated span size */
acc_span_size = 0;
@@ -321,31 +312,26 @@ H5HF__dtable_span_size(const H5HF_dtable_t *dtable, unsigned start_row,
/* Compute span size covered */
/* Check for multi-row span */
- if(start_row != end_row) {
+ if (start_row != end_row) {
/* Accommodate partial starting row */
- if(start_col > 0) {
- acc_span_size = dtable->row_block_size[start_row] *
- (dtable->cparam.width - start_col);
+ if (start_col > 0) {
+ acc_span_size = dtable->row_block_size[start_row] * (dtable->cparam.width - start_col);
start_row++;
} /* end if */
/* Accumulate full rows */
- while(start_row < end_row) {
- acc_span_size += dtable->row_block_size[start_row] *
- dtable->cparam.width;
+ while (start_row < end_row) {
+ acc_span_size += dtable->row_block_size[start_row] * dtable->cparam.width;
start_row++;
} /* end while */
/* Accommodate partial ending row */
- acc_span_size += dtable->row_block_size[start_row] *
- (end_col + 1);
+ acc_span_size += dtable->row_block_size[start_row] * (end_col + 1);
} /* end if */
else {
/* Span is in same row */
- acc_span_size = dtable->row_block_size[start_row] *
- ((end_col - start_col) + 1);
+ acc_span_size = dtable->row_block_size[start_row] * ((end_col - start_col) + 1);
} /* end else */
FUNC_LEAVE_NOAPI(acc_span_size)
} /* end H5HF__dtable_span_size() */
-