mariadb/innobase/include/hash0hash.ic
heikki@donna.mysql.fi 314cdf3424 ut0ut.c Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0shm.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
page0page.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
que0que.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0ins.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0sel.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0upd.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0vers.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0start.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0arr.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0rec.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
trx0trx.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
srv0srv.h	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0rw.h	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
sync0sync.h	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ut0dbg.h	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
lock0lock.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0log.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
log0recv.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
ibuf0ibuf.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.h	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.ic	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
hash0hash.ic	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mach0data.ic	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0mem.h	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mem0pool.h	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
mtr0mtr.h	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0file.h	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.h	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0sync.ic	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
os0thread.h	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
univ.i  	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
row0mysql.ic	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
com0shm.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0data.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
data0type.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0crea.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
dict0dict.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fil0fil.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fsp0fsp.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
fut0lst.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0sea.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0buf.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
buf0flu.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0btr.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
btr0cur.c	Fixes for 64-bit Linux, bug fixes, compiler warning fixes
2001-03-02 17:33:11 +02:00

130 lines
2.9 KiB
Text

/******************************************************
The simple hash table utility
(c) 1997 Innobase Oy
Created 5/20/1997 Heikki Tuuri
*******************************************************/
#include "ut0rnd.h"
/****************************************************************
Gets the nth cell in a hash table. */
UNIV_INLINE
hash_cell_t*
hash_get_nth_cell(
/*==============*/
/* out: pointer to cell */
hash_table_t* table, /* in: hash table */
ulint n) /* in: cell index */
{
ut_ad(n < table->n_cells);
return(table->array + n);
}
/*****************************************************************
Returns the number of cells in a hash table. */
UNIV_INLINE
ulint
hash_get_n_cells(
/*=============*/
/* out: number of cells */
hash_table_t* table) /* in: table */
{
return(table->n_cells);
}
/******************************************************************
Calculates the hash value from a folded value. */
UNIV_INLINE
ulint
hash_calc_hash(
/*===========*/
/* out: hashed value */
ulint fold, /* in: folded value */
hash_table_t* table) /* in: hash table */
{
return(ut_hash_ulint(fold, table->n_cells));
}
/****************************************************************
Gets the mutex index for a fold value in a hash table. */
UNIV_INLINE
ulint
hash_get_mutex_no(
/*==============*/
/* out: mutex number */
hash_table_t* table, /* in: hash table */
ulint fold) /* in: fold */
{
return(ut_2pow_remainder(fold, table->n_mutexes));
}
/****************************************************************
Gets the nth heap in a hash table. */
UNIV_INLINE
mem_heap_t*
hash_get_nth_heap(
/*==============*/
/* out: mem heap */
hash_table_t* table, /* in: hash table */
ulint i) /* in: index of the heap */
{
ut_ad(i < table->n_mutexes);
return(table->heaps[i]);
}
/****************************************************************
Gets the heap for a fold value in a hash table. */
UNIV_INLINE
mem_heap_t*
hash_get_heap(
/*==========*/
/* out: mem heap */
hash_table_t* table, /* in: hash table */
ulint fold) /* in: fold */
{
ulint i;
if (table->heap) {
return(table->heap);
}
i = hash_get_mutex_no(table, fold);
return(hash_get_nth_heap(table, i));
}
/****************************************************************
Gets the nth mutex in a hash table. */
UNIV_INLINE
mutex_t*
hash_get_nth_mutex(
/*===============*/
/* out: mutex */
hash_table_t* table, /* in: hash table */
ulint i) /* in: index of the mutex */
{
ut_ad(i < table->n_mutexes);
return(table->mutexes + i);
}
/****************************************************************
Gets the mutex for a fold value in a hash table. */
UNIV_INLINE
mutex_t*
hash_get_mutex(
/*===========*/
/* out: mutex */
hash_table_t* table, /* in: hash table */
ulint fold) /* in: fold */
{
ulint i;
i = hash_get_mutex_no(table, fold);
return(hash_get_nth_mutex(table, i));
}