mirror of
https://github.com/HDFGroup/hdf5.git
synced 2025-03-25 17:00:45 +08:00
Bring change to use array of metadata cache entry classes for H5C_create
instead of array of class names from cache image branch.
This commit is contained in:
parent
349f41d974
commit
5a776edb81
78
src/H5AC.c
78
src/H5AC.c
@ -107,38 +107,42 @@ hbool_t H5_coll_api_sanity_check_g = false;
|
||||
/* Local Variables */
|
||||
/*******************/
|
||||
|
||||
static const char *H5AC_entry_type_names[H5AC_NTYPES] =
|
||||
{
|
||||
"B-tree nodes",
|
||||
"symbol table nodes",
|
||||
"local heap prefixes",
|
||||
"local heap data blocks",
|
||||
"global heaps",
|
||||
"object headers",
|
||||
"object header chunks",
|
||||
"v2 B-tree headers",
|
||||
"v2 B-tree internal nodes",
|
||||
"v2 B-tree leaf nodes",
|
||||
"fractal heap headers",
|
||||
"fractal heap direct blocks",
|
||||
"fractal heap indirect blocks",
|
||||
"free space headers",
|
||||
"free space sections",
|
||||
"shared OH message master table",
|
||||
"shared OH message index",
|
||||
"extensible array headers",
|
||||
"extensible array index blocks",
|
||||
"extensible array super blocks",
|
||||
"extensible array data blocks",
|
||||
"extensible array data block pages",
|
||||
"fixed array headers",
|
||||
"fixed array data block",
|
||||
"fixed array data block pages",
|
||||
"superblock",
|
||||
"driver info",
|
||||
"epoch marker", /* internal to cache only */
|
||||
"proxy entry",
|
||||
"test entry" /* for testing only -- not used for actual files */
|
||||
/* Metadata entry class list */
|
||||
|
||||
/* Remember to add new type ID to the H5AC_type_t enum in H5ACprivate.h when
|
||||
* adding a new class.
|
||||
*/
|
||||
|
||||
static const H5AC_class_t *const H5AC_class_s[] = {
|
||||
H5AC_BT, /* ( 0) B-tree nodes */
|
||||
H5AC_SNODE, /* ( 1) symbol table nodes */
|
||||
H5AC_LHEAP_PRFX, /* ( 2) local heap prefix */
|
||||
H5AC_LHEAP_DBLK, /* ( 3) local heap data block */
|
||||
H5AC_GHEAP, /* ( 4) global heap */
|
||||
H5AC_OHDR, /* ( 5) object header */
|
||||
H5AC_OHDR_CHK, /* ( 6) object header chunk */
|
||||
H5AC_BT2_HDR, /* ( 7) v2 B-tree header */
|
||||
H5AC_BT2_INT, /* ( 8) v2 B-tree internal node */
|
||||
H5AC_BT2_LEAF, /* ( 9) v2 B-tree leaf node */
|
||||
H5AC_FHEAP_HDR, /* (10) fractal heap header */
|
||||
H5AC_FHEAP_DBLOCK, /* (11) fractal heap direct block */
|
||||
H5AC_FHEAP_IBLOCK, /* (12) fractal heap indirect block */
|
||||
H5AC_FSPACE_HDR, /* (13) free space header */
|
||||
H5AC_FSPACE_SINFO, /* (14) free space sections */
|
||||
H5AC_SOHM_TABLE, /* (15) shared object header message master table */
|
||||
H5AC_SOHM_LIST, /* (16) shared message index stored as a list */
|
||||
H5AC_EARRAY_HDR, /* (17) extensible array header */
|
||||
H5AC_EARRAY_IBLOCK, /* (18) extensible array index block */
|
||||
H5AC_EARRAY_SBLOCK, /* (19) extensible array super block */
|
||||
H5AC_EARRAY_DBLOCK, /* (20) extensible array data block */
|
||||
H5AC_EARRAY_DBLK_PAGE, /* (21) extensible array data block page */
|
||||
H5AC_FARRAY_HDR, /* (22) fixed array header */
|
||||
H5AC_FARRAY_DBLOCK, /* (23) fixed array data block */
|
||||
H5AC_FARRAY_DBLK_PAGE, /* (24) fixed array data block page */
|
||||
H5AC_SUPERBLOCK, /* (25) file superblock */
|
||||
H5AC_DRVRINFO, /* (26) driver info block (supplements superblock) */
|
||||
H5AC_EPOCH_MARKER, /* (27) epoch marker - always internal to cache */
|
||||
H5AC_PROXY_ENTRY /* (28) cache entry proxy */
|
||||
};
|
||||
|
||||
|
||||
@ -380,7 +384,7 @@ H5AC_create(const H5F_t *f, H5AC_cache_config_t *config_ptr)
|
||||
HDassert(f);
|
||||
HDassert(NULL == f->shared->cache);
|
||||
HDassert(config_ptr != NULL) ;
|
||||
HDcompile_assert(NELMTS(H5AC_entry_type_names) == H5AC_NTYPES);
|
||||
HDcompile_assert(NELMTS(H5AC_class_s) == H5AC_NTYPES);
|
||||
HDcompile_assert(H5C__MAX_NUM_TYPE_IDS == H5AC_NTYPES);
|
||||
|
||||
if(H5AC_validate_config(config_ptr) < 0)
|
||||
@ -448,19 +452,19 @@ H5AC_create(const H5F_t *f, H5AC_cache_config_t *config_ptr)
|
||||
if(aux_ptr->mpi_rank == 0)
|
||||
f->shared->cache = H5C_create(H5AC__DEFAULT_MAX_CACHE_SIZE,
|
||||
H5AC__DEFAULT_MIN_CLEAN_SIZE, (H5AC_NTYPES - 1),
|
||||
(const char **)H5AC_entry_type_names,
|
||||
H5AC_class_s,
|
||||
H5AC__check_if_write_permitted, TRUE, H5AC__log_flushed_entry,
|
||||
(void *)aux_ptr);
|
||||
else
|
||||
f->shared->cache = H5C_create(H5AC__DEFAULT_MAX_CACHE_SIZE,
|
||||
H5AC__DEFAULT_MIN_CLEAN_SIZE, (H5AC_NTYPES - 1),
|
||||
(const char **)H5AC_entry_type_names,
|
||||
H5AC_class_s,
|
||||
H5AC__check_if_write_permitted, TRUE, NULL,
|
||||
(void *)aux_ptr);
|
||||
else
|
||||
f->shared->cache = H5C_create(H5AC__DEFAULT_MAX_CACHE_SIZE,
|
||||
H5AC__DEFAULT_MIN_CLEAN_SIZE, (H5AC_NTYPES - 1),
|
||||
(const char **)H5AC_entry_type_names,
|
||||
H5AC_class_s,
|
||||
H5AC__check_if_write_permitted, TRUE, NULL, NULL);
|
||||
} /* end if */
|
||||
else {
|
||||
@ -471,7 +475,7 @@ H5AC_create(const H5F_t *f, H5AC_cache_config_t *config_ptr)
|
||||
*/
|
||||
f->shared->cache = H5C_create(H5AC__DEFAULT_MAX_CACHE_SIZE,
|
||||
H5AC__DEFAULT_MIN_CLEAN_SIZE, (H5AC_NTYPES - 1),
|
||||
(const char **)H5AC_entry_type_names,
|
||||
H5AC_class_s,
|
||||
H5AC__check_if_write_permitted, TRUE, NULL, NULL);
|
||||
#ifdef H5_HAVE_PARALLEL
|
||||
} /* end else */
|
||||
|
@ -88,7 +88,6 @@ typedef enum {
|
||||
H5AC_DRVRINFO_ID, /* (26) driver info block (supplements superblock) */
|
||||
H5AC_EPOCH_MARKER_ID, /* (27) epoch marker - always internal to cache */
|
||||
H5AC_PROXY_ENTRY_ID, /* (28) cache entry proxy */
|
||||
H5AC_TEST_ID, /* (29) test entry -- not used for actual files */
|
||||
H5AC_NTYPES /* Number of types, must be last */
|
||||
} H5AC_type_t;
|
||||
|
||||
@ -359,6 +358,37 @@ H5_DLLVAR hid_t H5AC_rawdata_dxpl_id;
|
||||
#define H5AC_ES__IS_CORKED 0x0040
|
||||
#define H5AC_ES__IMAGE_IS_UP_TO_DATE 0x0080
|
||||
|
||||
/* Metadata entry class declarations */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_BT[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_SNODE[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_LHEAP_PRFX[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_LHEAP_DBLK[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_GHEAP[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_OHDR[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_OHDR_CHK[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_BT2_HDR[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_BT2_INT[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_BT2_LEAF[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FHEAP_HDR[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FHEAP_DBLOCK[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FHEAP_IBLOCK[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FSPACE_HDR[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FSPACE_SINFO[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_SOHM_TABLE[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_SOHM_LIST[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_EARRAY_HDR[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_EARRAY_IBLOCK[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_EARRAY_SBLOCK[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_EARRAY_DBLOCK[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_EARRAY_DBLK_PAGE[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FARRAY_HDR[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FARRAY_DBLOCK[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FARRAY_DBLK_PAGE[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_SUPERBLOCK[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_DRVRINFO[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_EPOCH_MARKER[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_PROXY_ENTRY[1];
|
||||
|
||||
|
||||
/* external function declarations: */
|
||||
|
||||
|
@ -307,15 +307,6 @@ typedef struct H5B2_node_info_test_t {
|
||||
/* Package Private Variables */
|
||||
/*****************************/
|
||||
|
||||
/* H5B2 header inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_BT2_HDR[1];
|
||||
|
||||
/* H5B2 internal node inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_BT2_INT[1];
|
||||
|
||||
/* H5B2 leaf node inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_BT2_LEAF[1];
|
||||
|
||||
/* Declare a free list to manage the H5B2_internal_t struct */
|
||||
H5FL_EXTERN(H5B2_internal_t);
|
||||
|
||||
|
@ -73,9 +73,6 @@ typedef struct H5B_cache_ud_t {
|
||||
/* Package Private Variables */
|
||||
/*****************************/
|
||||
|
||||
/* H5B header inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_BT[1];
|
||||
|
||||
/* Declare a free list to manage the haddr_t sequence information */
|
||||
H5FL_SEQ_EXTERN(haddr_t);
|
||||
|
||||
|
86
src/H5C.c
86
src/H5C.c
@ -243,7 +243,7 @@ H5C_t *
|
||||
H5C_create(size_t max_cache_size,
|
||||
size_t min_clean_size,
|
||||
int max_type_id,
|
||||
const char * (* type_name_table_ptr),
|
||||
const H5C_class_t * const * class_table_ptr,
|
||||
H5C_write_permitted_func_t check_write_permitted,
|
||||
hbool_t write_permitted,
|
||||
H5C_log_flush_func_t log_flush,
|
||||
@ -261,11 +261,11 @@ H5C_create(size_t max_cache_size,
|
||||
|
||||
HDassert( max_type_id >= 0 );
|
||||
HDassert( max_type_id < H5C__MAX_NUM_TYPE_IDS );
|
||||
HDassert( type_name_table_ptr );
|
||||
HDassert( class_table_ptr );
|
||||
|
||||
for ( i = 0; i <= max_type_id; i++ ) {
|
||||
HDassert( (type_name_table_ptr)[i] );
|
||||
HDassert( HDstrlen(( type_name_table_ptr)[i]) > 0 );
|
||||
HDassert( (class_table_ptr)[i] );
|
||||
HDassert(HDstrlen((class_table_ptr)[i]->name) > 0);
|
||||
} /* end for */
|
||||
|
||||
if(NULL == (cache_ptr = H5FL_CALLOC(H5C_t)))
|
||||
@ -297,7 +297,7 @@ H5C_create(size_t max_cache_size,
|
||||
|
||||
cache_ptr->max_type_id = max_type_id;
|
||||
|
||||
cache_ptr->type_name_table_ptr = type_name_table_ptr;
|
||||
cache_ptr->class_table_ptr = class_table_ptr;
|
||||
|
||||
cache_ptr->max_cache_size = max_cache_size;
|
||||
cache_ptr->min_clean_size = min_clean_size;
|
||||
@ -434,7 +434,7 @@ H5C_create(size_t max_cache_size,
|
||||
((cache_ptr->epoch_markers)[i]).magic =
|
||||
H5C__H5C_CACHE_ENTRY_T_MAGIC;
|
||||
((cache_ptr->epoch_markers)[i]).addr = (haddr_t)i;
|
||||
((cache_ptr->epoch_markers)[i]).type = &H5C__epoch_marker_class;
|
||||
((cache_ptr->epoch_markers)[i]).type = H5AC_EPOCH_MARKER;
|
||||
}
|
||||
|
||||
cache_ptr->entries_loaded_counter = 0;
|
||||
@ -2304,32 +2304,6 @@ done:
|
||||
*
|
||||
* Programmer: John Mainzer - 6/2/04
|
||||
*
|
||||
* JRM -- 11/13/08
|
||||
* Modified function to call H5C_make_space_in_cache() when
|
||||
* the min_clean_size is violated, not just when there isn't
|
||||
* enough space for and entry that has just been loaded.
|
||||
*
|
||||
* The purpose of this modification is to avoid "metadata
|
||||
* blizzards" in the write only case. In such instances,
|
||||
* the cache was allowed to fill with dirty metadata. When
|
||||
* we finally needed to evict an entry to make space, we had
|
||||
* to flush out a whole cache full of metadata -- which has
|
||||
* interesting performance effects. We hope to avoid (or
|
||||
* perhaps more accurately hide) this effect by maintaining
|
||||
* the min_clean_size, which should force us to start flushing
|
||||
* entries long before we actually have to evict something
|
||||
* to make space.
|
||||
*
|
||||
* JRM -- 9/1/14
|
||||
* Replace the old rw parameter with the flags parameter.
|
||||
* This allows H5C_protect to accept flags other than
|
||||
* H5C__READ_ONLY_FLAG.
|
||||
*
|
||||
* Added support for the H5C__FLUSH_LAST_FLAG.
|
||||
* At present, this flag is only applied if the entry is
|
||||
* not in cache, and is loaded into the cache as a result of
|
||||
* this call.
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
void *
|
||||
@ -6145,34 +6119,6 @@ done:
|
||||
*
|
||||
* Programmer: John Mainzer, 5/5/04
|
||||
*
|
||||
* Changes: Refactored function to remove the type_ptr parameter.
|
||||
*
|
||||
* JRM -- 8/7/14
|
||||
*
|
||||
* Added code to check for slist changes in pre_serialize and
|
||||
* serialize calls, and set
|
||||
* cache_ptr->slist_change_in_pre_serialize and
|
||||
* cache_ptr->slist_change_in_serialize as appropriate.
|
||||
*
|
||||
* JRM -- 12/13/14
|
||||
*
|
||||
* Refactored function to delay all modifications of the
|
||||
* metadata cache data structures until after any calls
|
||||
* to the pre-serialize or serialize callbacks.
|
||||
*
|
||||
* Need to do this, as some pre-serialize or serialize
|
||||
* calls result in calls to the metadata cache and
|
||||
* modifications to its data structures. Thus, at the
|
||||
* time of any such call, the target entry flags and
|
||||
* the metadata cache must all be consistant.
|
||||
*
|
||||
* Also added the entry_size_change_ptr parameter, which
|
||||
* allows the function to report back any change in the size
|
||||
* of the entry during the flush. Such size changes may
|
||||
* occur during the pre-serialize callback.
|
||||
*
|
||||
* JRM -- 12/24/14
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
herr_t
|
||||
@ -7023,11 +6969,9 @@ done:
|
||||
*
|
||||
*-------------------------------------------------------------------------
|
||||
*/
|
||||
static herr_t
|
||||
H5C_make_space_in_cache(H5F_t * f,
|
||||
hid_t dxpl_id,
|
||||
size_t space_needed,
|
||||
hbool_t write_permitted)
|
||||
herr_t
|
||||
H5C_make_space_in_cache(H5F_t *f, hid_t dxpl_id, size_t space_needed,
|
||||
hbool_t write_permitted)
|
||||
{
|
||||
H5C_t * cache_ptr = f->shared->cache;
|
||||
#if H5C_COLLECT_CACHE_STATS
|
||||
@ -7043,16 +6987,16 @@ H5C_make_space_in_cache(H5F_t * f,
|
||||
H5C_cache_entry_t * entry_ptr;
|
||||
H5C_cache_entry_t * prev_ptr;
|
||||
H5C_cache_entry_t * next_ptr;
|
||||
int32_t num_corked_entries = 0;
|
||||
uint32_t num_corked_entries = 0;
|
||||
herr_t ret_value = SUCCEED; /* Return value */
|
||||
|
||||
FUNC_ENTER_NOAPI_NOINIT
|
||||
|
||||
HDassert( f );
|
||||
HDassert( cache_ptr );
|
||||
HDassert( cache_ptr->magic == H5C__H5C_T_MAGIC );
|
||||
HDassert( cache_ptr->index_size ==
|
||||
(cache_ptr->clean_index_size + cache_ptr->dirty_index_size) );
|
||||
/* Sanity checks */
|
||||
HDassert(f);
|
||||
HDassert(cache_ptr);
|
||||
HDassert(cache_ptr->magic == H5C__H5C_T_MAGIC);
|
||||
HDassert(cache_ptr->index_size == (cache_ptr->clean_index_size + cache_ptr->dirty_index_size));
|
||||
|
||||
if ( write_permitted ) {
|
||||
|
||||
|
@ -673,7 +673,7 @@ H5C_stats(H5C_t * cache_ptr,
|
||||
|
||||
HDfprintf(stdout, "%s Stats on %s:\n",
|
||||
cache_ptr->prefix,
|
||||
((cache_ptr->type_name_table_ptr))[i]);
|
||||
((cache_ptr->class_table_ptr))[i]->name);
|
||||
|
||||
if((cache_ptr->hits[i] > 0) || (cache_ptr->misses[i] > 0))
|
||||
hit_rate = (double)100.0f * ((double)(cache_ptr->hits[i])) /
|
||||
|
@ -92,8 +92,7 @@ static herr_t H5C__epoch_marker_fsf_size(const void H5_ATTR_UNUSED * thing,
|
||||
/*******************/
|
||||
|
||||
|
||||
const H5C_class_t H5C__epoch_marker_class =
|
||||
{
|
||||
const H5AC_class_t H5AC_EPOCH_MARKER[1] = {{
|
||||
/* id = */ H5AC_EPOCH_MARKER_ID,
|
||||
/* name = */ "epoch marker",
|
||||
/* mem_type = */ H5FD_MEM_DEFAULT, /* value doesn't matter */
|
||||
@ -108,7 +107,7 @@ const H5C_class_t H5C__epoch_marker_class =
|
||||
/* notify = */ H5C__epoch_marker_notify,
|
||||
/* free_icr = */ H5C__epoch_marker_free_icr,
|
||||
/* fsf_size = */ H5C__epoch_marker_fsf_size,
|
||||
};
|
||||
}};
|
||||
|
||||
|
||||
/***************************************************************************
|
||||
|
28
src/H5Cpkg.h
28
src/H5Cpkg.h
@ -596,23 +596,6 @@ if ( ( ( ( (head_ptr) == NULL ) || ( (tail_ptr) == NULL ) ) && \
|
||||
* H5C__UPDATE_CACHE_HIT_RATE_STATS(), which is always active as
|
||||
* the cache hit rate stats are always collected and available.
|
||||
*
|
||||
* Changes:
|
||||
*
|
||||
* JRM -- 3/21/06
|
||||
* Added / updated macros for pinned entry related stats.
|
||||
*
|
||||
* JRM -- 8/9/06
|
||||
* More pinned entry stats related updates.
|
||||
*
|
||||
* JRM -- 3/31/07
|
||||
* Updated H5C__UPDATE_STATS_FOR_PROTECT() to keep stats on
|
||||
* read and write protects.
|
||||
*
|
||||
* MAM -- 1/15/09
|
||||
* Created H5C__UPDATE_MAX_INDEX_SIZE_STATS to contain
|
||||
* common code within macros that update the maximum
|
||||
* index, clean_index, and dirty_index statistics fields.
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
#define H5C__UPDATE_CACHE_HIT_RATE_STATS(cache_ptr, hit) \
|
||||
@ -3428,10 +3411,8 @@ typedef struct H5C_tag_info_t {
|
||||
* types are stored in the type_name_table discussed below, and
|
||||
* indexed by the ids.
|
||||
*
|
||||
* type_name_table_ptr: Pointer to an array of pointer to char of length
|
||||
* max_type_id + 1. The strings pointed to by the entries
|
||||
* in the array are the names of the entry types associated
|
||||
* with the indexing type IDs.
|
||||
* class_table_ptr: Pointer to an array of H5C_class_t of length
|
||||
* max_type_id + 1. Entry classes for the cache.
|
||||
*
|
||||
* max_cache_size: Nominal maximum number of bytes that may be stored in the
|
||||
* cache. This value should be viewed as a soft limit, as the
|
||||
@ -4377,7 +4358,7 @@ struct H5C_t {
|
||||
FILE * log_file_ptr;
|
||||
void * aux_ptr;
|
||||
int32_t max_type_id;
|
||||
const char * (* type_name_table_ptr);
|
||||
const H5C_class_t * const *class_table_ptr;
|
||||
size_t max_cache_size;
|
||||
size_t min_clean_size;
|
||||
H5C_write_permitted_func_t check_write_permitted;
|
||||
@ -4578,9 +4559,6 @@ typedef int (*H5C_tag_iter_cb_t)(H5C_cache_entry_t *entry, void *ctx);
|
||||
/* Package Private Variables */
|
||||
/*****************************/
|
||||
|
||||
/* Metadata cache epoch class */
|
||||
H5_DLLVAR const H5C_class_t H5C__epoch_marker_class;
|
||||
|
||||
|
||||
/******************************/
|
||||
/* Package Private Prototypes */
|
||||
|
@ -41,7 +41,7 @@
|
||||
/**************************/
|
||||
|
||||
/* Cache configuration settings */
|
||||
#define H5C__MAX_NUM_TYPE_IDS 30
|
||||
#define H5C__MAX_NUM_TYPE_IDS 29
|
||||
#define H5C__PREFIX_LEN 32
|
||||
|
||||
/* This sanity checking constant was picked out of the air. Increase
|
||||
@ -1741,7 +1741,7 @@ typedef struct H5C_auto_size_ctl_t {
|
||||
/***************************************/
|
||||
|
||||
H5_DLL H5C_t *H5C_create(size_t max_cache_size, size_t min_clean_size,
|
||||
int max_type_id, const char *(*type_name_table_ptr),
|
||||
int max_type_id, const H5C_class_t * const *class_table_ptr,
|
||||
H5C_write_permitted_func_t check_write_permitted, hbool_t write_permitted,
|
||||
H5C_log_flush_func_t log_flush, void *aux_ptr);
|
||||
H5_DLL herr_t H5C_set_up_logging(H5C_t *cache_ptr, const char log_location[], hbool_t start_immediately);
|
||||
|
@ -378,21 +378,6 @@ typedef struct H5EA__ctx_cb_t {
|
||||
/* Package Private Variables */
|
||||
/*****************************/
|
||||
|
||||
/* H5EA header inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_EARRAY_HDR[1];
|
||||
|
||||
/* H5EA index block inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_EARRAY_IBLOCK[1];
|
||||
|
||||
/* H5EA index block inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_EARRAY_SBLOCK[1];
|
||||
|
||||
/* H5EA data block inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_EARRAY_DBLOCK[1];
|
||||
|
||||
/* H5EA data block page inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_EARRAY_DBLK_PAGE[1];
|
||||
|
||||
/* Internal extensible array testing class */
|
||||
H5_DLLVAR const H5EA_class_t H5EA_CLS_TEST[1];
|
||||
|
||||
|
@ -249,15 +249,6 @@ typedef struct H5FA_dblk_page_cache_ud_t {
|
||||
/* Package Private Variables */
|
||||
/*****************************/
|
||||
|
||||
/* H5FA header inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FARRAY_HDR[1];
|
||||
|
||||
/* H5FA data block inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FARRAY_DBLOCK[1];
|
||||
|
||||
/* H5FA data block page inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FARRAY_DBLK_PAGE[1];
|
||||
|
||||
/* Internal fixed array testing class */
|
||||
H5_DLLVAR const H5FA_class_t H5FA_CLS_TEST[1];
|
||||
|
||||
|
@ -199,12 +199,6 @@ struct H5FS_t {
|
||||
/* Package Private Variables */
|
||||
/*****************************/
|
||||
|
||||
/* H5FS header inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FSPACE_HDR[1];
|
||||
|
||||
/* H5FS section info inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FSPACE_SINFO[1];
|
||||
|
||||
/* Declare a free list to manage the H5FS_node_t struct */
|
||||
H5FL_EXTERN(H5FS_node_t);
|
||||
|
||||
|
@ -369,9 +369,6 @@ H5FL_EXTERN(H5F_t);
|
||||
/* Declare a free list to manage the H5F_file_t struct */
|
||||
H5FL_EXTERN(H5F_file_t);
|
||||
|
||||
H5_DLLVAR const H5AC_class_t H5AC_SUPERBLOCK[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_DRVRINFO[1];
|
||||
|
||||
|
||||
/******************************/
|
||||
/* Package Private Prototypes */
|
||||
|
@ -312,9 +312,6 @@ typedef struct H5G_copy_file_ud_t {
|
||||
*/
|
||||
H5_DLLVAR H5B_class_t H5B_SNODE[1];
|
||||
|
||||
/* The cache subclass */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_SNODE[1];
|
||||
|
||||
/* The v2 B-tree class for indexing 'name' field on links */
|
||||
H5_DLLVAR const H5B2_class_t H5G_BT2_NAME[1];
|
||||
|
||||
|
@ -559,15 +559,6 @@ typedef struct H5HF_dblock_cache_ud_t {
|
||||
/* Package Private Variables */
|
||||
/*****************************/
|
||||
|
||||
/* H5HF header inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FHEAP_HDR[1];
|
||||
|
||||
/* H5HF indirect block inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FHEAP_IBLOCK[1];
|
||||
|
||||
/* H5HF direct block inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_FHEAP_DBLOCK[1];
|
||||
|
||||
/* The v2 B-tree class for tracking indirectly accessed 'huge' objects */
|
||||
H5_DLLVAR const H5B2_class_t H5HF_HUGE_BT2_INDIR[1];
|
||||
|
||||
|
@ -40,9 +40,6 @@
|
||||
/* Package Private Variables */
|
||||
/*****************************/
|
||||
|
||||
/* The cache subclass */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_GHEAP[1];
|
||||
|
||||
/* Declare extern the free list to manage the H5HG_t struct */
|
||||
H5FL_EXTERN(H5HG_heap_t);
|
||||
|
||||
|
@ -39,12 +39,6 @@
|
||||
/* Package Private Variables */
|
||||
/*****************************/
|
||||
|
||||
/* The local heap prefix cache subclass */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_LHEAP_PRFX[1];
|
||||
|
||||
/* The local heap data block cache subclass */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_LHEAP_DBLK[1];
|
||||
|
||||
/* Declare extern the free list to manage the H5HL_free_t struct */
|
||||
H5FL_EXTERN(H5HL_free_t);
|
||||
|
||||
|
@ -419,12 +419,6 @@ typedef struct H5O_chk_cache_ud_t {
|
||||
} H5O_chk_cache_ud_t;
|
||||
|
||||
|
||||
/* H5O object header inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_OHDR[1];
|
||||
|
||||
/* H5O object header chunk inherits cache-like properties from H5AC */
|
||||
H5_DLLVAR const H5AC_class_t H5AC_OHDR_CHK[1];
|
||||
|
||||
/* Header message ID to class mapping */
|
||||
H5_DLLVAR const H5O_msg_class_t *const H5O_msg_class_g[H5O_MSG_TYPES];
|
||||
|
||||
|
@ -256,8 +256,6 @@ H5FL_ARR_EXTERN(H5SM_index_header_t);
|
||||
H5FL_EXTERN(H5SM_list_t);
|
||||
H5FL_ARR_EXTERN(H5SM_sohm_t);
|
||||
|
||||
H5_DLLVAR const H5AC_class_t H5AC_SOHM_TABLE[1];
|
||||
H5_DLLVAR const H5AC_class_t H5AC_SOHM_LIST[1];
|
||||
H5_DLLVAR const H5B2_class_t H5SM_INDEX[1];
|
||||
|
||||
/****************************/
|
||||
|
24
test/cache.c
24
test/cache.c
@ -16093,7 +16093,7 @@ check_duplicate_insert_err(void)
|
||||
entry_ptr = &(base_addr[0]);
|
||||
|
||||
result = H5C_insert_entry(file_ptr, H5AC_ind_read_dxpl_id,
|
||||
&(types[0]), entry_ptr->addr,
|
||||
types[0], entry_ptr->addr,
|
||||
(void *)entry_ptr, H5C__NO_FLAGS_SET);
|
||||
|
||||
if(result >= 0) {
|
||||
@ -16461,7 +16461,7 @@ check_double_protect_err(void)
|
||||
if(pass) {
|
||||
|
||||
cache_entry_ptr = (H5C_cache_entry_t *)H5C_protect(file_ptr, H5AC_ind_read_dxpl_id,
|
||||
&(types[0]), entry_ptr->addr,
|
||||
types[0], entry_ptr->addr,
|
||||
&entry_ptr->addr, H5C__NO_FLAGS_SET);
|
||||
|
||||
if(cache_entry_ptr != NULL) {
|
||||
@ -16705,7 +16705,7 @@ check_expunge_entry_errs(void)
|
||||
if(pass) {
|
||||
|
||||
result = H5C_expunge_entry(file_ptr, H5AC_ind_read_dxpl_id,
|
||||
&(types[0]), entry_ptr->addr, H5C__NO_FLAGS_SET);
|
||||
types[0], entry_ptr->addr, H5C__NO_FLAGS_SET);
|
||||
|
||||
if(result > 0) {
|
||||
|
||||
@ -16723,7 +16723,7 @@ check_expunge_entry_errs(void)
|
||||
if(pass) {
|
||||
|
||||
result = H5C_expunge_entry(file_ptr, H5AC_ind_read_dxpl_id,
|
||||
&(types[0]), entry_ptr->addr, H5C__NO_FLAGS_SET);
|
||||
types[0], entry_ptr->addr, H5C__NO_FLAGS_SET);
|
||||
|
||||
if(result > 0) {
|
||||
|
||||
@ -16741,7 +16741,7 @@ check_expunge_entry_errs(void)
|
||||
if(pass) {
|
||||
|
||||
result = H5C_expunge_entry(file_ptr, H5AC_ind_read_dxpl_id,
|
||||
&(types[0]), entry_ptr->addr, H5C__NO_FLAGS_SET);
|
||||
types[0], entry_ptr->addr, H5C__NO_FLAGS_SET);
|
||||
|
||||
if(result < 0) {
|
||||
|
||||
@ -16823,7 +16823,7 @@ check_move_entry_errs(void)
|
||||
|
||||
if(pass) {
|
||||
|
||||
result = H5C_move_entry(cache_ptr, &(types[0]),
|
||||
result = H5C_move_entry(cache_ptr, types[0],
|
||||
entry_0_0_ptr->addr, entry_0_1_ptr->addr);
|
||||
|
||||
if(result >= 0) {
|
||||
@ -16835,7 +16835,7 @@ check_move_entry_errs(void)
|
||||
|
||||
if(pass) {
|
||||
|
||||
result = H5C_move_entry(cache_ptr, &(types[0]),
|
||||
result = H5C_move_entry(cache_ptr, types[0],
|
||||
entry_0_0_ptr->addr, entry_1_0_ptr->addr);
|
||||
|
||||
if(result >= 0) {
|
||||
@ -16874,7 +16874,7 @@ check_move_entry_errs(void)
|
||||
|
||||
if(pass) {
|
||||
|
||||
result = H5C_move_entry(cache_ptr, &(types[0]), entry_ptr->header.addr, entry_ptr->header.addr + 10);
|
||||
result = H5C_move_entry(cache_ptr, types[0], entry_ptr->header.addr, entry_ptr->header.addr + 10);
|
||||
|
||||
if(result >= 0) {
|
||||
|
||||
@ -17179,7 +17179,7 @@ check_protect_ro_rw_err(void)
|
||||
if(pass) {
|
||||
|
||||
thing_ptr = (H5C_cache_entry_t *)H5C_protect(file_ptr, H5AC_ind_read_dxpl_id,
|
||||
&(types[0]), entry_ptr->addr,
|
||||
types[0], entry_ptr->addr,
|
||||
&entry_ptr->addr, H5C__NO_FLAGS_SET);
|
||||
|
||||
if(thing_ptr != NULL) {
|
||||
@ -17272,13 +17272,13 @@ check_protect_retries(void)
|
||||
entry_ptr->verify_ct = 0;
|
||||
|
||||
cache_entry_ptr = (H5C_cache_entry_t *)H5C_protect(file_ptr, H5AC_ind_read_dxpl_id,
|
||||
&(types[type]), entry_ptr->addr, &entry_ptr->addr, H5C__READ_ONLY_FLAG);
|
||||
types[type], entry_ptr->addr, &entry_ptr->addr, H5C__READ_ONLY_FLAG);
|
||||
|
||||
if((cache_entry_ptr != (void *)entry_ptr) ||
|
||||
(!(entry_ptr->header.is_protected)) ||
|
||||
(!(entry_ptr->header.is_read_only)) ||
|
||||
(entry_ptr->header.ro_ref_count <= 0) ||
|
||||
(entry_ptr->header.type != &(types[type])) ||
|
||||
(entry_ptr->header.type != types[type]) ||
|
||||
(entry_ptr->size != entry_ptr->header.size) ||
|
||||
(entry_ptr->addr != entry_ptr->header.addr) ||
|
||||
(entry_ptr->verify_ct != entry_ptr->max_verify_ct)) {
|
||||
@ -17317,7 +17317,7 @@ check_protect_retries(void)
|
||||
entry_ptr->verify_ct = 0;
|
||||
|
||||
cache_entry_ptr = (H5C_cache_entry_t *)H5C_protect(file_ptr, H5AC_ind_read_dxpl_id,
|
||||
&(types[type]), entry_ptr->addr, &entry_ptr->addr, H5C__READ_ONLY_FLAG);
|
||||
types[type], entry_ptr->addr, &entry_ptr->addr, H5C__READ_ONLY_FLAG);
|
||||
|
||||
/* H5C_protect() should fail after all retries fail */
|
||||
if(cache_entry_ptr != NULL)
|
||||
|
@ -288,27 +288,9 @@ const haddr_t alt_base_addrs[NUMBER_OF_ENTRY_TYPES] =
|
||||
NOTIFY_ALT_BASE_ADDR
|
||||
};
|
||||
|
||||
const char *entry_type_names[NUMBER_OF_ENTRY_TYPES] =
|
||||
{
|
||||
"pico entries -- 1 B",
|
||||
"nano entries -- 4 B",
|
||||
"micro entries -- 16 B",
|
||||
"tiny entries -- 64 B",
|
||||
"small entries -- 256 B",
|
||||
"medium entries -- 1 KB",
|
||||
"large entries -- 4 KB",
|
||||
"huge entries -- 16 KB",
|
||||
"monster entries -- 64 KB",
|
||||
"variable entries -- 1B - 10KB",
|
||||
"notify entries -- 1B"
|
||||
};
|
||||
|
||||
|
||||
/* callback table declaration */
|
||||
|
||||
const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
{
|
||||
{
|
||||
/* Callback classes */
|
||||
static const H5C_class_t pico_class[1] = {{
|
||||
PICO_ENTRY_TYPE,
|
||||
"pico_entry",
|
||||
H5FD_MEM_DEFAULT,
|
||||
@ -323,8 +305,9 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
NULL,
|
||||
pico_free_icr,
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
}};
|
||||
|
||||
static const H5C_class_t nano_class[1] = {{
|
||||
NANO_ENTRY_TYPE,
|
||||
"nano_entry",
|
||||
H5FD_MEM_DEFAULT,
|
||||
@ -339,8 +322,9 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
NULL,
|
||||
nano_free_icr,
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
}};
|
||||
|
||||
static const H5C_class_t micro_class[1] = {{
|
||||
MICRO_ENTRY_TYPE,
|
||||
"micro_entry",
|
||||
H5FD_MEM_DEFAULT,
|
||||
@ -355,8 +339,9 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
NULL,
|
||||
micro_free_icr,
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
}};
|
||||
|
||||
static const H5C_class_t tiny_class[1] = {{
|
||||
TINY_ENTRY_TYPE,
|
||||
"tiny_entry",
|
||||
H5FD_MEM_DEFAULT,
|
||||
@ -371,8 +356,9 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
NULL,
|
||||
tiny_free_icr,
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
}};
|
||||
|
||||
static const H5C_class_t small_class[1] = {{
|
||||
SMALL_ENTRY_TYPE,
|
||||
"small_entry",
|
||||
H5FD_MEM_DEFAULT,
|
||||
@ -387,8 +373,9 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
NULL,
|
||||
small_free_icr,
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
}};
|
||||
|
||||
static const H5C_class_t medium_class[1] = {{
|
||||
MEDIUM_ENTRY_TYPE,
|
||||
"medium_entry",
|
||||
H5FD_MEM_DEFAULT,
|
||||
@ -403,8 +390,9 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
NULL,
|
||||
medium_free_icr,
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
}};
|
||||
|
||||
static const H5C_class_t large_class[1] = {{
|
||||
LARGE_ENTRY_TYPE,
|
||||
"large_entry",
|
||||
H5FD_MEM_DEFAULT,
|
||||
@ -419,8 +407,9 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
NULL,
|
||||
large_free_icr,
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
}};
|
||||
|
||||
static const H5C_class_t huge_class[1] = {{
|
||||
HUGE_ENTRY_TYPE,
|
||||
"huge_entry",
|
||||
H5FD_MEM_DEFAULT,
|
||||
@ -435,8 +424,9 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
NULL,
|
||||
huge_free_icr,
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
}};
|
||||
|
||||
static const H5C_class_t monster_class[1] = {{
|
||||
MONSTER_ENTRY_TYPE,
|
||||
"monster_entry",
|
||||
H5FD_MEM_DEFAULT,
|
||||
@ -451,8 +441,9 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
NULL,
|
||||
monster_free_icr,
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
}};
|
||||
|
||||
static const H5C_class_t variable_class[1] = {{
|
||||
VARIABLE_ENTRY_TYPE,
|
||||
"variable_entry",
|
||||
H5FD_MEM_DEFAULT,
|
||||
@ -467,8 +458,9 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
NULL,
|
||||
variable_free_icr,
|
||||
NULL,
|
||||
},
|
||||
{
|
||||
}};
|
||||
|
||||
static const H5C_class_t notify_class[1] = {{
|
||||
NOTIFY_ENTRY_TYPE,
|
||||
"notify_entry",
|
||||
H5FD_MEM_DEFAULT,
|
||||
@ -483,7 +475,22 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
notify_notify,
|
||||
notify_free_icr,
|
||||
NULL,
|
||||
}
|
||||
}};
|
||||
|
||||
/* callback table declaration */
|
||||
|
||||
const H5C_class_t *types[NUMBER_OF_ENTRY_TYPES] = {
|
||||
pico_class,
|
||||
nano_class,
|
||||
micro_class,
|
||||
tiny_class,
|
||||
small_class,
|
||||
medium_class,
|
||||
large_class,
|
||||
huge_class,
|
||||
monster_class,
|
||||
variable_class,
|
||||
notify_class
|
||||
};
|
||||
|
||||
/* address translation functions: */
|
||||
@ -3300,7 +3307,7 @@ setup_cache(size_t max_cache_size,
|
||||
cache_ptr = H5C_create(max_cache_size,
|
||||
min_clean_size,
|
||||
(NUMBER_OF_ENTRY_TYPES - 1),
|
||||
(const char **)entry_type_names,
|
||||
types,
|
||||
check_write_permitted,
|
||||
TRUE,
|
||||
NULL,
|
||||
@ -3533,7 +3540,7 @@ expunge_entry(H5F_t * file_ptr,
|
||||
HDassert( ! ( entry_ptr->is_pinned ) );
|
||||
|
||||
result = H5C_expunge_entry(file_ptr, H5AC_ind_read_dxpl_id,
|
||||
&(types[type]), entry_ptr->addr, H5C__NO_FLAGS_SET);
|
||||
types[type], entry_ptr->addr, H5C__NO_FLAGS_SET);
|
||||
|
||||
if ( result < 0 ) {
|
||||
|
||||
@ -3754,11 +3761,11 @@ insert_entry(H5F_t * file_ptr,
|
||||
}
|
||||
|
||||
result = H5C_insert_entry(file_ptr, xfer,
|
||||
&(types[type]), entry_ptr->addr, (void *)entry_ptr, flags);
|
||||
types[type], entry_ptr->addr, (void *)entry_ptr, flags);
|
||||
|
||||
if ( ( result < 0 ) ||
|
||||
( entry_ptr->header.is_protected ) ||
|
||||
( entry_ptr->header.type != &(types[type]) ) ||
|
||||
( entry_ptr->header.type != types[type] ) ||
|
||||
( entry_ptr->size != entry_ptr->header.size ) ||
|
||||
( entry_ptr->addr != entry_ptr->header.addr ) ) {
|
||||
|
||||
@ -3771,8 +3778,8 @@ insert_entry(H5F_t * file_ptr,
|
||||
HDfprintf(stdout, "entry_ptr->header.is_protected = %d\n",
|
||||
(int)(entry_ptr->header.is_protected));
|
||||
HDfprintf(stdout,
|
||||
"entry_ptr->header.type != &(types[type]) = %d\n",
|
||||
(int)(entry_ptr->header.type != &(types[type])));
|
||||
"entry_ptr->header.type != types[type] = %d\n",
|
||||
(int)(entry_ptr->header.type != types[type]));
|
||||
HDfprintf(stdout,
|
||||
"entry_ptr->size != entry_ptr->header.size = %d\n",
|
||||
(int)(entry_ptr->size != entry_ptr->header.size));
|
||||
@ -3855,7 +3862,7 @@ mark_entry_dirty(int32_t type,
|
||||
( !entry_ptr->header.is_protected && !entry_ptr->header.is_pinned ) ||
|
||||
( entry_ptr->header.is_protected && !entry_ptr->header.dirtied ) ||
|
||||
( !entry_ptr->header.is_protected && !entry_ptr->header.is_dirty ) ||
|
||||
( entry_ptr->header.type != &(types[type]) ) ||
|
||||
( entry_ptr->header.type != types[type] ) ||
|
||||
( entry_ptr->size != entry_ptr->header.size ) ||
|
||||
( entry_ptr->addr != entry_ptr->header.addr ) ) {
|
||||
|
||||
@ -3948,7 +3955,7 @@ move_entry(H5C_t * cache_ptr,
|
||||
mark_flush_dep_dirty(entry_ptr);
|
||||
|
||||
entry_ptr->action = TEST_ENTRY_ACTION_MOVE;
|
||||
result = H5C_move_entry(cache_ptr, &(types[type]), old_addr, new_addr);
|
||||
result = H5C_move_entry(cache_ptr, types[type], old_addr, new_addr);
|
||||
entry_ptr->action = TEST_ENTRY_ACTION_NUL;
|
||||
}
|
||||
|
||||
@ -4027,12 +4034,12 @@ protect_entry(H5F_t * file_ptr, int32_t type, int32_t idx)
|
||||
} /* end if */
|
||||
|
||||
cache_entry_ptr = (H5C_cache_entry_t *)H5C_protect(file_ptr, xfer,
|
||||
&(types[type]), entry_ptr->addr, &entry_ptr->addr,
|
||||
types[type], entry_ptr->addr, &entry_ptr->addr,
|
||||
H5C__NO_FLAGS_SET);
|
||||
|
||||
if ( ( cache_entry_ptr != (void *)entry_ptr ) ||
|
||||
( !(entry_ptr->header.is_protected) ) ||
|
||||
( entry_ptr->header.type != &(types[type]) ) ||
|
||||
( entry_ptr->header.type != types[type] ) ||
|
||||
( entry_ptr->size != entry_ptr->header.size ) ||
|
||||
( entry_ptr->addr != entry_ptr->header.addr ) ) {
|
||||
|
||||
@ -4049,8 +4056,8 @@ protect_entry(H5F_t * file_ptr, int32_t type, int32_t idx)
|
||||
HDfprintf(stdout, "entry_ptr->header.is_protected = %d\n",
|
||||
(int)(entry_ptr->header.is_protected));
|
||||
HDfprintf(stdout,
|
||||
"( entry_ptr->header.type != &(types[type]) ) = %d\n",
|
||||
(int)( entry_ptr->header.type != &(types[type]) ));
|
||||
"( entry_ptr->header.type != types[type] ) = %d\n",
|
||||
(int)( entry_ptr->header.type != types[type] ));
|
||||
HDfprintf(stdout,
|
||||
"entry_ptr->size = %d, entry_ptr->header.size = %d\n",
|
||||
(int)(entry_ptr->size), (int)(entry_ptr->header.size));
|
||||
@ -4131,13 +4138,13 @@ protect_entry_ro(H5F_t * file_ptr,
|
||||
( entry_ptr->ro_ref_count > 0 ) ) );
|
||||
|
||||
cache_entry_ptr = (H5C_cache_entry_t *)H5C_protect(file_ptr, H5AC_ind_read_dxpl_id,
|
||||
&(types[type]), entry_ptr->addr, &entry_ptr->addr, H5C__READ_ONLY_FLAG);
|
||||
types[type], entry_ptr->addr, &entry_ptr->addr, H5C__READ_ONLY_FLAG);
|
||||
|
||||
if ( ( cache_entry_ptr != (void *)entry_ptr ) ||
|
||||
( !(entry_ptr->header.is_protected) ) ||
|
||||
( !(entry_ptr->header.is_read_only) ) ||
|
||||
( entry_ptr->header.ro_ref_count <= 0 ) ||
|
||||
( entry_ptr->header.type != &(types[type]) ) ||
|
||||
( entry_ptr->header.type != types[type] ) ||
|
||||
( entry_ptr->size != entry_ptr->header.size ) ||
|
||||
( entry_ptr->addr != entry_ptr->header.addr ) ) {
|
||||
|
||||
@ -4268,7 +4275,7 @@ unpin_entry(int32_t type,
|
||||
if ( ( result < 0 ) ||
|
||||
( entry_ptr->header.pinned_from_client ) ||
|
||||
( entry_ptr->header.is_pinned && !entry_ptr->header.pinned_from_cache ) ||
|
||||
( entry_ptr->header.type != &(types[type]) ) ||
|
||||
( entry_ptr->header.type != types[type] ) ||
|
||||
( entry_ptr->size != entry_ptr->header.size ) ||
|
||||
( entry_ptr->addr != entry_ptr->header.addr ) ) {
|
||||
|
||||
@ -4353,7 +4360,7 @@ unprotect_entry(H5F_t * file_ptr,
|
||||
( ( entry_ptr->header.is_protected ) &&
|
||||
( ( ! ( entry_ptr->is_read_only ) ) ||
|
||||
( entry_ptr->ro_ref_count <= 0 ) ) ) ||
|
||||
( entry_ptr->header.type != &(types[type]) ) ||
|
||||
( entry_ptr->header.type != types[type] ) ||
|
||||
( entry_ptr->size != entry_ptr->header.size ) ||
|
||||
( entry_ptr->addr != entry_ptr->header.addr ) ) {
|
||||
|
||||
|
@ -553,11 +553,10 @@ H5TEST_DLLVAR const int32_t max_indices[NUMBER_OF_ENTRY_TYPES];
|
||||
H5TEST_DLLVAR const size_t entry_sizes[NUMBER_OF_ENTRY_TYPES];
|
||||
H5TEST_DLLVAR const haddr_t base_addrs[NUMBER_OF_ENTRY_TYPES];
|
||||
H5TEST_DLLVAR const haddr_t alt_base_addrs[NUMBER_OF_ENTRY_TYPES];
|
||||
H5TEST_DLLVAR const char * entry_type_names[NUMBER_OF_ENTRY_TYPES];
|
||||
|
||||
/* callback table extern */
|
||||
|
||||
H5TEST_DLLVAR const H5C_class_t types[NUMBER_OF_ENTRY_TYPES];
|
||||
H5TEST_DLLVAR const H5C_class_t *types[NUMBER_OF_ENTRY_TYPES];
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
|
@ -410,7 +410,8 @@ static herr_t datum_notify(H5C_notify_action_t action, void *thing);
|
||||
|
||||
static herr_t datum_free_icr(void * thing);
|
||||
|
||||
#define DATUM_ENTRY_TYPE H5AC_TEST_ID
|
||||
/* Masquerade as object header entries to the cache */
|
||||
#define DATUM_ENTRY_TYPE H5AC_OHDR_ID
|
||||
|
||||
#define NUMBER_OF_ENTRY_TYPES 1
|
||||
|
||||
@ -434,7 +435,7 @@ const H5C_class_t types[NUMBER_OF_ENTRY_TYPES] =
|
||||
{
|
||||
/* id */ DATUM_ENTRY_TYPE,
|
||||
/* name */ "datum",
|
||||
/* mem_type */ H5FD_MEM_DEFAULT,
|
||||
/* mem_type */ H5FD_MEM_OHDR,
|
||||
/* flags */ H5AC__CLASS_SKIP_READS | H5AC__CLASS_SKIP_WRITES,
|
||||
/* get_initial_load_size */ datum_get_initial_load_size,
|
||||
/* get_final_load_size */ NULL,
|
||||
|
Loading…
x
Reference in New Issue
Block a user