diff options
author | Dana Robinson <43805+derobins@users.noreply.github.com> | 2022-07-25 16:51:09 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-07-25 16:51:09 (GMT) |
commit | df1ce61f1b4884681c00b342a8651e4d48a91881 (patch) | |
tree | ce24cfa54a8727eb9c3cefb452ccbd3396925328 /src/H5Cpkg.h | |
parent | b49c2847181e67e0cc2e123cf63fc86643f54a6d (diff) | |
download | hdf5-df1ce61f1b4884681c00b342a8651e4d48a91881.zip hdf5-df1ce61f1b4884681c00b342a8651e4d48a91881.tar.gz hdf5-df1ce61f1b4884681c00b342a8651e4d48a91881.tar.bz2 |
Switches the tagged metadata list from a skip list to a hash table (#1925)
Diffstat (limited to 'src/H5Cpkg.h')
-rw-r--r-- | src/H5Cpkg.h | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/src/H5Cpkg.h b/src/H5Cpkg.h index 61c3afc..5caa051 100644 --- a/src/H5Cpkg.h +++ b/src/H5Cpkg.h @@ -3566,15 +3566,17 @@ if ( ( (entry_ptr) == NULL ) || \ * * The fields of this structure are discussed individually below: * - * tag: Address (i.e. "tag") of the object header for all the entries + * tag: Address (i.e. "tag") of the object header for all the entries * corresponding to parts of that object. * - * head: Head of doubly-linked list of all entries belonging to the tag. + * head: Head of doubly-linked list of all entries belonging to the tag. * - * entry_cnt: Number of entries on linked list of entries for this tag. + * entry_cnt: Number of entries on linked list of entries for this tag. * - * corked: Boolean flag indicating whether entries for this object can be - * evicted. + * corked: Boolean flag indicating whether entries for this object can be + * evicted. + * + * hh: uthash hash table handle (must be last) * ****************************************************************************/ typedef struct H5C_tag_info_t { @@ -3582,6 +3584,9 @@ typedef struct H5C_tag_info_t { H5C_cache_entry_t *head; /* Head of the list of entries for this tag */ size_t entry_cnt; /* Number of entries on list */ hbool_t corked; /* Whether this object is corked */ + + /* Hash table fields */ + UT_hash_handle hh; /* Hash table handle (must be LAST) */ } H5C_tag_info_t; @@ -3974,17 +3979,17 @@ typedef struct H5C_tag_info_t { * * The following fields are maintained to facilitate this. * - * tag_list: A skip list to track entries that belong to an object. - * Each H5C_tag_info_t struct on the tag list corresponds to - * a particular object in the file. Tagged entries can be - * flushed or evicted as a group, or corked to prevent entries - * from being evicted from the cache. + * tag_list: A collection to track entries that belong to an object. + * Each H5C_tag_info_t struct on the tag list corresponds to + * a particular object in the file. Tagged entries can be + * flushed or evicted as a group, or corked to prevent entries + * from being evicted from the cache. * - * "Global" entries, like the superblock and the file's - * freelist, as well as shared entries like global - * heaps and shared object header messages, are not tagged. + * "Global" entries, like the superblock and the file's + * freelist, as well as shared entries like global + * heaps and shared object header messages, are not tagged. * - * ignore_tags: Boolean flag to disable tag validation during entry insertion. + * ignore_tags: Boolean flag to disable tag validation during entry insertion. * * num_objs_corked: Unsigned integer field containing the number of objects * that are "corked". The "corked" status of an object is @@ -4863,7 +4868,7 @@ struct H5C_t { #endif /* H5C_DO_SANITY_CHECKS */ /* Fields for maintaining list of tagged entries */ - H5SL_t * tag_list; + H5C_tag_info_t * tag_list; hbool_t ignore_tags; uint32_t num_objs_corked; |