cb5caa98562cf06753163f558cbcfe30b8f4673adjl * CDDL HEADER START
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * The contents of this file are subject to the terms of the
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * Common Development and Distribution License (the "License").
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * You may not use this file except in compliance with the License.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * See the License for the specific language governing permissions
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * and limitations under the License.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * When distributing Covered Code, include this CDDL HEADER in each
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * If applicable, add the following below this CDDL HEADER, with the
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * fields enclosed by brackets "[]" replaced with your own identifying
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * information: Portions Copyright [yyyy] [name of copyright owner]
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * CDDL HEADER END
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * Use is subject to license terms.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl#pragma ident "%Z%%M% %I% %E% SMI"
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * internal structure representing a nscd internal address
cb5caa98562cf06753163f558cbcfe30b8f4673adjl rwlock_t rwlock; /* used to serialize get and destroy */
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * FUNCTION: _nscd_create_int_addrDB
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * Create the internal address database to keep track of the
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * memory allocated by _nscd_alloc.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl _NSCD_LOG(NSCD_LOG_INT_ADDR | NSCD_LOG_CONFIG, NSCD_LOG_LEVEL_DEBUG)
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * FUNCTION: _nscd_add_int_addr
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * Add an address of 'type' to the internal address database.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl (void) rwlock_init(&int_addr->rwlock, USYNC_THREAD, NULL);
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * FUNCTION: _nscd_is_int_addr
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * Check to see if an address can be found in the internal
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * address database, if so, obtain a reader lock on the
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * associated rw_lock. The caller needs to unlock it when
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * done using the data.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * If the data is marked as to be deleted
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * or the sequence number does not match,
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * return NULL.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl (me, "found %p, seq# = %lld\n", ptr, int_addr->seq_num);
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * FUNCTION: _nscd_del_int_addr
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * Delete an address from the internal address database.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * first find the db entry and make sure that
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * no one is currently locking it. i.e.,
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * no one is waiting to use the same address.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * If it is locked, rw_wrlock() will not return
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * until it is unlocked.
cb5caa98562cf06753163f558cbcfe30b8f4673adjl (const char *)ptrstr,
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * delete the db entry if the sequence numbers match
cb5caa98562cf06753163f558cbcfe30b8f4673adjl (const char *)ptrstr,
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * FUNCTION: _nscd_destroy_int_addrDB
cb5caa98562cf06753163f558cbcfe30b8f4673adjl * Destroy the internal address database.