9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * CDDL HEADER START
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * The contents of this file are subject to the terms of the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Common Development and Distribution License (the "License").
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * You may not use this file except in compliance with the License.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * or http://www.opensolaris.org/os/licensing.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * See the License for the specific language governing permissions
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * and limitations under the License.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * When distributing Covered Code, include this CDDL HEADER in each
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * If applicable, add the following below this CDDL HEADER, with the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * fields enclosed by brackets "[]" replaced with your own identifying
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * information: Portions Copyright [yyyy] [name of copyright owner]
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * CDDL HEADER END
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Copyright (c) 2002-2003, Network Appliance, Inc. All rights reserved.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Use is subject to license terms.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * HEADER: dapl_hash.h
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * PURPOSE: Utility defs & routines for the hash data structure
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * $Id: dapl_hash.h,v 1.4 2003/06/13 12:21:09 sjs2 Exp $
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifndef _DAPL_HASH_H_
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define _DAPL_HASH_H_
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef __cplusplus
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorextern "C" {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#include "dapl.h"
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Defines
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Hash table size.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Default is small; use the larger sample values for hash tables
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * known to be heavily used. The sample values chosen are the
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * largest primes below 2^8, 2^9, and 2^10.
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define DAPL_DEF_HASHSIZE 251
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define DAPL_MED_HASHSIZE 509
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define DAPL_LRG_HASHSIZE 1021
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#define DAPL_HASH_TABLE_DEFAULT_CAPACITY DAPL_DEF_HASHSIZE
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylortypedef enum {
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor DAPL_HASH_ITERATE_INIT = 1,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor DAPL_HASH_ITERATE_NEXT
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor} DAPL_HASH_ITERATOR;
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor/*
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor * Function Prototypes
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor *
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor */
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorextern DAT_RETURN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylordapls_hash_create(
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAT_COUNT capacity,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAT_BOOLEAN locking_required,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor OUT DAPL_HASH_TABLE **pp_table);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorextern DAT_RETURN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylordapls_hash_free(
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAPL_HASH_TABLE *p_table);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorextern DAT_RETURN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylordapls_hash_size(
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAPL_HASH_TABLE *p_table,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor OUT DAT_COUNT *p_size);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorextern DAT_RETURN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylordapls_hash_insert(
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAPL_HASH_TABLE *p_table,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAPL_HASH_KEY key,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAPL_HASH_DATA data);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorextern DAT_RETURN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylordapls_hash_search(
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAPL_HASH_TABLE *p_table,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAPL_HASH_KEY key,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor OUT DAPL_HASH_DATA *p_data);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorextern DAT_RETURN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylordapls_hash_remove(
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAPL_HASH_TABLE *p_table,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAPL_HASH_KEY key,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor OUT DAPL_HASH_DATA *p_data);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylorextern DAT_RETURN
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylordapls_hash_iterate(
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAPL_HASH_TABLE *p_table,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor IN DAPL_HASH_ITERATOR op,
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor OUT DAPL_HASH_DATA *p_data);
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#ifdef __cplusplus
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor}
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor
9e39c5ba00a55fa05777cc94b148296af305e135Bill Taylor#endif /* _DAPL_HASH_H_ */