diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-06-09 15:16:55 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-06-09 15:16:55 +0000 |
commit | bf7997b65c7887d2acda95f5201d818a19d81711 (patch) | |
tree | da3583de3a0b5892f90a4b1eb773a87b554ae37e /db2/hash/hash.c | |
parent | 7646e67e6cc4c738a7b402c60fed39d52db0433b (diff) | |
download | glibc-bf7997b65c7887d2acda95f5201d818a19d81711.tar glibc-bf7997b65c7887d2acda95f5201d818a19d81711.tar.gz glibc-bf7997b65c7887d2acda95f5201d818a19d81711.tar.bz2 glibc-bf7997b65c7887d2acda95f5201d818a19d81711.zip |
Update.
1998-06-09 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/netinet/ip.h (struct ip_options): Define
__data member only for gcc. Reported by ak@muc.de.
* misc/mntent.h: Undo last patch.
* sysdeps/unix/sysv/linux/fstatvfs.c (fstatvfs): Undo last patch.
* misc/tst/mntent.c: Adjust code for this change.
* io/fts.c: Updated from a slightly more recent BSD version.
* io/fts.h: Likewise.
* libc.map: Add __libc_stack_end.
* db2/Makefile (routines): Add lock_region.
* db2/config.h: Update from db-2.4.14.
* db2/db.h: Likewise.
* db2/db_185.h: Likewise.
* db2/db_int.h: Likewise.
* db2/bt_close.c: Likewise.
* db2/bt_compare.c: Likewise.
* db2/bt_conv.c: Likewise.
* db2/bt_cursor.c: Likewise.
* db2/bt_delete.c: Likewise.
* db2/bt_open.c: Likewise.
* db2/bt_page.c: Likewise.
* db2/bt_put.c: Likewise.
* db2/bt_rec.c: Likewise.
* db2/bt_recno.c: Likewise.
* db2/bt_rsearch.c: Likewise.
* db2/bt_search.c: Likewise.
* db2/bt_split.c: Likewise.
* db2/bt_stat.c: Likewise.
* db2/btree.src: Likewise.
* db2/btree_auto.c: Likewise.
* db2/getlong.c: Likewise.
* db2/db_appinit.c: Likewise.
* db2/db_apprec.c: Likewise.
* db2/db_byteorder.c: Likewise.
* db2/db_err.c: Likewise.
* db2/db_log2.c: Likewise.
* db2/db_region.c: Likewise.
* db2/db_salloc.c: Likewise.
* db2/db_shash.c: Likewise.
* db2/db.c: Likewise.
* db2/db.src: Likewise.
* db2/db_auto.c: Likewise.
* db2/db_conv.c: Likewise.
* db2/db_dispatch.c: Likewise.
* db2/db_dup.c: Likewise.
* db2/db_overflow.c: Likewise.
* db2/db_pr.c: Likewise.
* db2/db_rec.c: Likewise.
* db2/db_ret.c: Likewise.
* db2/db_thread.c: Likewise.
* db2/db185.c: Likewise.
* db2/db185_int.h: Likewise.
* db2/dbm.c: Likewise.
* db2/hash.c: Likewise.
* db2/hash.src: Likewise.
* db2/hash_auto.c: Likewise.
* db2/hash_conv.c: Likewise.
* db2/hash_debug.c: Likewise.
* db2/hash_dup.c: Likewise.
* db2/hash_func.c: Likewise.
* db2/hash_page.c: Likewise.
* db2/hash_rec.c: Likewise.
* db2/hash_stat.c: Likewise.
* db2/btree.h: Likewise.
* db2/btree_ext.h: Likewise.
* db2/clib_ext.h: Likewise.
* db2/common_ext.h: Likewise.
* db2/cxx_int.h: Likewise.
* db2/db.h.src: Likewise.
* db2/db_185.h.src: Likewise.
* db2/db_am.h: Likewise.
* db2/db_auto.h: Likewise.
* db2/db_cxx.h: Likewise.
* db2/db_dispatch.h: Likewise.
* db2/db_ext.h: Likewise.
* db2/db_int.h.src: Likewise.
* db2/db_page.h: Likewise.
* db2/db_shash.h: Likewise.
* db2/db_swap.h: Likewise.
* db2/hash.h: Likewise.
* db2/hash_ext.h: Likewise.
* db2/lock.h: Likewise.
* db2/lock_ext.h: Likewise.
* db2/log.h: Likewise.
* db2/log_ext.h: Likewise.
* db2/mp.h: Likewise.
* db2/mp_ext.h: Likewise.
* db2/mutex_ext.h: Likewise.
* db2/os_ext.h: Likewise.
* db2/os_func.h: Likewise.
* db2/queue.h: Likewise.
* db2/shqueue.h: Likewise.
* db2/txn.h: Likewise.
* db2/lock.c: Likewise.
* db2/lock_conflict.c: Likewise.
* db2/lock_deadlock.c: Likewise.
* db2/lock_region.c: Likewise.
* db2/lock_util.c: Likewise.
* db2/log.c: Likewise.
* db2/log.src: Likewise.
* db2/log_archive.c: Likewise.
* db2/log_auto.c: Likewise.
* db2/log_compare.c: Likewise.
* db2/log_findckp.c: Likewise.
* db2/log_get.c: Likewise.
* db2/log_put.c: Likewise.
* db2/log_rec.c: Likewise.
* db2/log_register.c: Likewise.
* db2/mp_bh.c: Likewise.
* db2/mp_fget.c: Likewise.
* db2/mp_fopen.c: Likewise.
* db2/mp_fput.c: Likewise.
* db2/mp_fset.c: Likewise.
* db2/mp_open.c: Likewise.
* db2/mp_pr.c: Likewise.
* db2/mp_region.c: Likewise.
* db2/mp_sync.c: Likewise.
* db2/68020.gcc: Likewise.
* db2/mutex.c: Likewise.
* db2/parisc.gcc: Likewise.
* db2/parisc.hp: Likewise.
* db2/sco.cc: Likewise.
* db2/os_abs.c: Likewise.
* db2/os_alloc.c: Likewise.
* db2/os_config.c: Likewise.
* db2/os_dir.c: Likewise.
* db2/os_fid.c: Likewise.
* db2/os_fsync.c: Likewise.
* db2/os_map.c: Likewise.
* db2/os_oflags.c: Likewise.
* db2/os_open.c: Likewise.
* db2/os_rpath.c: Likewise.
* db2/os_rw.c: Likewise.
* db2/os_seek.c: Likewise.
* db2/os_sleep.c: Likewise.
* db2/os_spin.c: Likewise.
* db2/os_stat.c: Likewise.
* db2/os_unlink.c: Likewise.
* db2/db_archive.c: Likewise.
* db2/db_checkpoint.c: Likewise.
* db2/db_deadlock.c: Likewise.
* db2/db_dump.c: Likewise.
* db2/db_dump185.c: Likewise.
* db2/db_load.c: Likewise.
* db2/db_printlog.c: Likewise.
* db2/db_recover.c: Likewise.
* db2/db_stat.c: Likewise.
* db2/txn.c: Likewise.
* db2/txn.src: Likewise.
* db2/txn_auto.c: Likewise.
* db2/txn_rec.c: Likewise.
* elf/rtld.c: Move definition of __libc_stack_end to ...
* sysdeps/generic/dl-sysdep.h: ...here.
* sysdeps/unix/sysv/linux/fstatvfs.c: Handle nodiratime option.
* sysdeps/unix/sysv/linux/bits/statvfs.h: Define ST_NODIRATIME.
* sysdeps/unix/sysv/linux/sys/mount.h: Define MS_NODIRATIME.
1998-06-08 21:44 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/fstatvfs.c: Handle constant option string
from mntent correctly.
1998-06-06 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* sunrpc/Makefile (generated): Correct typo.
1998-06-04 Philip Blundell <philb@gnu.org>
* elf/elf.h (EM_ARM, et al.): New definitions.
* sysdeps/arm/dl-machine.h: Update for new draft ARM ELF ABI.
Diffstat (limited to 'db2/hash/hash.c')
-rw-r--r-- | db2/hash/hash.c | 92 |
1 files changed, 43 insertions, 49 deletions
diff --git a/db2/hash/hash.c b/db2/hash/hash.c index 5193ece561..5e0660b727 100644 --- a/db2/hash/hash.c +++ b/db2/hash/hash.c @@ -1,7 +1,7 @@ /*- * See the file LICENSE for redistribution information. * - * Copyright (c) 1996, 1997 + * Copyright (c) 1996, 1997, 1998 * Sleepycat Software. All rights reserved. */ /* @@ -47,23 +47,19 @@ #include "config.h" #ifndef lint -static const char sccsid[] = "@(#)hash.c 10.36 (Sleepycat) 1/8/98"; +static const char sccsid[] = "@(#)hash.c 10.45 (Sleepycat) 5/11/98"; #endif /* not lint */ #ifndef NO_SYSTEM_INCLUDES #include <sys/types.h> -#include <sys/stat.h> #include <errno.h> -#include <fcntl.h> -#include <stdio.h> #include <stdlib.h> #include <string.h> -#include <unistd.h> #endif -#include "shqueue.h" #include "db_int.h" +#include "shqueue.h" #include "db_page.h" #include "db_am.h" #include "db_ext.h" @@ -71,20 +67,20 @@ static const char sccsid[] = "@(#)hash.c 10.36 (Sleepycat) 1/8/98"; #include "log.h" static int __ham_c_close __P((DBC *)); -static int __ham_c_del __P((DBC *, int)); -static int __ham_c_get __P((DBC *, DBT *, DBT *, int)); -static int __ham_c_put __P((DBC *, DBT *, DBT *, int)); +static int __ham_c_del __P((DBC *, u_int32_t)); +static int __ham_c_get __P((DBC *, DBT *, DBT *, u_int32_t)); +static int __ham_c_put __P((DBC *, DBT *, DBT *, u_int32_t)); static int __ham_c_init __P((DB *, DB_TXN *, DBC **)); static int __ham_cursor __P((DB *, DB_TXN *, DBC **)); -static int __ham_delete __P((DB *, DB_TXN *, DBT *, int)); -static int __ham_dup_return __P((HTAB *, HASH_CURSOR *, DBT *, int)); -static int __ham_get __P((DB *, DB_TXN *, DBT *, DBT *, int)); -static void __ham_init_htab __P((HTAB *, u_int)); +static int __ham_delete __P((DB *, DB_TXN *, DBT *, u_int32_t)); +static int __ham_dup_return __P((HTAB *, HASH_CURSOR *, DBT *, u_int32_t)); +static int __ham_get __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t)); +static void __ham_init_htab __P((HTAB *, u_int32_t, u_int32_t)); static int __ham_lookup __P((HTAB *, HASH_CURSOR *, const DBT *, u_int32_t, db_lockmode_t)); static int __ham_overwrite __P((HTAB *, HASH_CURSOR *, DBT *)); -static int __ham_put __P((DB *, DB_TXN *, DBT *, DBT *, int)); -static int __ham_sync __P((DB *, int)); +static int __ham_put __P((DB *, DB_TXN *, DBT *, DBT *, u_int32_t)); +static int __ham_sync __P((DB *, u_int32_t)); /************************** INTERFACE ROUTINES ***************************/ /* OPEN/CLOSE */ @@ -175,9 +171,9 @@ __ham_open(dbp, dbinfo) goto out; } - hashp->hdr->ffactor = - dbinfo != NULL && dbinfo->h_ffactor ? dbinfo->h_ffactor : 0; - __ham_init_htab(hashp, dbinfo != NULL ? dbinfo->h_nelem : 0); + __ham_init_htab(hashp, + dbinfo != NULL ? dbinfo->h_nelem : 0, + dbinfo != NULL ? dbinfo->h_ffactor : 0); if (F_ISSET(dbp, DB_AM_DUP)) F_SET(hashp->hdr, DB_HASH_DUP); if ((ret = __ham_dirty_page(hashp, (PAGE *)hashp->hdr)) != 0) @@ -230,7 +226,7 @@ out: (void)__ham_close(dbp); } /* - * PUBLIC: int __ham_close __P((DB *)); + * PUBLIC: int __ham_close __P((DB *)); */ int __ham_close(dbp) @@ -264,13 +260,14 @@ __ham_close(dbp) * Returns 0 on No Error */ static void -__ham_init_htab(hashp, nelem) +__ham_init_htab(hashp, nelem, ffactor) HTAB *hashp; - u_int nelem; + u_int32_t nelem, ffactor; { int32_t l2, nbuckets; - hashp->hdr->nelem = 0; + memset(hashp->hdr, 0, sizeof(HASHHDR)); + hashp->hdr->ffactor = ffactor; hashp->hdr->pagesize = hashp->dbp->pgsize; ZERO_LSN(hashp->hdr->lsn); hashp->hdr->magic = DB_HASHMAGIC; @@ -287,8 +284,6 @@ __ham_init_htab(hashp, nelem) nbuckets = 1 << l2; - hashp->hdr->spares[l2] = 0; - hashp->hdr->spares[l2 + 1] = 0; hashp->hdr->ovfl_point = l2; hashp->hdr->last_freed = PGNO_INVALID; @@ -310,7 +305,7 @@ __ham_init_htab(hashp, nelem) static int __ham_sync(dbp, flags) DB *dbp; - int flags; + u_int32_t flags; { int ret; @@ -342,10 +337,9 @@ __ham_get(dbp, txn, key, data, flags) DB_TXN *txn; DBT *key; DBT *data; - int flags; + u_int32_t flags; { DB *ldbp; - DBC *cp; HTAB *hashp; HASH_CURSOR *hcp; int ret, t_ret; @@ -362,7 +356,6 @@ __ham_get(dbp, txn, key, data, flags) hashp = (HTAB *)ldbp->internal; SET_LOCKER(ldbp, txn); GET_META(ldbp, hashp); - cp = TAILQ_FIRST(&ldbp->curs_queue); hashp->hash_accesses++; hcp = (HASH_CURSOR *)TAILQ_FIRST(&ldbp->curs_queue)->internal; @@ -386,14 +379,14 @@ __ham_put(dbp, txn, key, data, flags) DB_TXN *txn; DBT *key; DBT *data; - int flags; + u_int32_t flags; { DB *ldbp; - HTAB *hashp; - HASH_CURSOR *hcp; DBT tmp_val, *myval; - int ret, t_ret; + HASH_CURSOR *hcp; + HTAB *hashp; u_int32_t nbytes; + int ret, t_ret; DEBUG_LWRITE(dbp, txn, "ham_put", key, data, flags); if ((ret = __db_putchk(dbp, key, data, @@ -531,7 +524,7 @@ __ham_delete(dbp, txn, key, flags) DB *dbp; DB_TXN *txn; DBT *key; - int flags; + u_int32_t flags; { DB *ldbp; HTAB *hashp; @@ -539,7 +532,8 @@ __ham_delete(dbp, txn, key, flags) int ret, t_ret; DEBUG_LWRITE(dbp, txn, "ham_delete", key, NULL, flags); - if ((ret = __db_delchk(dbp, flags, F_ISSET(dbp, DB_AM_RDONLY))) != 0) + if ((ret = + __db_delchk(dbp, key, flags, F_ISSET(dbp, DB_AM_RDONLY))) != 0) return (ret); ldbp = dbp; @@ -639,12 +633,12 @@ __ham_c_iclose(dbp, dbc) static int __ham_c_del(cursor, flags) DBC *cursor; - int flags; + u_int32_t flags; { DB *ldbp; - HTAB *hashp; HASH_CURSOR *hcp; HASH_CURSOR save_curs; + HTAB *hashp; db_pgno_t ppgno, chg_pgno; int ret, t_ret; @@ -756,7 +750,7 @@ __ham_c_del(cursor, flags) normal: ret = __ham_del_pair(hashp, hcp, 1); out: if ((t_ret = __ham_item_done(hashp, hcp, ret == 0)) != 0 && ret == 0) - t_ret = ret; + ret = t_ret; if (ret != 0) *hcp = save_curs; RELEASE_META(hashp->dbp, hashp); @@ -770,7 +764,7 @@ __ham_c_get(cursor, key, data, flags) DBC *cursor; DBT *key; DBT *data; - int flags; + u_int32_t flags; { DB *ldbp; HTAB *hashp; @@ -805,7 +799,7 @@ __ham_c_get(cursor, key, data, flags) ret = __ham_item_prev(hashp, hcp, DB_LOCK_READ); break; } - /* FALL THROUGH */ + /* FALLTHROUGH */ case DB_LAST: ret = __ham_item_last(hashp, hcp, DB_LOCK_READ); break; @@ -893,7 +887,7 @@ __ham_c_get(cursor, key, data, flags) } } out1: if ((t_ret = __ham_item_done(hashp, hcp, 0)) != 0 && ret == 0) - t_ret = ret; + ret = t_ret; out: if (ret) *hcp = save_curs; RELEASE_META(hashp->dbp, hashp); @@ -907,17 +901,17 @@ __ham_c_put(cursor, key, data, flags) DBC *cursor; DBT *key; DBT *data; - int flags; + u_int32_t flags; { DB *ldbp; - HTAB *hashp; HASH_CURSOR *hcp, save_curs; - int ret, t_ret; + HTAB *hashp; u_int32_t nbytes; + int ret, t_ret; DEBUG_LWRITE(cursor->dbp, cursor->txn, "ham_c_put", flags == DB_KEYFIRST || flags == DB_KEYLAST ? key : NULL, - NULL, flags); + data, flags); ldbp = cursor->dbp; if (F_ISSET(cursor->dbp, DB_AM_THREAD) && (ret = __db_gethandle(cursor->dbp, __ham_hdup, &ldbp)) != 0) @@ -1087,14 +1081,14 @@ __ham_dup_return(hashp, hcp, val, flags) HTAB *hashp; HASH_CURSOR *hcp; DBT *val; - int flags; + u_int32_t flags; { PAGE *pp; DBT *myval, tmp_val; db_indx_t ndx; db_pgno_t pgno; u_int8_t *hk, type; - int indx, ret; + int ret; db_indx_t len; /* Check for duplicate and return the first one. */ @@ -1145,7 +1139,6 @@ __ham_dup_return(hashp, hcp, val, flags) memcpy(&pgno, HOFFDUP_PGNO(P_ENTRY(hcp->pagep, ndx)), sizeof(db_pgno_t)); if (flags == DB_LAST || flags == DB_PREV) { - indx = (int)hcp->dndx; if ((ret = __db_dend(hashp->dbp, pgno, &hcp->dpagep)) != 0) return (ret); @@ -1451,14 +1444,15 @@ __ham_c_update(hcp, chg_pgno, len, add, is_dup) * __ham_hdup -- * This function gets called when we create a duplicate handle for a * threaded DB. It should create the private part of the DB structure. + * * PUBLIC: int __ham_hdup __P((DB *, DB *)); */ int __ham_hdup(orig, new) DB *orig, *new; { - HTAB *hashp; DBC *curs; + HTAB *hashp; int ret; if ((hashp = (HTAB *)__db_malloc(sizeof(HTAB))) == NULL) |