diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2021-11-07 20:18:31 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2021-11-14 13:29:42 +0200 |
commit | 322f6e9c3c13d3079306628b96864f728f87be62 (patch) | |
tree | 997592aae23da27552e9cbc3549dd58b2e044e5b /src/proto.h | |
parent | 45d2ce49d88bc59bbc84dc738a55142205a6e2ce (diff) | |
download | gdbm-322f6e9c3c13d3079306628b96864f728f87be62.tar.gz |
Switch to hash table cache implementation
* src/cachetree.c: Remove.
* src/Makefile.am: Remove cachetree.c
* doc/gdbm.texi: Document the changes.
* src/bucket.c (cache_tab_lookup_slot)
(cache_tab_resize): New function.
(cache_elem_new): Initialize ca_coll.
(cache_elem_free, cache_lookup)
(_gdbm_cache_init,_gdbm_cache_free): Rewrite with hash-based cache lookup.
(_gdbm_fetch_data): Remove unused function.
* src/gdbm.h.in (GDBM_GETDBFORMAT, GDBM_GETDIRDEPTH)
(GDBM_GETBUCKETSIZE, GDBM_GETCACHEAUTO, GDBM_SETCACHEAUTO): New option codes.
* src/gdbmdefs.h (cache_node): Remove.
(cache_elem): Remove ca_node. Add ca_coll (collision resolution pointer).
(gdbm_file_info): New members: cache_auto, cache_bits, cache.
* src/gdbmopen.c (gdbm_fd_open): Change cache initialization.
* src/gdbmsetopt.c (GDBM_GETDBFORMAT,GDBM_GETDIRDEPTH)
(GDBM_GETBUCKETSIZE,GDBM_GETCACHEAUTO)
(GDBM_SETCACHEAUTO): Implement new options.
(setopt_gdbm_getflags): Reflect the state of GDBM_CLOEXEC and GDBM_NUMSYNC.
* src/proto.h (_gdbm_fetch_data,_gdbm_cache_tree_alloc)
(_gdbm_cache_tree_destroy,_gdbm_cache_tree_delete)
(_gdbm_cache_tree_lookup): Remove protos.
* src/recover.c (_gdbm_finish_transfer): Restore original cache settings.
* tests/Makefile.am: Add new test.
* tests/testsuite.at: Likewise.
* tests/gtcacheopt.c: New file.
* tests/setopt02.at: New test case.
Diffstat (limited to 'src/proto.h')
-rw-r--r-- | src/proto.h | 15 |
1 files changed, 0 insertions, 15 deletions
diff --git a/src/proto.h b/src/proto.h index a5d6d10..68b2bc3 100644 --- a/src/proto.h +++ b/src/proto.h @@ -20,7 +20,6 @@ /* From bucket.c */ void _gdbm_new_bucket (GDBM_FILE, hash_bucket *, int); int _gdbm_get_bucket (GDBM_FILE, int); -int _gdbm_fetch_data (GDBM_FILE dbf, off_t off, size_t size, void *buf); int _gdbm_split_bucket (GDBM_FILE, int); int _gdbm_write_bucket (GDBM_FILE, cache_elem *); @@ -103,10 +102,6 @@ int _gdbm_dump (GDBM_FILE dbf, FILE *fp); /* From recover.c */ int _gdbm_next_bucket_dir (GDBM_FILE dbf, int bucket_dir); -/* cachetree.c */ -cache_tree *_gdbm_cache_tree_alloc (void); -void _gdbm_cache_tree_destroy (cache_tree *tree); -void _gdbm_cache_tree_delete (cache_tree *tree, struct cache_node *n); /* avail.c */ int gdbm_avail_block_validate (GDBM_FILE dbf, avail_block *avblk, size_t size); @@ -116,16 +111,6 @@ int gdbm_avail_traverse (GDBM_FILE dbf, void *data); -/* Return codes for _gdbm_cache_tree_lookup. */ -enum - { - node_found, /* Returned element was found in cache. */ - node_new, /* Returned element has been created and inserted to cache */ - node_failure /* An error occurred. */ - }; - -int _gdbm_cache_tree_lookup (cache_tree *tree, off_t adr, cache_node **retval); - /* I/O functions */ static inline ssize_t gdbm_file_read (GDBM_FILE dbf, void *buf, size_t size) |