xref: /netbsd/share/man/man9/hash.9 (revision bf9ec67e)
1.\"     $NetBSD: hash.9,v 1.2 2002/02/13 08:18:42 ross Exp $
2.\"
3.\" Copyright (c) 2001 The NetBSD Foundation, Inc.
4.\" All rights reserved.
5.\"
6.\" This code is derived from software contributed to The NetBSD Foundation
7.\" by Luke Mewburn of Wasabi Systems, Inc.
8.\"
9.\" Redistribution and use in source and binary forms, with or without
10.\" modification, are permitted provided that the following conditions
11.\" are met:
12.\" 1. Redistributions of source code must retain the above copyright
13.\"    notice, this list of conditions and the following disclaimer.
14.\" 2. Redistributions in binary form must reproduce the above copyright
15.\"    notice, this list of conditions and the following disclaimer in the
16.\"    documentation and/or other materials provided with the distribution.
17.\" 3. All advertising materials mentioning features or use of this software
18.\"    must display the following acknowledgement:
19.\"        This product includes software developed by the NetBSD
20.\"        Foundation, Inc. and its contributors.
21.\" 4. Neither the name of The NetBSD Foundation nor the names of its
22.\"    contributors may be used to endorse or promote products derived
23.\"    from this software without specific prior written permission.
24.\"
25.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
26.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
27.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28.\" PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
29.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
30.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
31.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
32.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
33.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
35.\" POSSIBILITY OF SUCH DAMAGE.
36.\"
37.Dd December 5, 2001
38.Dt HASH 9
39.Os
40.Sh NAME
41.Nm hash ,
42.Nm hash32_buf ,
43.Nm hash32_str ,
44.Nm hash32_strn
45.Nd kernel hash functions
46.Sh SYNOPSIS
47.Fd #include \*[Lt]sys/types.h\*[Gt]
48.Fd #include \*[Lt]sys/hash.h\*[Gt]
49.Ft uint32_t
50.Fn hash32_buf "const void *buf" "size_t len" "uint32_t ihash"
51.Ft uint32_t
52.Fn hash32_str "const void *buf" "uint32_t ihash"
53.Ft uint32_t
54.Fn hash32_strn "const void *buf" "size_t len" "uint32_t ihash"
55.Sh DESCRIPTION
56The
57.Nm
58functions returns a hash of the given buffer.
59.Pp
60The
61.Fn hash32_buf
62function returns a 32 bit hash of
63.Fa buf ,
64which is
65.Fa len
66bytes long,
67seeded with an initial hash of
68.Fa ihash
69(which is usually
70.Dv HASH32_BUF_INIT ) .
71This function may use a different algorithm to
72.Fn hash32_str
73and
74.Fn hash32_strn .
75.Pp
76The
77.Fn hash32_str
78function returns a 32 bit hash of
79.Fa buf ,
80which is
81a
82.Dv NUL
83terminated
84.Tn ASCII
85string,
86seeded with an initial hash of
87.Fa ihash
88(which is usually
89.Dv HASH32_STR_INIT ) .
90This function must use the same algorithm as
91.Fn hash32_strn ,
92so that the same data returns the same hash.
93.Pp
94The
95.Fn hash32_strn
96function returns a 32 bit hash of
97.Fa buf ,
98which is
99a
100.Dv NUL
101terminated
102.Tn ASCII
103string,
104up to a maximum of
105.Fa len
106bytes,
107seeded with an initial hash of
108.Fa ihash
109(which is usually
110.Dv HASH32_STR_INIT ) .
111This function must use the same algorithm as
112.Fn hash32_str ,
113so that the same data returns the same hash.
114.Pp
115The
116.Fa ihash
117parameter is provided to allow for incremental hashing by allowing
118successive calls to use a previous hash value.
119.Sh RETURN VALUES
120The
121.Fa hash32_*
122functions return a 32 bit hash of the provided buffer.
123.Sh HISTORY
124The kernel hashing API first appeared in
125.Nx 1.6 .
126