git: c09ccfc2665b - main - libc/db: Remove unused hash functions in hash_func.c
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 24 Mar 2026 10:38:08 UTC
The branch main has been updated by bnovkov:
URL: https://cgit.FreeBSD.org/src/commit/?id=c09ccfc2665bef0d81d1db4e3713e4f2a0b5a064
commit c09ccfc2665bef0d81d1db4e3713e4f2a0b5a064
Author: Bojan Novković <bnovkov@FreeBSD.org>
AuthorDate: 2026-03-13 11:03:26 +0000
Commit: Bojan Novković <bnovkov@FreeBSD.org>
CommitDate: 2026-03-24 10:34:55 +0000
libc/db: Remove unused hash functions in hash_func.c
Prune unused code hidden behind 'notdef', bringing us in sync with
the changes in OpenBSD. Despite the `__default_hash` function pointer
having external linkage, no ABI change is expected since it was
never exported.
Sponsored by: Klara, Inc.
Differential Revision: https://reviews.freebsd.org/D55842
Reviewed by: allanjude, des
MFC after: 2 weeks
---
lib/libc/db/hash/extern.h | 2 +-
lib/libc/db/hash/hash_func.c | 107 +------------------------------------------
2 files changed, 2 insertions(+), 107 deletions(-)
diff --git a/lib/libc/db/hash/extern.h b/lib/libc/db/hash/extern.h
index d3850752ad3a..690219d30606 100644
--- a/lib/libc/db/hash/extern.h
+++ b/lib/libc/db/hash/extern.h
@@ -54,7 +54,7 @@ void __reclaim_buf(HTAB *, BUFHEAD *);
int __split_page(HTAB *, u_int32_t, u_int32_t);
/* Default hash routine. */
-extern u_int32_t (*__default_hash)(const void *, size_t);
+u_int32_t __default_hash(const void *, size_t);
#ifdef HASH_STATISTICS
extern int hash_accesses, hash_collisions, hash_expansions, hash_overflows;
diff --git a/lib/libc/db/hash/hash_func.c b/lib/libc/db/hash/hash_func.c
index 529180b7698d..29597a04d3c0 100644
--- a/lib/libc/db/hash/hash_func.c
+++ b/lib/libc/db/hash/hash_func.c
@@ -39,114 +39,9 @@
#include "page.h"
#include "extern.h"
-#ifdef notdef
-static u_int32_t hash1(const void *, size_t) __unused;
-static u_int32_t hash2(const void *, size_t) __unused;
-static u_int32_t hash3(const void *, size_t) __unused;
-#endif
-static u_int32_t hash4(const void *, size_t);
-
-/* Default hash function. */
-u_int32_t (*__default_hash)(const void *, size_t) = hash4;
-
-#ifdef notdef
-/*
- * Assume that we've already split the bucket to which this key hashes,
- * calculate that bucket, and check that in fact we did already split it.
- *
- * EJB's original hsearch hash.
- */
-#define PRIME1 37
-#define PRIME2 1048583
-
-u_int32_t
-hash1(const void *key, size_t len)
-{
- u_int32_t h;
- u_int8_t *k;
-
- h = 0;
- k = (u_int8_t *)key;
- /* Convert string to integer */
- while (len--)
- h = h * PRIME1 ^ (*k++ - ' ');
- h %= PRIME2;
- return (h);
-}
-
-/*
- * Phong Vo's linear congruential hash
- */
-#define dcharhash(h, c) ((h) = 0x63c63cd9*(h) + 0x9c39c33d + (c))
-
-u_int32_t
-hash2(const void *key, size_t len)
-{
- u_int32_t h;
- u_int8_t *e, c, *k;
-
- k = (u_int8_t *)key;
- e = k + len;
- for (h = 0; k != e;) {
- c = *k++;
- if (!c && k > e)
- break;
- dcharhash(h, c);
- }
- return (h);
-}
-
-/*
- * This is INCREDIBLY ugly, but fast. We break the string up into 8 byte
- * units. On the first time through the loop we get the "leftover bytes"
- * (strlen % 8). On every other iteration, we perform 8 HASHC's so we handle
- * all 8 bytes. Essentially, this saves us 7 cmp & branch instructions. If
- * this routine is heavily used enough, it's worth the ugly coding.
- *
- * Ozan Yigit's original sdbm hash.
- */
-u_int32_t
-hash3(const void *key, size_t len)
-{
- u_int32_t n, loop;
- u_int8_t *k;
-
-#define HASHC n = *k++ + 65599 * n
-
- n = 0;
- k = (u_int8_t *)key;
- if (len > 0) {
- loop = (len + 8 - 1) >> 3;
-
- switch (len & (8 - 1)) {
- case 0:
- do { /* All fall throughs */
- HASHC;
- case 7:
- HASHC;
- case 6:
- HASHC;
- case 5:
- HASHC;
- case 4:
- HASHC;
- case 3:
- HASHC;
- case 2:
- HASHC;
- case 1:
- HASHC;
- } while (--loop);
- }
-
- }
- return (n);
-}
-#endif /* notdef */
-
/* Chris Torek's hash function. */
u_int32_t
-hash4(const void *key, size_t len)
+__default_hash(const void *key, size_t len)
{
u_int32_t h, loop;
const u_int8_t *k;