mutexblock.h revision 15a44745412679c30a6d022733925af70a38b715
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein/*
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User * Copyright (C) 1999, 2000 Internet Software Consortium.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein *
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User * Permission to use, copy, modify, and distribute this software for any
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User * purpose with or without fee is hereby granted, provided that the above
5347c0fcb04eaea19d9f39795646239f487c6207Tinderbox User * copyright notice and this permission notice appear in all copies.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
14a656f94b1fd0ababd84a772228dfa52276ba15Evan Hunt * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein */
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein/* $Id: mutexblock.h,v 1.8 2000/07/27 09:51:55 tale Exp $ */
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#ifndef ISC_MUTEXBLOCK_H
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#define ISC_MUTEXBLOCK_H 1
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#include <isc/lang.h>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#include <isc/mutex.h>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#include <isc/types.h>
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob AusteinISC_LANG_BEGINDECLS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinisc_result_t
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austeinisc_mutexblock_init(isc_mutex_t *block, unsigned int count);
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein/*
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * Initialize a block of locks. If an error occurs all initialized locks
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * will be destroyed, if possible.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * Requires:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein *
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * block != NULL
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User *
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User * count > 0
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User *
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User * Returns:
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein *
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User * Any code isc_mutex_init() can return is a valid return for this
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User * function.
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User */
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox Userisc_result_t
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox Userisc_mutexblock_destroy(isc_mutex_t *block, unsigned int count);
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein/*
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * Destroy a block of locks.
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein *
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User * Requires:
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * block != NULL
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * count > 0
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein *
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews * Each lock in the block be initialized via isc_mutex_init() or
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * the whole block was initialized via isc_mutex_initblock().
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * Returns:
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User *
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein * Any code isc_mutex_init() can return is a valid return for this
af40ebed6257e4ac1996144530b3de317cf4da11Tinderbox User * function.
fd2597f75693a2279fdf588bd40dfe2407c42028Tinderbox User */
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
c48c7872a0e020a63a96faed166c6ae960e4c1e9Mark AndrewsISC_LANG_ENDDECLS
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein
60e5e10f8d2e2b0c41e8abad38cacd867caa6ab2Rob Austein#endif /* ISC_MUTEXBLOCK_H */
71c66a876ecca77923638d3f94cc0783152b2f03Mark Andrews