db_headers.h revision 2
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * CDDL HEADER START
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * The contents of this file are subject to the terms of the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Common Development and Distribution License (the "License").
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * You may not use this file except in compliance with the License.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * or http://www.opensolaris.org/os/licensing.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * See the License for the specific language governing permissions
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * and limitations under the License.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * CDDL HEADER END
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Use is subject to license terms.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis __nisdb_get_tsd()->fatalcode = (int)(fcode); \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis __nisdb_get_tsd()->fatalcode = (int)(fcode); \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis __nisdb_get_tsd()->fatalcode = lockcode; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis __nisdb_get_tsd()->fatalcode = lockcode; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif /* NISDB_MT_DEBUG */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* Read lock/unlock 'this', return 'retval' is unsuccessful, and save 'msg' */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* Ditto, but return without a value (i.e., a "void" function */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* As READLOCK/READUNLOCK, but set rescode instead of returning on failure */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* As READLOCK/READUNLOCK, but use a write lock */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* Non-blocking write lock */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* Ditto, but return without a value */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* As WRITELOCK/WRITEUNLOCK, but set rescode instead of returning on failure */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define WRITEUNLOCKNR(this, rescode, msg) \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/* Apply a second write lock when already holding another write lock */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define WRITELOCK2(this, retval, msg, that) \
return (retval); \
if (this != 0) { \
if (that != 0) { \
if (lockcode2 != 0) { \
return (retval2); \
} else if (lockcode1 != 0) { \
return (retval1); \
if (this != 0) { \
if (lockcode2 != 0) { \
if (that != 0) { \
return (retval); \
if (this != 0) { \
if (that != 0) { \
if (lockcode2 != 0) { \
return (retval2); \
} else if (lockcode1 != 0) { \
return (retval1); \
int lc; \
return (retval); \