mutexblock.c

Go to the documentation of this file.
00001 /*
00002  * Copyright (C) 2004, 2005, 2007, 2011, 2012  Internet Systems Consortium, Inc. ("ISC")
00003  * Copyright (C) 1999-2001  Internet Software Consortium.
00004  *
00005  * Permission to use, copy, modify, and/or distribute this software for any
00006  * purpose with or without fee is hereby granted, provided that the above
00007  * copyright notice and this permission notice appear in all copies.
00008  *
00009  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
00010  * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
00011  * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
00012  * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
00013  * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
00014  * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
00015  * PERFORMANCE OF THIS SOFTWARE.
00016  */
00017 
00018 /* $Id$ */
00019 
00020 /*! \file */
00021 
00022 #include <config.h>
00023 
00024 #include <isc/mutexblock.h>
00025 #include <isc/util.h>
00026 
00027 isc_result_t
00028 isc_mutexblock_init(isc_mutex_t *block, unsigned int count) {
00029         isc_result_t result;
00030         unsigned int i;
00031 
00032         for (i = 0; i < count; i++) {
00033                 result = isc_mutex_init(&block[i]);
00034                 if (result != ISC_R_SUCCESS) {
00035                         while (i > 0U) {
00036                                 i--;
00037                                 DESTROYLOCK(&block[i]);
00038                         }
00039                         return (result);
00040                 }
00041         }
00042 
00043         return (ISC_R_SUCCESS);
00044 }
00045 
00046 isc_result_t
00047 isc_mutexblock_destroy(isc_mutex_t *block, unsigned int count) {
00048         isc_result_t result;
00049         unsigned int i;
00050 
00051         for (i = 0; i < count; i++) {
00052                 result = isc_mutex_destroy(&block[i]);
00053                 if (result != ISC_R_SUCCESS)
00054                         return (result);
00055         }
00056 
00057         return (ISC_R_SUCCESS);
00058 }

Generated on Tue Apr 28 17:41:04 2015 by Doxygen 1.5.4 for BIND9 Internals 9.11.0pre-alpha