xref: /onnv-gate/usr/src/lib/udapl/udapl_tavor/include/dapl_hash.h (revision 9517:b4839b0aa7a4)
1*9517SBill.Taylor@Sun.COM /*
2*9517SBill.Taylor@Sun.COM  * CDDL HEADER START
3*9517SBill.Taylor@Sun.COM  *
4*9517SBill.Taylor@Sun.COM  * The contents of this file are subject to the terms of the
5*9517SBill.Taylor@Sun.COM  * Common Development and Distribution License (the "License").
6*9517SBill.Taylor@Sun.COM  * You may not use this file except in compliance with the License.
7*9517SBill.Taylor@Sun.COM  *
8*9517SBill.Taylor@Sun.COM  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9*9517SBill.Taylor@Sun.COM  * or http://www.opensolaris.org/os/licensing.
10*9517SBill.Taylor@Sun.COM  * See the License for the specific language governing permissions
11*9517SBill.Taylor@Sun.COM  * and limitations under the License.
12*9517SBill.Taylor@Sun.COM  *
13*9517SBill.Taylor@Sun.COM  * When distributing Covered Code, include this CDDL HEADER in each
14*9517SBill.Taylor@Sun.COM  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15*9517SBill.Taylor@Sun.COM  * If applicable, add the following below this CDDL HEADER, with the
16*9517SBill.Taylor@Sun.COM  * fields enclosed by brackets "[]" replaced with your own identifying
17*9517SBill.Taylor@Sun.COM  * information: Portions Copyright [yyyy] [name of copyright owner]
18*9517SBill.Taylor@Sun.COM  *
19*9517SBill.Taylor@Sun.COM  * CDDL HEADER END
20*9517SBill.Taylor@Sun.COM  */
21*9517SBill.Taylor@Sun.COM 
22*9517SBill.Taylor@Sun.COM /*
23*9517SBill.Taylor@Sun.COM  * Copyright (c) 2002-2003, Network Appliance, Inc. All rights reserved.
24*9517SBill.Taylor@Sun.COM  */
25*9517SBill.Taylor@Sun.COM 
26*9517SBill.Taylor@Sun.COM /*
27*9517SBill.Taylor@Sun.COM  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
28*9517SBill.Taylor@Sun.COM  * Use is subject to license terms.
29*9517SBill.Taylor@Sun.COM  */
30*9517SBill.Taylor@Sun.COM 
31*9517SBill.Taylor@Sun.COM /*
32*9517SBill.Taylor@Sun.COM  *
33*9517SBill.Taylor@Sun.COM  * HEADER: dapl_hash.h
34*9517SBill.Taylor@Sun.COM  *
35*9517SBill.Taylor@Sun.COM  * PURPOSE: Utility defs & routines for the hash data structure
36*9517SBill.Taylor@Sun.COM  *
37*9517SBill.Taylor@Sun.COM  * $Id: dapl_hash.h,v 1.4 2003/06/13 12:21:09 sjs2 Exp $
38*9517SBill.Taylor@Sun.COM  */
39*9517SBill.Taylor@Sun.COM 
40*9517SBill.Taylor@Sun.COM #ifndef _DAPL_HASH_H_
41*9517SBill.Taylor@Sun.COM #define	_DAPL_HASH_H_
42*9517SBill.Taylor@Sun.COM 
43*9517SBill.Taylor@Sun.COM #ifdef __cplusplus
44*9517SBill.Taylor@Sun.COM extern "C" {
45*9517SBill.Taylor@Sun.COM #endif
46*9517SBill.Taylor@Sun.COM 
47*9517SBill.Taylor@Sun.COM #include "dapl.h"
48*9517SBill.Taylor@Sun.COM 
49*9517SBill.Taylor@Sun.COM 
50*9517SBill.Taylor@Sun.COM /*
51*9517SBill.Taylor@Sun.COM  *
52*9517SBill.Taylor@Sun.COM  * Defines
53*9517SBill.Taylor@Sun.COM  *
54*9517SBill.Taylor@Sun.COM  */
55*9517SBill.Taylor@Sun.COM 
56*9517SBill.Taylor@Sun.COM /*
57*9517SBill.Taylor@Sun.COM  * Hash table size.
58*9517SBill.Taylor@Sun.COM  *
59*9517SBill.Taylor@Sun.COM  * Default is small; use the larger sample values for hash tables
60*9517SBill.Taylor@Sun.COM  * known to be heavily used.  The sample values chosen are the
61*9517SBill.Taylor@Sun.COM  * largest primes below 2^8, 2^9, and 2^10.
62*9517SBill.Taylor@Sun.COM  */
63*9517SBill.Taylor@Sun.COM #define	DAPL_DEF_HASHSIZE	251
64*9517SBill.Taylor@Sun.COM #define	DAPL_MED_HASHSIZE	509
65*9517SBill.Taylor@Sun.COM #define	DAPL_LRG_HASHSIZE	1021
66*9517SBill.Taylor@Sun.COM 
67*9517SBill.Taylor@Sun.COM #define	DAPL_HASH_TABLE_DEFAULT_CAPACITY	DAPL_DEF_HASHSIZE
68*9517SBill.Taylor@Sun.COM 
69*9517SBill.Taylor@Sun.COM typedef enum {
70*9517SBill.Taylor@Sun.COM 	DAPL_HASH_ITERATE_INIT = 1,
71*9517SBill.Taylor@Sun.COM 	DAPL_HASH_ITERATE_NEXT
72*9517SBill.Taylor@Sun.COM } DAPL_HASH_ITERATOR;
73*9517SBill.Taylor@Sun.COM 
74*9517SBill.Taylor@Sun.COM 
75*9517SBill.Taylor@Sun.COM /*
76*9517SBill.Taylor@Sun.COM  *
77*9517SBill.Taylor@Sun.COM  * Function Prototypes
78*9517SBill.Taylor@Sun.COM  *
79*9517SBill.Taylor@Sun.COM  */
80*9517SBill.Taylor@Sun.COM 
81*9517SBill.Taylor@Sun.COM extern DAT_RETURN
82*9517SBill.Taylor@Sun.COM dapls_hash_create(
83*9517SBill.Taylor@Sun.COM     IN DAT_COUNT capacity,
84*9517SBill.Taylor@Sun.COM     IN DAT_BOOLEAN locking_required,
85*9517SBill.Taylor@Sun.COM     OUT DAPL_HASH_TABLE **pp_table);
86*9517SBill.Taylor@Sun.COM 
87*9517SBill.Taylor@Sun.COM extern DAT_RETURN
88*9517SBill.Taylor@Sun.COM dapls_hash_free(
89*9517SBill.Taylor@Sun.COM     IN DAPL_HASH_TABLE *p_table);
90*9517SBill.Taylor@Sun.COM 
91*9517SBill.Taylor@Sun.COM extern DAT_RETURN
92*9517SBill.Taylor@Sun.COM dapls_hash_size(
93*9517SBill.Taylor@Sun.COM     IN DAPL_HASH_TABLE *p_table,
94*9517SBill.Taylor@Sun.COM     OUT DAT_COUNT *p_size);
95*9517SBill.Taylor@Sun.COM 
96*9517SBill.Taylor@Sun.COM extern DAT_RETURN
97*9517SBill.Taylor@Sun.COM dapls_hash_insert(
98*9517SBill.Taylor@Sun.COM     IN DAPL_HASH_TABLE *p_table,
99*9517SBill.Taylor@Sun.COM     IN DAPL_HASH_KEY key,
100*9517SBill.Taylor@Sun.COM     IN DAPL_HASH_DATA data);
101*9517SBill.Taylor@Sun.COM 
102*9517SBill.Taylor@Sun.COM extern DAT_RETURN
103*9517SBill.Taylor@Sun.COM dapls_hash_search(
104*9517SBill.Taylor@Sun.COM     IN DAPL_HASH_TABLE *p_table,
105*9517SBill.Taylor@Sun.COM     IN DAPL_HASH_KEY key,
106*9517SBill.Taylor@Sun.COM     OUT DAPL_HASH_DATA *p_data);
107*9517SBill.Taylor@Sun.COM 
108*9517SBill.Taylor@Sun.COM extern DAT_RETURN
109*9517SBill.Taylor@Sun.COM dapls_hash_remove(
110*9517SBill.Taylor@Sun.COM     IN DAPL_HASH_TABLE *p_table,
111*9517SBill.Taylor@Sun.COM     IN DAPL_HASH_KEY key,
112*9517SBill.Taylor@Sun.COM     OUT DAPL_HASH_DATA *p_data);
113*9517SBill.Taylor@Sun.COM 
114*9517SBill.Taylor@Sun.COM extern DAT_RETURN
115*9517SBill.Taylor@Sun.COM dapls_hash_iterate(
116*9517SBill.Taylor@Sun.COM     IN DAPL_HASH_TABLE *p_table,
117*9517SBill.Taylor@Sun.COM     IN DAPL_HASH_ITERATOR op,
118*9517SBill.Taylor@Sun.COM     OUT DAPL_HASH_DATA *p_data);
119*9517SBill.Taylor@Sun.COM 
120*9517SBill.Taylor@Sun.COM #ifdef __cplusplus
121*9517SBill.Taylor@Sun.COM }
122*9517SBill.Taylor@Sun.COM #endif
123*9517SBill.Taylor@Sun.COM 
124*9517SBill.Taylor@Sun.COM #endif /* _DAPL_HASH_H_ */
125