Add a manual page which documents the generic hash routines, i.e.
authorHiten Pandya <hmp@dragonflybsd.org>
Fri, 14 May 2004 18:11:44 +0000 (18:11 +0000)
committerHiten Pandya <hmp@dragonflybsd.org>
Fri, 14 May 2004 18:11:44 +0000 (18:11 +0000)
hashinit(9) and phashinit(9).  Code references also provided.

Relevant MLINKs have been added.

share/man/man9/Makefile
share/man/man9/hash.9 [new file with mode: 0644]

index 49c2a62..1031221 100644 (file)
@@ -1,5 +1,5 @@
 # $FreeBSD: src/share/man/man9/Makefile,v 1.60.2.26 2003/06/13 01:04:17 hmp Exp $
-# $DragonFly: src/share/man/man9/Makefile,v 1.7 2004/05/10 11:20:46 hmp Exp $
+# $DragonFly: src/share/man/man9/Makefile,v 1.8 2004/05/14 18:11:44 hmp Exp $
 
 MAN=   DECLARE_MODULE.9 DELAY.9 DEV_MODULE.9 KASSERT.9 MD5.9 \
        MODULE_DEPEND.9 MODULE_VERSION.9 SPLASSERT.9 SYSCALL_MODULE.9 \
@@ -17,7 +17,9 @@ MAN=  DECLARE_MODULE.9 DELAY.9 DEV_MODULE.9 KASSERT.9 MD5.9 \
        accept_filter.9 at_exit.9 at_fork.9 bios.9 boot.9 buf.9 bus_dma.9 \
        cd.9 copy.9 \
        crypto.9 devstat.9 \
-       devtoname.9 fetch.9 ifnet.9 inittodr.9 intro.9 kernacc.9 lock.9 \
+       devtoname.9 fetch.9 \
+       hash.9 \
+       ifnet.9 inittodr.9 intro.9 kernacc.9 lock.9 \
        malloc.9 make_dev.9 mbuf.9 microseq.9 mi_switch.9 module.9 namei.9 \
        pci.9 panic.9 physio.9 posix4.9 psignal.9 \
        resettodr.9 rtalloc.9 rtentry.9 sleep.9 spl.9 \
@@ -84,6 +86,7 @@ MLINKS+=devstat.9 devicestat.9 devstat.9 devstat_add_entry.9
 MLINKS+=devstat.9 devstat_remove_entry.9 devstat.9 devstat_start_transaction.9
 MLINKS+=devstat.9 devstat_end_transaction.9
 MLINKS+=fetch.9 fubyte.9 fetch.9 fuswintr.9 fetch.9 fusword.9 fetch.9 fuword.9
+MLINKS+=hash.9 hashinit.9 hash.9 phashinit.9
 MLINKS+=ifnet.9 if_data.9 ifnet.9 ifaddr.9 ifnet.9 ifqueue.9
 MLINKS+=kernacc.9 useracc.9
 MLINKS+=make_dev.9 destroy_dev.9
diff --git a/share/man/man9/hash.9 b/share/man/man9/hash.9
new file mode 100644 (file)
index 0000000..029cd53
--- /dev/null
@@ -0,0 +1,100 @@
+.\" Copyright (c) 2003-2004 Hiten Pandya <hmp@backplane.com>
+.\"
+.\" All rights reserved.
+.\"
+.\" Redistribution and use in source and binary forms, with or without
+.\" modification, are permitted provided that the following conditions
+.\" are met:
+.\"
+.\" 1. Redistributions of source code must retain the above copyright
+.\"    notice, this list of conditions and the following disclaimer.
+.\"
+.\" 2. Redistributions in binary form must reproduce the above copyright
+.\"    notice, this list of conditions and the following disclaimer in
+.\"    the documentation and/or other materials provided with the
+.\"    distribution.
+.\"
+.\" THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+.\" LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+.\" FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
+.\" COPYRIGHT HOLDERS, CONTRIBUTORS OR VOICES IN HITEN PANDYA'S HEAD
+.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY
+.\" OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+.\" OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+.\" BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+.\" WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+.\" OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+.\" EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+.\"
+.\" $DragonFly: src/share/man/man9/hash.9,v 1.1 2004/05/14 18:11:44 hmp Exp $
+.\"
+.Dd May 14, 2004
+.Os
+.Dt HASH 9
+.Sh NAME
+.Nm hash ,
+.Nm hashinit ,
+.Nm phashinit
+.Nd generic hash table functions for the kernel
+.Sh SYNOPSIS
+.In sys/param.h
+.In sys/systm.h
+.In sys/malloc.h
+.Ft void *
+.Fn hashinit "int elements" "struct malloc_type *type" "u_long *hashmask"
+.Ft void *
+.Fn phashinit "int elements" "struct malloc_type *type" "u_long *nentries"
+.Sh DESCRIPTION
+The kernel hash functions are used for creating a generic hash table.
+.Pp
+The
+.Fn hashinit
+function returns a pointer to a hash table which is sized a
+.Dq "power of two"
+greater or equal to the number of
+.Fa elements
+requested.
+The masking value is stored in
+.Fa hashmask .
+.Pp
+The
+.Fn phashinit
+function returns a pointer to a prime number sized hash table.
+The number of
+.Fa elements
+requested is used to dictate an upper-bound for the size of the
+hash table.
+The final size of the hash table is stored by the function in
+.Fa nentries .
+.Pp
+The
+.Fa type
+argument to both of the above functions is used for keeping track
+of memory allocated for the hash table.
+See the
+.Xr malloc 9
+manual page for more information on memory statistics.
+.Sh CODE REFERENCES
+The VFS namecache code is one of many examples for using the
+.Fn hashinit
+function; it is located within the file
+.Pa sys/kern/vfs_cache.c .
+.Pp
+The hostcache code uses the
+.Fn phashinit
+function for creating a prime number sized hash table; it is located
+within the file
+.Pa sys/net/hostcache.c .
+.Pp
+All pathnames in this section are relative to the
+.Dx
+source tree.
+.Sh SEE ALSO
+.Xr tcp 4 ,
+.Xr udp 4 ,
+.Xr malloc 9 ,
+.Xr namei 9
+.Sh AUTHORS
+This manual page was written by
+.An Hiten Pandya Aq hmp@backplane.com .